|
Программирование >> Создание клиентов mysql
Значения даты/времени Значения даты/времени В MySQL поддерживаются пять типо мбцов, хранящих информацию о дате/времени (табл. 11.6). Чаще всего применяются типы DATETIME ТАМР. Для всех типов значение 0 является допустимым. DATE DATETIME TIME TIMESTAMP YEAR Диапазон значений 1000-01-01-9999-12-31 1000-01-01 00:00:00 - 9999-12-31 23:59:59 -838:59:59 - 838:59:59 1970-01-01 00:00:00 - 2037-12-31 23:59:59 1970-2069 или 1901-2155 Значения даты/времени вполне можно хранить в целочисленных или строковых столбцах, но лишь благодаря специальным типам данных появляется возможность эффективно манипулировать этими значениями. Например, поддерживается операция сложения дат, что продемонстрировано в листинга И.5. Для управления такими столбцами на уровне строк или чисел потребовалось бы писать специальные программы. Значения даты/времени могут присутствовать в предложении ORDER BY и их можно сравнивать друг с другом. mysql> CREATE TABLE testtime ( -> ts TIMESTAMP, -> dt DATETIME, -> d DATE, -> t TIME, -> у YEAR(2) -> ) ; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO testtime (dt, d, t, y) -> VALUES (1989-10-17 17:04:13, 19970322, -> 40:15:00, 95); Query OK, 1 row affected (0.01 sec) mysql> SELECT * FROM testtime \G **************************** 1. row ***************************** ts dt d t У 20010418111943 1989-10-17 17:04:13 1997-03-22 10:15:00 1 row in set (0.01 sec) mysql> UPDATE testtime SET у = NOW () , -> dt = dt + INTERVAL 15 MONTH; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 1 mysql> SELECT * FROM testtime \G ******************************* -y row + + + + * ts: 20010418111957 dt: 1991-01-17 17:04:13 1997-03-22 10:15:00 01 1 row in set (0.00 sec) Значения данного типа являются составными, представляющими собой набор целочисленных значений. У каждого компонента свой диапазон. Например, номер месяца должен находиться в интервале от 1 до 12, номер дня - от 1 до 3н,омер часа - от 0 до 23, а число минут и секунд может меняться от 0 до 59. MySQLне проверяет осмысленность таких дат, как, например, 31 февраля. Разработчики MySQL справедливо полагают, что подобные проверки должны осуществляться не в СУБД, а в прикладных программах. Допускаются неполные даты наподобие 197000-00. Эт тачает, что дата относится к 1970 году, но месяц и день неизвестны. Форматы, указанные в табл И.6, используются при выводе значений на экран. Вводимые данные могут быть представлены по-другому, в строковом или числовом виде. Предполагается, что дата записывается как набор целых чисел в следующем порядке: год, месяц, день, час, минуты, секунды. Номер года может состоять из двух или четырех цифр. Поля года, месяца и дня являются обязательными. Отсутствующие поля времени заполняются нулями. Значение даты, записанное в числовом виде, представляет собой цепочку цифр. Дробная часть числа отбрасывается. В строковом представлении компоненты разделяются знаками пунктуации. Это может быть любой печатный символ кроме буквы и числа. Между номером дня и часа может стоять пробел, но между всеми остальными компонентами пробелы недопустимы. Неправильные даты обнуляются. К двухсим-номерам года в диапазоне добавляется значение 2000, а к номерам в диапазон 99 добавляется 1900. Спецификация типо TIME, DATE и TIME не поддерживает понятия размерности. Значения этих типов всегда содержат определенное количество информации. Столбцы типа YEAR могут иметь размерность 2 или 4. Столбцы типа TIMESTAMP по умолчанию имеют размерность 14. Допускаются также размерности 12, 8и6. Нечетное число преобразуется в ближайшее большее четное. Размерность определяет, какая часть спецификации даты/времени должна отображаться в результатах запроса. Реальные значения столбца всегда хранят полную спецификацию. Необычный диапазон значений столбца ТAMP объясняется тем, что в UNIX время измеряется ввиде количества секунд, прошедших с начала так называемой эпохи (1 январе г.). Это значение хранится в виде четырехбайтового целого числа. Тип Описание INDEX, KEY Обычный индекс UNIQUE Индекс, накладывающий на столбец ограничение уникальности PRIMARY KEY Индекс, используемый для идентификации записей FULLTEXT Индекс, используемый для поиска больших дв оичных объектов Индексы используются при выполнении операций объединения. Обычный индекс может быть создан дя любого столбца, даже такого, в котором есть повторяющиеся или пустые значения. Индекс типа UNIQUE содержит как указатели, так и ограничения на значения столбца. Он определяет ключ-кандидат, описанный в главе 5, Реляционная модель . Каждое значение такого индекса уникальным образом идентифицирует строку таблицы. Первичный ключ - это уникальный индекс, выбранный для идентификации записей. У таблицы может быть много уникальных индексов и лишь один первичный ключ. В случае строковых столбцов можно создать индекс по нескольким первым символам. Иногда это приводит к существенному ускорению поиска. Столбцы типа BLOB или TEXTдопускают лишь такой способ индексации. Максимальная размерность индекса при этом составляет 1024 символа. Индекс типа FULLTEXT применяется дл оиска слов в больших двоичных объектах. Этот индекс содержит показатели релевантности поиска, находящиеся в диапазоне от 0,0 до 1,0. Все слова в индексируемом тексте разделяются пробелами. Количество появлений слова в тексте определяет вес этого слова, причем слова, встречающиеся чаще, имеют более низкую релевантность. Слова, состоящие не более чем из трех символов, а также слова, встречающиеся в более чем половине строк, отбрасываются и считаются нерелевантными. Индексы типа FULLTEXT предназначены дя относительно крупных столбцов. Вероятно, их применение не даст полезных результатов, если индексом охвачено менее ЮООООслов. В MySQL версии 4.1 флаг UNIQUE будет задавать режим, в котором на столбец накладывается ограничение уникальности, но индекс не строится. Будет также улучшена производительность индексов типаFULLTEXT.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |