ПОКАЗАТЬ СОЗДАТЬ ТАБЛИЦУ
Синтаксис
SHOW CREATE TABLE tbl_name
Описание
Показывает оператор CREATE TABLE, который создал данную таблицу. Для выполнения оператора требуется право на выборку для таблицы. Этот оператор также работает с представлениями и последовательностями.
SHOW CREATE TABLE цитирует имена таблиц и столбцов в соответствии со значением системной переменной сервера sql_quote_show_create.
Определенные значения SQL_MODE могут привести к тому, что некоторые части исходного оператора CREATE не будут включены в вывод. Уникальные для MariaDB параметры таблиц, параметры столбцов и параметры индексов не включаются в вывод этого оператора, если используются флаги NO_TABLE_OPTIONS, NO_FIELD_OPTIONS и NO_KEY_OPTIONS SQL_MODE. Все уникальные для MariaDB атрибуты таблиц также не отображаются, когда используется режим эмуляции, не относящийся к MariaDB/MySQL, включая ANSI, DB2, POSTGRESQL, MSSQL, MAXDB или ORACLE.
Неверные параметры таблиц, столбцов и индексов обычно комментируются (обратите внимание, что создать таблицу с неверными параметрами можно, изменив таблицу другого движка, где эти параметры были допустимы). Чтобы их не комментировать, включите IGNORE_BAD_TABLE_OPTIONS SQL_MODE. Помните, что повторное выполнение оператора CREATE TABLE с нескомментированными неверными параметрами завершится ошибкой, если IGNORE_BAD_TABLE_OPTIONS SQL_MODE не активен.
Обратите внимание, что SHOW CREATE TABLE не предназначен для предоставления метаданных о таблице. Он предоставляет информацию о том, как была объявлена таблица, но фактическая структура таблицы может немного отличаться. Например, если индекс был объявлен как HASH, оператор CREATE TABLE возвращаемый SHOW CREATE TABLE, объявит этот индекс как HASH; однако, возможно, что индекс фактически является BTREE, потому что движок хранения не поддерживает HASH.
MariaDB позволяет использовать типы данных TEXT и BLOB с присвоенным значением по умолчанию DEFAULT. В результате, SHOW CREATE TABLE добавит DEFAULT NULL к допускающим NULL полям TEXT или BLOB, если не указано конкретное значение по умолчанию.
Числа больше не цитируются в DEFAULT предложении в SHOW CREATE операторе. До MariaDB 10.2.2, числа в MariaDB цитировались.
Порядок индексов
Индексы сортируются и отображаются в следующем порядке, который может отличаться от порядка оператора CREATE TABLE.
- PRIMARY KEY
- UNIQUE ключи, где все столбцы NOT NULL
- UNIQUE ключи, которые не содержат частичных сегментов
- Другие UNIQUE ключи
- LONG UNIQUE ключи
- Обычные ключи
- Полные текстовые ключи
См. sql/sql_table.cc для подробностей.
Примеры
SHOW CREATE TABLE t\G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE `t` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`s` char(60) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SHOW CREATE TABLE t\G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE t (
id int(11) NOT NULL AUTO_INCREMENT,
s char(60) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Нецитируемые числовые значения по умолчанию, начиная с MariaDB 10.2.2:
CREATE TABLE td (link TINYINT DEFAULT 1);
SHOW CREATE TABLE td\G
*************************** 1. row ***************************
Table: td
Create Table: CREATE TABLE `td` (
`link` tinyint(4) DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Цитируемые числовые значения по умолчанию, до MariaDB 10.2.1:
CREATE TABLE td (link TINYINT DEFAULT 1);
SHOW CREATE TABLE td\G
*************************** 1. row ***************************
Table: td
Create Table: CREATE TABLE `td` (
`link` tinyint(4) DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Воздействие SQL_MODE на вывод:
SELECT @@sql_mode;
+-------------------------------------------------------------------------------------------+
| @@sql_mode |
+-------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------+
CREATE TABLE `t1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`msg` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
;
SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`msg` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SET SQL_MODE=ORACLE;
SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE "t1" (
"id" int(11) NOT NULL,
"msg" varchar(100) DEFAULT NULL,
PRIMARY KEY ("id")
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/show-create-table/