Spec-Zone.ru › MariaDB

ПОКАЗАТЬ СОЗДАТЬ ТАБЛИЦУ

Синтаксис

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

Без sql_quote_show_create:

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")

См. также

  • ПОКАЗАТЬ СОЗДАТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ
  • ПОКАЗАТЬ СОЗДАТЬ ПРЕДСТАВЛЕНИЕ
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительной проверки MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают мнения MariaDB или любой другой стороны.

© 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API