Для строковых типов, кроме
ENUM
, значением по умолчанию является пустая стро-
ка. Для
ENUM
значение по умолчанию равно первой перечисляемой величине (если явно не
задано другое значение по умолчанию с помощью директивы
DEFAULT
).
Значения по умолчанию должны быть константами. Это означает, например, что не-
льзя установить для столбца ''даты'' в качестве значения по умолчанию величину функции,
такой как
NOW()
или
CURRENT_DATE
.
KEY
является синонимом для
INDEX
.
В MySQL ключ
UNIQUE
может иметь только различающиеся значения. При попыт-
ке добавить новую строку с ключом, совпадающим с существующей строкой, возникает
ошибка выполнения команды.
PRIMARY KEY
представляет
собой уникальный ключ
KEY
с дополнительным
ограничением, т.е. столбцы с данным ключом должны быть определены как
NOT NULL
. В
MySQL этот ключ называется
PRIMARY
(первичный). Таблица может иметь только один
первичный ключ
PRIMARY KEY
. Если
PRIMARY KEY
отсутствует в таблицах, а неко-
торое приложение запрашивает его, то MySQL может превратить в
PRIMARY KEY
пер-
вый ключ
UNIQUE
, не имеющий ни одного столбца
NULL
.
PRIMARY KEY
может быть многостолбцовым индексом. Однако нельзя создать
многостолбцовый индекс, используя в определении столбца атрибут ключа
PRIMARY
KEY
. Именно таким образом только один столбец будет отмечен как первичный. Необходи-
мо
использовать синтаксис
PRIMARY KEY(index_col_name, ...
).
Если ключ
PRIMARY
или
UNIQUE
состоит только из одного столбца и он принад-
лежит к числовому типу, то на него можно сослаться также, как на
_rowid
(новшество
версии 3.23.11).
Если индексу не назначено имя, то ему будет
присвоено первое имя в
index_col_name
, возможно, с суффиксами (
_2
,
_3
,
...
), делающими это имя уни-
кальным. Имена индексов для таблицы можно увидеть, используя
SHOW INDEX FROM
tbl_name
.
SHOW Syntax
.
С
помощью выражения
col_name(length)
можно указать индекс, для которо-
го используется только часть столбца
CHAR
или
VARCHAR
. Это поможет сделать файл
индексов намного меньше.
Индексацию
столбцов
BLOB
и
TEXT
поддерживают только таблицы с типом
MyISAM
. Назначая индекс столбцу с типом
BLOB
или
TEXT
, всегда НЕОБХОДИМО ука-
зывать длину этого индекса:
CREATE TABLE test (blob_col BLOB, INDEX(blob_col(10)));
В версии MySQL 3.23.23 и более поздних можно создавать также специальные ин-
дексы
FULLTEXT
. Они применяются для полнотекстового поиска. Эти индексы поддер-
живаются только таблицами типа
MyISAM,
и они могут быть созданы только из столбцов
VARCHAR
и
TEXT
. Индексирование всегда выполняется для всего столбца целиком, ча-
стичная индексация не поддерживается. Более подробно эта операция описана в разделе
MySQL section.
Выражения
FOREIGN KEY
,
CHECK
и
REFERENCES
фактически ничего не де-
лают. Они введены только из соображений совместимости, чтобы облегчить перенос кода с
других SQL-серверов и запускать приложения, создающие таблицы со ссылками.
Для каждого столбца
NULL
требуется один дополнительный бит, при этом величина
столбца округляется в большую сторону до ближайшего байта.
Максимальную длину записи в байтах можно вычислить следующим образом:
длина записи = 1+
+ (сумма длин столбцов)+
66
+ (количество столбцов с допустимым NULL + 7)/8+
+ (количество столбцов с динамической длинной).
Опции
table_options
и
SELECT
реализованы только в версиях MySQL 3.23
и выше. Ниже представлены различные типы таблиц:
Достарыңызбен бөлісу: