Получение метаданных таблицы в MySQL - PullRequest
13 голосов
/ 04 февраля 2009

Я пытаюсь выяснить, как получить следующую информацию об ограничениях из таблицы в MySQL 5.0:

  • первичный ключ
  • внешние ключи и ссылки на таблицы
  • уникальные столбцы

Каков синтаксис запроса или запросов для этого? У меня такое ощущение, что я близок с этим , но примера нет.

Ответы [ 5 ]

13 голосов
/ 26 декабря 2015

Для MySQL:

1) получить метаданные таблицы / полей

SELECT table_schema, table_name, column_name, ordinal_position, data_type, 
       numeric_precision, column_type, column_default, is_nullable, column_comment 
  FROM information_schema.columns 
  WHERE (table_schema='schema_name' and table_name = 'table_name')
  order by ordinal_position;

OR

show fields from 'table_name' 

2) получить ссылку на таблицу ключей Foregn

SELECT `REFERENCED_TABLE_NAME` 
   FROM `information_schema`.`KEY_COLUMN_USAGE`
   WHERE
       `TABLE_NAME` = 'table_name' AND
       `COLUMN_NAME` = 'Column_Name'

3) получить индексы (первичные и внешние) для таблицы

show keys from `table_name`

5) получить все индексы и ссылочную таблицу

SELECT *
  FROM `KEY_COLUMN_USAGE`
  WHERE
      `TABLE_NAME` = 'table_name' AND
      `TABLE_SCHEMA` = 'schema_name'

OR

SELECT *
  FROM `REFERENTIAL_CONSTRAINTS`
  WHERE
      `TABLE_NAME` = 'table_name' AND
      `CONSTRAINT_SCHEMA` = 'schema_name'

6) получить хранимые процедуры

SELECT * 
  FROM `ROUTINES`
  WHERE
     `ROUTINE_SCHEMA` = 'schema_name'

7) получить ТРИГГЕРС

SELECT * 
  FROM `TRIGGERS`
  WHERE 
     `TRIGGER_SCHEMA` = 'schema_name'

8) получить СОБЫТИЯ

SELECT * 
  FROM `EVENTS`
  WHERE 
     `EVENT_SCHEMA` = 'schema_name'

9) ПОЛУЧИТЬ ВИДЫ

SELECT *
  FROM `VIEWS`
  WHERE
      `TABLE_NAME` = 'table_name' AND
      `TABLE_SCHEMA` = 'schema_name'
9 голосов
/ 04 февраля 2009

Команда SHOW COLUMNS покажет вам первичный ключ и уникальные столбцы для таблицы.

Что касается внешних ключей, вы могли бы использовать что-то вроде команды SHOW CREATE TABLE , которая выведет операторы DDL, необходимые для репликации таблицы.

8 голосов
/ 16 сентября 2011

Использование

 show fields from table_name
 show keys from table_name

для получения первичных ключей, внешних ключей, уникальных и т. Д.

чтобы получить таблицу, на которую ссылается внешний ключ, используйте:

 SELECT `REFERENCED_TABLE_NAME` 
 FROM `information_schema`.`KEY_COLUMN_USAGE` 
 WHERE 
     `TABLE_NAME` = '[table_containing_foreign_key]' AND 
     `COLUMN_NAME` = '[foreign_key]'

заменяя [table_containing_foreign_key] и [foreign_key] вашими значениями

2 голосов
/ 04 февраля 2009

Тебе стоит попробовать и посмотреть. INFORMATION_SCHEMA является частью некоторого стандарта и поддерживается (в основном) аналогичным образом в других базах данных; этот стандарт должен быть задокументирован - вы можете найти этот документ.

Но главным способом было бы создать несколько тестовых таблиц, а затем взглянуть на INFORMATION_SCHEMA, чтобы увидеть, что там есть.

1 голос
/ 24 июля 2013

используйте следующее, чтобы получить то же самое с помощью Select Query:

SELECT table_schema, table_name, column_name, ordinal_position, data_type, numeric_precision, column_type FROM information_schema.columns WHERE table_name = '[TABLE_NAME]';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...