2009-02-04 3 views
12

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

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

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

ответ

9

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

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

+0

SHOW COLUMNS не показывает УНИКАЛЬНОЕ ограничение из того, что я могу сказать (только первичные и внешние ключи), но я могу использовать SHOW CREATE TABLE, если мне нужно.Я просто искал способ специально изолировать ограничения, не возвращая другую информацию. – VirtuosiMedia

+0

вы можете получить уникальную информацию от SHOW INDEX FROM table_name – enobrev

+1

Проверьте ссылку, которую я разместил. В подзаголовке с подробным описанием «ключевого» столбца говорится, что это могут быть либо «PRI», «UNI», «MUL», либо пустые. «UNI» указывает на уникальное поле. – fluffels

2

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

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

+0

Проблема заключается в том, что не существует пример синтаксиса запросов, хотя. Это все, что мне действительно нужно. В других разделах главы INFORMATION_SCHEMA есть примеры синтаксиса, но этого нет. – VirtuosiMedia

+0

@MarkR: Вы могли бы сослаться на это: http://www.xcdsql.org/MySQL/information_schema/5.1/MySQL_5_1_INFORMATION_SCHEMA.html –

8

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

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] с вашими значениями

1

использовать следующий, чтобы получить тот же с помощью 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]'; 
9

Для 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) получить ключи ссылаются откладывать это на потом таблице

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) получить все индексы и referreced таблицы

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) получают Триггеры

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' 
Смежные вопросы