15.7.7.12 Запрос SHOW CREATE TABLE
SHOW CREATE TABLE tbl_name
Показывает запрос CREATE TABLE, который создаёт указанную таблицу. Для использования этого запроса необходимо иметь соответствующие права на таблицу. Этот запрос также работает с представлениями.
mysql> SHOW CREATE TABLE t\G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE `t` (
`id` int NOT NULL AUTO_INCREMENT,
`s` char(60) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
SHOW CREATE TABLE отображает все CHECK ограничения в виде ограничений таблицы. То есть, ограничение, первоначально указанное в качестве части определения столбца, отображается как отдельный пункт, не являющийся частью определения столбца. Пример:
mysql> CREATE TABLE t1 (
i1 INT CHECK (i1 <> 0), -- column constraint
i2 INT,
CHECK (i2 > i1), -- table constraint
CHECK (i2 <> 0) NOT ENFORCED -- table constraint, not enforced
);
mysql> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`i1` int DEFAULT NULL,
`i2` int DEFAULT NULL,
CONSTRAINT `t1_chk_1` CHECK ((`i1` <> 0)),
CONSTRAINT `t1_chk_2` CHECK ((`i2` > `i1`)),
CONSTRAINT `t1_chk_3` CHECK ((`i2` <> 0)) /*!80016 NOT ENFORCED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
SHOW CREATE TABLE приводит имена таблиц и столбцов в соответствии со значением параметра sql_quote_show_create. См. Раздел 7.1.8, «Переменные системы сервера».
При изменении движка хранения таблицы, параметры таблицы, которые не применимы к новому движку хранения, сохраняются в определении таблицы для возможности возврата таблицы с ранее определёнными параметрами к исходному движку хранения, при необходимости. Например, при изменении движка хранения с InnoDB на MyISAM сохраняются параметры, специфичные для InnoDB, такие как ROW_FORMAT=COMPACT, как показано здесь:
mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY) ROW_FORMAT=COMPACT ENGINE=InnoDB;
mysql> ALTER TABLE t1 ENGINE=MyISAM;
mysql> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`c1` int NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT
При создании таблицы с отключённым CREATE TABLE t1 (c1 INT PRIMARY KEY) ROW_FORMAT=COMPACT ENGINE=InnoDB;, используется форма строки по умолчанию для движка хранения, если указанная форма строки не поддерживается. Фактическая форма строки таблицы сообщается в столбце Row_format в ответ на запрос SHOW TABLE
STATUS. SHOW CREATE
TABLE отображает формат строки, который был указан в запросе CREATE TABLE.
SHOW CREATE TABLE также включает определение сгенерированного невидимого первичного ключа таблицы, если таковой есть, по умолчанию. Вы можете подавить эту информацию в выводе запроса, установив show_gipk_in_create_table_and_information_schema
= OFF. Дополнительную информацию см. в Разделе 15.1.21.11, «Сгенерированные невидимые первичные ключи».
© 2025 Oracle
Licensed under the GPLv2 License.