Документация на MySQL

       

CREATE TABLE


СИНТАКСИС:

CREATE TABLE table_name (create_definition, ...)

Здесь create_definition имеет следующий формат:

create_definition: column_name type NOT NULL [DEFAULT default_value] [ PRIMARY KEY ] or column_name type [NULL] [ PRIMARY KEY ] or PRIMARY (KEY|INDEX) [key_name] ( column_name,... ) or (KEY|INDEX) [key_name] ( column_name[length],...) or INDEX [key_name] ( column_name[length],...) or UNIQUE (column_name[length],...) or FOREIGN (KEY|INDEX) [key_name] (column_name[length],...) REFERENCES table_name [ON DELETE (RESTRICT | CASCADE | SET NULL) ]

ОПИСАНИЕ:

В MySQL все поля имеют неявное значение по умолчанию, если объявлены, как не пустые (NOT NULL). Если вы не даете значения по умолчанию при использовании не пустого поля, оно будет назначено, исходя из типа поля.

Блок FOREIGN нужен только для совместимости. Ключевое слово REFERENCE тоже не выполняет в данной версии никаких действий.

Команда MySQL CREATE TABLE не поддерживает ключевое слово SQL CHECK.

Для создания таблицы Вы должны иметь права доступа create.

Замечания:

  • Номер столбца может иметь дополнительное ключевое слово AUTO_INCREMENT, чтобы автоматически получить номер = самый большой номер столбца + 1 для каждой вставки, в которой номер столбца = 0 или NULL. ТО ЕСТЬ, если Вы попробуете вставить значение ноля в числовой столбец, который имеет атрибут AUTO_INCREMENT, Вы получите номер столбца, который на 1 большим, чем самый большой предварительно использованный номер.

Если Вы желаете начать отсчет не с ноля, просто вставьте желательное стартовое значение в первой записи, которую Вы вставляете в данную таблицу. В настоящее время нет никакого другого способа достичь этого эффекта.

ВНИМАНИЕ:

Если Вы используете AUTO_INCREMENT, Вы можете использовать его только в одном поле таблицы. Обратите внимание также, что это поле должно быть объявлено как первичный ключ, и должно быть числовым.

  • ZEROFILL означает, что значение дополняется слева нулями до максимальной длины поля.

ПРИМЕР:

INT(5) ZEROFILL; значение 5 превращается в "00005"


  • Столбцы ключа и столбцы TIMESTAMP не могут быть пустыми. Для столбцов ключа атрибут NULL тихо удаляется.
  • Вы можете вставить NULL для полей типа TIMESTAMP и числовых полей с атрибутом AUTO_INCREMENT.
  • BLOB столбцы не мог быть ключами. Вы не можете группировать на BLOB. Однако, можно использовать строковые функции MySQL, чтобы группировать на подразделах BLOB.
  • Теперь можно использовать BLOB столбцы в предложении WHERE.
  • Удаленные записи находятся в связанном списке, и последующие вставки будут повторно использовать старые позиции.
  • Каждый столбец, который может принять значение NULL, берет 1 бит дополнительного пространства.
  • Если нет никаких VARCHAR столбцов, и BLOBs, то MySQL использует фиксированный формат записей. Вы можете ожидать существенно лучшую эффективность, в этом случае. Также не нужно оптимизировать ваши таблицы с помощью isamchk, когда используется фиксированный формат записи.
  • Если Вы используете записи переменной длины и делаете много модификаций, Вы должны выполнять время от времени 'isamchk -r table_name' на таблице, чтобы получить лучшее размещение. Попробуйте команду 'isamchk -ei table_name' для сбора статистики.
  • Максимальная длина записи может быть найдена так:
  • 1 + сумма длин столбцов + null_columns/8 + число столбцов переменной длины.
  • В некоторых случаях атрибуты могут тихо меняться после создания: VARCHAR столбцы с длиной 1 или 2 изменяется на CHAR. При использовании одних VARCHAR столбцов все CHAR столбцы более длинные, чем 2 изменяется на VARCHARS.
  • При INSERT/UPDATE все строки (CHAR и VARCHAR) приводятся к максимальной длине, заданной, CREATE. Все хвостовые пробелы автоматически удаляются.
  • Например, VARCHAR(10) задает, что столбец может содержать строки с длиной до 10 символов.
  • Что угодно/0 дает значение NULL.
  • REGEXP использует кодировку ISOLATIN1 при использовании функций символьного типа, подобно [[:ALPHA:]].



Содержание раздела