我试图找出如何从 MySQL 5.0 中的表中获取以下约束信息:
- 首要的关键
- 外键和表引用
- 独特的列
这样做的查询或查询的语法是什么?我觉得我很接近这个,但没有例子。
对于 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)获取所有索引和引用表
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'
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]
价值观代替
你应该试试看。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]';