2010-02-17 2 views
2

Я работаю над назначением, где я должен найти все таблицы в information_schema из «пустой» базы данных. Я могу сделать это в MySQL или PostgreSQL. Я выбрал MySQL. Итак, я определил все таблицы:Невозможно найти данные таблицы в mysql information_schema

  1. CHARACTER_SETS
  2. Collations
  3. COLLATION_CHARACTER_SET_APPLICABILITY
  4. КОЛОННЫ
  5. COLUMN_PRIVILEGES
  6. INDEX_STATISTICS
  7. KEY_COLUMN_USAGE
  8. КАЛЁВОЧНЫЙ
  9. ROUTINES
  10. Schemata
  11. SCHEMA_PRIVILEGES
  12. СТАТИСТИКА
  13. ТАБЛИЦЫ
  14. TABLE_CONSTRAINTS
  15. TABLE_PRIVILEGES
  16. TABLE_STATISTICS
  17. ТРИГГЕРЫ
  18. USER_PRIVILEGES
  19. ПРОСМОТРЫ

Теперь я должен найти информацию об этих таблицах. Например, определения первичных ключей, столбцы таблицы, внешние ключи, действия триггера и т. Д.

Проблема, с которой я столкнулась, заключается в том, что ни одна из этих таблиц не содержит никаких первичных ключей или внешних ключей или ограничений и т. Д.

Я неверно истолковал? Или можно найти эту информацию где угодно? Буду признателен за любую помощь.

ответ

0

Вы пробовали команду DESCRIBE table;?

Если есть первичный ключ, вы увидите ...

+-------+--------------+------+-----+---------+----------------+ 
| Field | Type   | Null | Key | Default | Extra   | 
+-------+--------------+------+-----+---------+----------------+ 
| id | int(11)  | NO | PRI | NULL | auto_increment | 
| name | varchar(128) | NO |  | NULL |    | 
+-------+--------------+------+-----+---------+----------------+ 
+0

Я просто попытался это, и все поля «Ключ» для каждой таблицы пустые ... – littleK

+0

Тогда нет первичного ключа. Это не очень хорошая идея, но это возможно. – Pace

1

Вы должны смотреть в table_constraints.

SELECT `table_name`, `constraint_name`, `constraint_type` 
FROM `information_schema`.`table_constraints` 
WHERE `table_schema` = 'yourdbname'; 

Это даст вам имена и типы ограничений. Если вам нужна более подробная информация, вам необходимо присоединиться к key_column_usage.

SELECT c.`table_schema`, c.`table_name`, c.`constraint_name`, 
c.`constraint_type`, GROUP_CONCAT(k.`column_name` ORDER BY `ordinal_position`) AS 'constraint columns', 
CONCAT(k.`referenced_table_name`, '(', GROUP_CONCAT(`referenced_column_name` ORDER BY `position_in_unique_constraint`),')') AS 'references' 
FROM `information_schema`.`table_constraints` c 
JOIN `information_schema`.`key_column_usage` k USING (`constraint_name`, `table_name`) 
WHERE c.`table_schema` = 'yourdbname' 
GROUP BY `table_schema`,`table_name`,`constraint_name`,`constraint_type`,`referenced_table_name`; 
Смежные вопросы