В этом учебном пособии вы узнаете, как использовать MySQL оператор CREATE TABLE с синтаксисом и примерами.
Описание
MySQL оператор CREATE TABLE позволяет создавать и определять таблицу.
Синтаксис
Простая форма синтаксиса оператора CREATE TABLE в MySQL:
(
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...
);
Полный синтаксис оператора MySQL CREATE TABLE:
CREATE [ TEMPORARY ] TABLE [IF NOT EXISTS] table_name
(
column1 datatype [ NULL | NOT NULL ]
[ DEFAULT default_value ]
[ AUTO_INCREMENT ]
[ UNIQUE KEY | PRIMARY KEY ]
[ COMMENT 'string' ],
column2 datatype [ NULL | NOT NULL ]
[ DEFAULT default_value ]
[ AUTO_INCREMENT ]
[ UNIQUE KEY | PRIMARY KEY ]
[ COMMENT 'string' ],
...
| [CONSTRAINT [constraint_name]] PRIMARY KEY [ USING BTREE | HASH ] (index_col_name, ...)
| [INDEX | KEY] index_name [ USING BTREE | HASH ] (index_col_name, ...)
| [CONSTRAINT [constraint_name]] UNIQUE [ INDEX | KEY ]
[ index_name ] [ USING BTREE | HASH ] (index_col_name, ...)
| {FULLTEXT | SPATIAL} [ INDEX | KEY] index_name (index_col_name, ...)
| [CONSTRAINT [constraint_name]]
FOREIGN KEY index_name (index_col_name, ...)
REFERENCES another_table_name (index_col_name, ...)
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE { RESTRICT | CASCADE | SET NULL | NO ACTION } ]
[ ON UPDATE { RESTRICT | CASCADE | SET NULL | NO ACTION } ]
| CHECK (expression)
{ENGINE | TYPE} = engine_name
| AUTO_INCREMENT = value
| AVG_ROW_LENGTH = value
| [DEFAULT] CHARACTER SET = charset_name
| CHECKSUM = {0 | 1}
| [DEFAULT] COLLATE = collation_name
| COMMENT = 'string'
| DATA DIRECTORY = 'absolute path'
| DELAY_KEY_WRITE = { 0 | 1 }
| INDEX DIRECTORY = 'absolute path'
| INSERT_METHOD = { NO | FIRST | LAST }
| MAX_ROWS = value
| MIN_ROWS = value
| PACK_KEYS = {0 | 1 | DEFAULT}
| PASSWORD = 'string'
| RAID_TYPE = { 1 | STRIPED | RAIDO }
RAID_CHUNKS = value
RAID_CHUNKSIZE = value
| ROW_FORMAT = {DEFAULT | DYNAMIC | FIXED | COMPRESSED}
| UNION = (table1, ... )
);
Параметры или аргументы
TEMPORARY - необязательный. Он указывает, что таблица является временной таблицей.
IF NOT EXISTS - необязательный. Если указано, оператор CREATE TABLE не приведет к возникновению ошибки, если таблицы уже существуют.
table_name - имя таблицы, которую вы хотите создать.
column1, column2 - столбцы, которые вы хотите создать в таблице.
datatype - тип данных для столбца и может быть одним из следующих:
Значение |
---|
CHAR [ (length) ] [ CHARACTER SET charset_name ] [ COLLATE collation_name ] |
VARCHAR [ (length) ] [ CHARACTER SET charset_name ] [ COLLATE collation_name ] |
BINARY [ (length) ] |
VARBINARY (length) |
DATE |
TIME |
TIMESTAMP |
DATETIME |
YEAR |
TINYINT [ (length) ] [ UNSIGNED ] [ ZEROFILL ] |
SMALLINT [ (length) ] [ UNSIGNED ] [ ZEROFILL ] |
MEDIUMINT [ (length) ] [ UNSIGNED ] [ ZEROFILL ] |
INT [ (length) ] [ UNSIGNED ] [ ZEROFILL ] |
INTEGER [ (length) ] [ UNSIGNED ] [ ZEROFILL ] |
BIGINT [ (length) ] [ UNSIGNED ] [ ZEROFILL ] |
REAL [ (length, decimals) ] [ UNSIGNED ] [ ZEROFILL ] |
DOUBLE [ (length, decimals) ] [ UNSIGNED ] [ ZEROFILL ] |
FLOAT [ (length, decimals) ] [ UNSIGNED ] [ ZEROFILL ] |
DECIMAL [ (length, [ decimals ]) ] [ UNSIGNED ] [ ZEROFILL ] |
NUMERIC [ (length, [ decimals ]) ] [ UNSIGNED ] [ ZEROFILL ] |
TINYBLOB |
BLOB |
MEDIUMBLOB |
LONGBLOB |
TINYTEXT [ BINARY ] [ CHARACTER SET charset_name ] [ COLLATE collation_name ] |
TEXT [ BINARY ] [ CHARACTER SET charset_name ] [ COLLATE collation_name ] |
MEDIUMTEXT [ BINARY ] [ CHARACTER SET charset_name ] [ COLLATE collation_name ] |
LONGTEXT [ BINARY ] [ CHARACTER SET charset_name ] [ COLLATE collation_name ] |
ENUM(value1, value2, ...) [ CHARACTER SET charset_name ] [ COLLATE collation_name ] |
NULL или NOT NULL - каждый столбец должен быть определен как NULL или NOT NULL. Если этот параметр опущен, база данных предполагает значение NULL по умолчанию.
DEFAULT default_value - необязательный. Это значение присваивается столбцу, если он оставлен пустым или NULL.
AUTO_INCREMENT - необязательный. Он устанавливает столбец как поле с автонумерацией.
constraint_name - необязательный. Имя ограничения, если вы определяете первичный ключ, уникальное ограничение или внешний ключ.
index_col_name - необязательный. Это следующий синтаксис:
Примечание
- В таблице может быть только один столбец, который устанавливается как AUTO_INCREMENT, и этот столбец должен быть первичным ключом.
Пример
Рассмотрим MySQL пример CREATE TABLE.
1 2 3 4 5 6 7 |
CREATE TABLE contacts ( contact_id INT(11) NOT NULL AUTO_INCREMENT, last_name VARCHAR(30) NOT NULL, first_name VARCHAR(25), birthday DATE, CONSTRAINT contacts_pk PRIMARY KEY (contact_id) ); |
Этот пример MySQL CREATE TABLE создает таблицу с именами contacts, которая имеет 4 столбца и один первичный ключ:
- Первый столбец называется contact_id, который создается как тип данных INT (максимальная длина 11 цифр в) и не может содержать значения NULL. Он устанавливается как поле AUTO_INCREMENT, что означает, что это поле с автонумерацией (начинается с 1 и увеличивается на 1, если не указано иное).
- Второй столбец называется last_name, который является типом данных VARCHAR (максимум 30 символов) и не может содержать значения NULL.
- Третий столбец называется first_name, который является типом VARCHAR (максимум 25 символов в длину) и может содержать значения NULL.
- Четвертый столбец называется birthday, который является типом данных DATE и может содержать значения NULL.
- Первичный ключ называется contacts_pk и устанавливается в столбец contact_id.
Далее, давайте создадим таблицу с DEFAULT VALUE.
1 2 3 4 5 6 |
CREATE TABLE suppliers ( supplier_id INT(11) NOT NULL AUTO_INCREMENT, supplier_name VARCHAR(50) NOT NULL, account_rep VARCHAR(30) NOT NULL DEFAULT 'TBD', CONSTRAINT suppliers_pk PRIMARY KEY (supplier_id) ); |
Этот MySQL пример CREATE TABLE создает таблицу с именем suppliers, которая имеет 3 столбца и один первичный ключ:
- Первый столбец называется supplier_id, который создается как тип данных INT (максимальная длина 11 цифр) и не может содержать значений NULL. Он устанавливается как поле AUTO_INCREMENT.
- Второй столбец называется supplier_name, который является типом данных VARCHAR (максимальная длина 50 символов) и не может содержать значений NULL.
- Третий столбец называется account_rep, который является типом данных VARCHAR (максимальная длина 30 символов) и не может содержать значений NULL. Если для этого столбца значение не указано, то значение DEFAULT VALUE будет «TBD».
- Первичный ключ называется suppliers_pk и устанавливается в столбец supplier_id.