Ответ 1
Команда SHOW COLUMNS покажет вам первичный ключ и уникальные столбцы для таблицы.
Что касается внешних ключей, вы можете использовать что-то вроде команды SHOW CREATE TABLE, которая выведет операторы DDL для копирования таблицы.
Я пытаюсь выяснить, как получить следующую информацию ограничения из таблицы в MySQL 5.0:
Каков синтаксис запроса или запросов для этого? У меня такое чувство, что я близок к этому, но примера нет.
Команда SHOW COLUMNS покажет вам первичный ключ и уникальные столбцы для таблицы.
Что касается внешних ключей, вы можете использовать что-то вроде команды SHOW CREATE TABLE, которая выведет операторы DDL для копирования таблицы.
Используйте
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]
ваши значения
Для 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;
ИЛИ
show fields from 'table_name'
2) получить таблицу привязок Foregn Key
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'
ИЛИ
SELECT *
FROM `REFERENTIAL_CONSTRAINTS`
WHERE
`TABLE_NAME` = 'table_name' AND
`CONSTRAINT_SCHEMA` = 'schema_name'
6) получить ЗАПОМНЕННЫЕ ПРОЦЕДУРЫ
SELECT *
FROM `ROUTINES`
WHERE
`ROUTINE_SCHEMA` = 'schema_name'
7) получить TRIGGERS
SELECT *
FROM `TRIGGERS`
WHERE
`TRIGGER_SCHEMA` = 'schema_name'
8) получить СОБЫТИЯ
SELECT *
FROM `EVENTS`
WHERE
`EVENT_SCHEMA` = 'schema_name'
9) получить VIEWS
SELECT *
FROM `VIEWS`
WHERE
`TABLE_NAME` = 'table_name' AND
`TABLE_SCHEMA` = 'schema_name'
Вы должны попробовать и посмотреть. INFORMATION_SCHEMA является частью некоторого стандарта и поддерживается в (аналогичным образом) в других базах данных; этот стандарт должен быть документирован - вы можете найти этот документ.
Но главным образом, было бы создать кучу тестовых таблиц, а затем взглянуть на INFORMATION_SCHEMA, чтобы увидеть, что там.
используйте следующее, чтобы получить то же самое с помощью 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]';