Таблица COLUMNS схемы информации
Таблица схемы информации COLUMNS предоставляет информацию о столбцах каждой таблицы на сервере.
Она содержит следующие столбцы:
| Столбец | Описание |
|---|---|
TABLE_CATALOG |
Всегда содержит строку 'def'. |
TABLE_SCHEMA |
Имя базы данных. |
TABLE_NAME |
Имя таблицы. |
COLUMN_NAME |
Имя столбца. |
ORDINAL_POSITION |
Позиция столбца в таблице. Может использоваться для сортировки. |
COLUMN_DEFAULT |
Значение по умолчанию для столбца. Литералы заключены в кавычки, чтобы отличить их от выражений. NULL означает, что у столбца нет значения по умолчанию. В MariaDB 10.2.6 и ранее кавычки не использовались для значений по умолчанию, и NULL может означать, что значения по умолчанию нет или что значение столбца по умолчанию NULL. |
IS_NULLABLE |
Может ли столбец содержать NULL. |
DATA_TYPE |
Тип данных столбца. |
CHARACTER_MAXIMUM_LENGTH |
Максимальная длина. |
CHARACTER_OCTET_LENGTH |
То же, что и CHARACTER_MAXIMUM_LENGTH за исключением многобайтовых кодировок символов. |
NUMERIC_PRECISION |
Для числовых типов - точность (количество значащих цифр) столбца. NULL если это не числовое поле. |
NUMERIC_SCALE |
Для числовых типов - масштаб (значащие цифры справа от десятичной точки). NULL, если это не числовое поле. |
DATETIME_PRECISION |
Точность дробной части секунды или NULL если это не тип данных времени. |
CHARACTER_SET_NAME |
Кодировка символов, если это не двоичный строковый тип данных, в противном случае NULL. |
COLLATION_NAME |
Сортировка, если это не двоичный строковый тип данных, в противном случае NULL. |
COLUMN_TYPE |
Определение столбца, расширение MySQL и MariaDB. |
COLUMN_KEY |
Тип индекса. PRI для первичного ключа, UNI для уникального индекса, MUL для составного индекса. Расширение MySQL и MariaDB. |
EXTRA |
Дополнительная информация о столбце, например, является ли столбец скрытым или WITHOUT SYSTEM VERSIONING если таблица не является таблицей с системой версий. Расширение MySQL и MariaDB. |
PRIVILEGES |
Какие привилегии у вас есть для столбца. Расширение MySQL и MariaDB. |
COLUMN_COMMENT |
Комментарии к столбцу. |
IS_GENERATED |
Указывает, является ли значение столбца сгенерированным (виртуальным или вычисляемым). Может быть ALWAYS или NEVER. |
GENERATION_EXPRESSION |
Выражение, используемое для вычисления значения столбца в сгенерированном (виртуальном или вычисляемом) столбце. |
Она предоставляет информацию, аналогичную, но более полную, чем SHOW COLUMNS и mariadb-show.
Примеры
SELECT * FROM information_schema.COLUMNS\G
...
*************************** 9. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: t2
COLUMN_NAME: j
ORDINAL_POSITION: 1
COLUMN_DEFAULT: NULL
IS_NULLABLE: YES
DATA_TYPE: longtext
CHARACTER_MAXIMUM_LENGTH: 4294967295
CHARACTER_OCTET_LENGTH: 4294967295
NUMERIC_PRECISION: NULL
NUMERIC_SCALE: NULL
DATETIME_PRECISION: NULL
CHARACTER_SET_NAME: utf8mb4
COLLATION_NAME: utf8mb4_bin
COLUMN_TYPE: longtext
COLUMN_KEY:
EXTRA:
PRIVILEGES: select,insert,update,references
COLUMN_COMMENT:
IS_GENERATED: NEVER
GENERATION_EXPRESSION: NULL
...
CREATE TABLE t (
s1 VARCHAR(20) DEFAULT 'ABC',
s2 VARCHAR(20) DEFAULT (concat('A','B')),
s3 VARCHAR(20) DEFAULT ("concat('A','B')"),
s4 VARCHAR(20),
s5 VARCHAR(20) DEFAULT NULL,
s6 VARCHAR(20) NOT NULL,
s7 VARCHAR(20) DEFAULT 'NULL' NULL,
s8 VARCHAR(20) DEFAULT 'NULL' NOT NULL
);
SELECT
table_name,
column_name,
ordinal_position,
column_default,
column_default IS NULL
FROM information_schema.COLUMNS
WHERE table_schema=DATABASE()
AND TABLE_NAME='t';
Из MariaDB 10.2.7:
+------------+-------------+------------------+-----------------------+------------------------+
| table_name | column_name | ordinal_position | column_default | column_default IS NULL |
+------------+-------------+------------------+-----------------------+------------------------+
| t | s1 | 1 | 'ABC' | 0 |
| t | s2 | 2 | concat('A','B') | 0 |
| t | s3 | 3 | 'concat(''A'',''B'')' | 0 |
| t | s4 | 4 | NULL | 0 |
| t | s5 | 5 | NULL | 0 |
| t | s6 | 6 | NULL | 1 |
| t | s7 | 7 | 'NULL' | 0 |
| t | s8 | 8 | 'NULL' | 0 |
+------------+-------------+------------------+-----------------------+------------------------+
В приведенных выше результатах две одинарные кавычки в concat(''A'',''B'') указывают на экранированную одинарную кавычку — см. строковые литералы. Обратите внимание, что хотя mysql-command-line-client по-видимому отображает то же значение по умолчанию для столбцов s5 и s6, первое является 4-символьной строкой "NULL", а второе — значение SQL NULL.
MariaDB 10.2.6 и ранее:
+------------+-------------+------------------+-----------------+------------------------+
| table_name | column_name | ordinal_position | column_default | column_default IS NULL |
+------------+-------------+------------------+-----------------+------------------------+
| t | s1 | 1 | ABC | 0 |
| t | s2 | 2 | concat('A','B') | 0 |
| t | s3 | 3 | concat('A','B') | 0 |
| t | s4 | 4 | NULL | 1 |
| t | s5 | 5 | NULL | 1 |
| t | s6 | 6 | NULL | 1 |
| t | s7 | 7 | NULL | 0 |
| t | s8 | 8 | NULL | 0 |
+------------+-------------+------------------+-----------------+------------------------+
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/information-schema-columns-table/