sql 语句系列(列举系列)[八百章之第八章]

前言

这一张就是就是查询自己设计数据库的结构,对于接收一个老的项目相当重要。

列举模式中的表

查询所以表

select table_name
from INFORMATION_SCHEMA.TABLES

有时候需要查询某个管理者管理了那些表可以:

where TABLE_SCHEMA='SMEAGOL'

列举模式中的表

上面的是查表,下面的是查表的列

select COLUMN_NAME,DATA_TYPE,ordinal_position
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'emp'

ordinal_position 因为意思就是编号,相当有用的,比如数据迁移。

列举索引列

查询某个表的索引:

select a.name table_name,b.name index_name,d.name column_nmae,c.index_column_id
from sys.tables a,sys.indexes b,sys.index_columns c,sys.columns d
where a.name='emp'and 
a.object_id=b.object_id and
b.object_id=c.object_id and
b.index_id=c.index_id and
c.object_id=d.object_id and
c.column_id=d.column_id


注意一个index_name 里面不仅显示了索引名,还有索引类型,是主键
mysql 中

show index from emp

列举约束

select a.CONSTRAINT_NAME,b.CONSTRAINT_NAME,a.TABLE_NAME,a.CONSTRAINT_NAME,b.COLUMN_NAME,a.CONSTRAINT_TYPE
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS a,
INFORMATION_SCHEMA.KEY_COLUMN_USAGE b
where a.TABLE_NAME='emp' and
a.TABLE_NAME=b.TABLE_NAME and
a.TABLE_SCHEMA=b.TABLE_SCHEMA

你会发现一个问题,就是a.CONSTRAINT_NAME,b.CONSTRAINT_NAME在第二列不相等,后面将会自然揭晓。

原文地址:https://www.cnblogs.com/aoximin/p/12563531.html