Как видно из примера, после типа столбца указано ключевое слово DEFAULT. Оно позволяет задать значение поля по умолчанию, так для поля num1 значение по умолчанию выбрано 0, а для num2 — 1.0. Ключевое слово DEFAULT является не обязательным и может не указываться.
Строковые данные
Для строковых типов данныхмаксимальный размер и требования к памяти приведены в таблице. Здесь L — длина хранимой в ячейке строки, а байты приплюсованные к L, накладные расходы для хранения длины строки.
Таблица. Строковые типы данных
Тип
Объем памяти
Максимальный размер
CHAR(M)
M символов
M символов
VARCHAR(M)
L+1 символов
M символов
TINYBLOB, TINYTEXT
L+1 символов
28-1 символов
BLOB, TEXT
L+2 символов
216-1 символов
MEDIUMBLOB, MEDIUMTEXT
L+3 символов
224-1 символов
LONGBLOB, LONGTEXT
L+4 символов
232-1 символов
ENUM('value1', 'value2', ...)
1 или 2 байта
65535 элементов
SET('value1', 'value2', ...)
1, 2, 3, 4 или 8 байт
64 элемента
Тип CHAR позволяет хранить строку фиксированной длины М, его дополняет тип VARCHAR, позволяющий хранить переменные строки длиной L. Значение М может принимать значения от 0 до 65535.
Примечание. До версии MySQL 5.0.3 значение М для типов CHAR и VARCHAR могло принимать значения только от 0 до 255.
При выборе строкового типа данных для столбца следует принимать во внимание, что для переменных строкVARCHAR требуется количество символов, равное длине строки плюс один байт, в то время как тип CHAR(М), независимо от длины строки, использует для ее хранения все М символы. В то же время тип CHARобрабатывается эффективней переменных типов, т.к. всегда заранее известно, где заканчивается очередной блок данных. Сравнение типов CHAR и VARCHAR приведено в таблице.
Таблица. Сравнение типов CHAR и VARCHAR
Значение
CHAR(4)
VARCHAR(4)
представление
число байт
представление
число байт
' '
' '
4 байта
' '
1 байт
'ab'
' ab'
4 байта
'ab'
3 байта
'abcd'
'abcd'
4 байта
'abcd'
5 байт
'abcefgh'
'abcd'
4 байта
'abcd'
5 байт
При создании таблицы нельзя смешивать столбцы типа CHAR и VARCHAR. Если такое происходит, СУБД MySQL изменит тип столбцов согласно правилу: в случае, когда в таблице присутствует хоть один столбец переменной длины, все столбцы типа CHAR приводятся к типу VARCHAR.
Типы BLOB и TEXT в СУБД MySQL во всем аналогичны и отличаются только в деталях. Например, при выполнении операций над столбцами типа TEXT кодировка учитывается, а для столбцов типа BLOB — нет.
Тип TEXT обычно используется для хранения больших объемов текста, в то время как BLOB — для больших двоичных объектов, таких как электронные документы, изображения, звуки и т.д.
К особым типам данных относятся ENUM и SET. Строки этих типов принимают значения из заранее заданного списка допустимых значений. Основное различие между ними заключается в том, что значение типа ENUMдолжно содержать точно один элемент из указанного множества, тогда как столбцы SET могут содержать любой набор элементов одновременно. Так, ячейки столбца, для которого объявлен тип данных ENUM('y', 'n'), могут принимать только два значения: либо 'y', либо 'n'. Ячейки столбца с типом данных SET с тем же набором допустимых значений могут принимать значения ('y', 'n'), ('y'), ('n') и пустое множество(), где пустое множество означает, что не выбран ни один из элементов.
Типы ENUM и SET можно назвать строковыми лишь отчасти, так как при объявлении они задаются списком строк, но во внутреннем представлении базы данных элементы множеств сохраняются в виде чисел.
Элементы типа ENUM нумеруются последовательно, начмная с 1. В зависимости от количества элементо, в в списке под хранение ячеек столбца может отводиться 1 байт (до 256 элементов) или 2 байта (от 257 до 65536).
Элементы множества SET обрабатываются как биты, размер типа при этом также определяется количеством элементов в списке: 1 байт (от 1 до 8 элементов), 2 байта (от 9 до 16), 3 байта (от17 до 24), 4 байта (от 25 до 32) или 8 байт (от 33 до 64).
Cоздание и удаление таблиц MySQL
Cоздание таблиц MySQL
Команда CREATE TABLE создает новую таблицу в выбранной базе данных. В простейшем случае команда имеет следующий синтаксис:
Здесь table_name — имя создаваемой таблицы; create_definition — объявление столбца, его типов и атрибутов. В конце оператора может следовать необязательное указание типа таблицы table_options, например, TYPE = MyISAM.
Создадим таблицу базы данных forum, которая называется authors и содержит различные данные о зарегистрированных посетителях форума:
· имя (name);
· пароль (passw);
· e-mail (email);
· web-адрес сайта посетителя (url);
· номер ICQ (isq);
· сведения о посетителе (about);
· строку, содержащую путь к файлу фотографии посетителя (photo);
· время добавления запроса (last_time);
· счетчик сообщений, оставленных посетителем на форуме (themes);
· статус посетителя — является ли он модератором, администратором или обычным посетителем (statussuser);
· кроме перечисленных полей в таблице имеется поле id_author, являющееся первичным ключем таблицы.