Шаг 11. Краткий справочник по MySQL. Типы данных
Прежде чем продолжать разрабатывать наше творение я приведу краткую справку по MySQL, а точнее, коротко опишу типы данных mysql, функции и особенности sql-запросов. Сам sql, я думаю, Вы знаете (если это не так - то к вашим услугам раздел "SQL by step" на "Первых шагах"! ;)
Я не буду описывать подробно все изобилие типов MySQL. Я уверен, что это лишнее. Дело в том, что в mysql-е числовые и текстовые группы типов очень многочисленны. Отличаются типы в этих группах размером в байтах и возможными модификаторами. Подробности можно посмотреть в мануале в директории Docs каталога с mysql-ем в разделе "7.3 Column types". Там и английский знать особо не нужно - смотрите на название и цифры длины! ;)
Здесь я сделаю обзор самих групп типов данных - для быстрого введение.
MySQL поддерживает следующие типы/группы типов данных:
- Числовые. Возможные модификаторы: UNSIGNED для объявления беззнаковости, ZEROFILL для заполнения лидирующих пробелов нулями (имеется в виду внешний вид при выводе). Могут быть созданы как целые (TINYINT, SMALLINT, INT, BIGINT и пр.), так и числа с плавающей точкой (FLOAT, DOUBLE, REAL и пр.).
- Строковые. Возможные модификаторы: BINARY для объявления поля как бинарного (любые коды хранимых символов), NATIONAL - модификатор по умолчанию, - использование набора символов для сортировки, сравнения и пр. Занятный модификатор. Отвечает за конструкцию SET-группы: SET CHARACTER SET character_set_name | DEFAULT, где character_set_name может принимать значение cp1251_koi8.
Однако эти установки выставлены по умолчанию. Выходит, без модификатора результат тот же, что и с ним. Я так понял, что эти фишки для будущего использования. Модификатор для типа CHAR VARYING создает строковое поле переменной длины.
- BLOB-поля - поля для хранения двоичных данных.
Типы данных, не попавшие в предыдущие три группы:
- TIMESTAMP - поле хранит дату и время последнего изменения записи. Это значит, что, добавив в таблицу поле типа TIMESTAMP (например, воспользовавшись конструкцией ALTER TABLE table_name ADD COLUMN column_name TIMESTAMP), Вы, не производя никаких изменений поля типа TIMESTAMP, будете в нем иметь время последней операции с записью, влияющей на содержимое строки таблицы.
- DATE, TIME, DATETIME - поля хранения даты, времени, и того, и другого. Тут, я думаю все ясно.
- YEAR - поле, добавленное в версии 3.22, - для хранения года в интервале с 1901 по 2155.
- ENUM - поле, хранящее одно из значений, указанных в списке при создании (модификации структуры) таблицы, например, ALTER TABLE tab_name ADD COLUMN col_enum ENUM('Ага', 'Угу', 'Ну его нафиг'). Теперь поместить в поле col_enum одно из перечисленных значений можно так:
INSERT INTO tab_name SET col_enum='Ага'
|
или
UPDATE tab_name SET col_enum=3
|
В последнем случае в col_enum будет значение 'Ну его нафиг'. Присвоение полю значения не из списка (например, col_enum=7 или col_enum='format c:') запишет в поле пустую строку (даже не 'NULL').
- тип SET в отличии от типа ENUM предназначен для хранения списка значений, например,
ALTER TABLE tab_name ADD COLUMN col_set SET ('один','два','три','четыре')
|
Теперь изменим значение поля:
UPDATE tab_name SET col_set='один' WHERE поле=значение
|
После такого запроса col_set будет содержать значение 'один'.
UPDATE tab_name SET col_set=15
|
Здесь col_set содержит значение 'один,два,три,четыре'. Да, именно строку с set-значениями, разделенными запятыми. Цифра 15 - это двоичное 1111. Каждый бит отвечает за свое значение в списке. Например: 1 - 'del', 10 - 'file1.txt', 11 - 'del,file1.txt' и т.д. Как и в случае с ENUM установка недопустимого значения записывает в поле пустую строку.
В следующем шаге - краткий обзор функций MySQL, используемых в SELECT-запросах и в условиях WHERE. Подробностями самого SELECT-а мы займемся несколько позже, когда в целом реализуем первый проект - книжную базу.
|