MySql查询库结构及表属性
库结构(用户、数据库、表、视图、触发器)
- 【
数据库用户
】 查询 数据库中的所有用户
SELECT user,host FROM mysql.user
- 【
数据库
】查询 所有数据库名称和字符编码
select schema_name dbName,DEFAULT_CHARACTER_SET_NAME code from information_schema.schemata
order by schema_name
- 【
表
】根据数据库名 查询所有表
SELECT TABLE_NAME AS TABLENAME,TABLE_SCHEMA OWNER,TABLE_ROWS NUM_ROWS,CHECK_TIME LAST_ANALYZED
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '数据库名' and table_type='BASE TABLE'
- 【
视图
】根据数据库名 查询所有视图
SELECT table_schema,table_name,view_definition FROM information_schema.views
where table_schema='数据库名'
- 【
触发器
】根据数据库名 查询所有触发器
SELECT trigger_schema,trigger_name,action_timing,event_manipulation,
event_object_table,action_orientation,action_statement
FROM information_schema.TRIGGERS WHERE TRIGGER_SCHEMA='数据库名'
表属性(字段、主键、外键、索引、唯一约束)
- 【
字段
】根据表名 查询 列属性
select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,DATA_TYPE,IS_NULLABLE,COLUMN_TYPE,COLUMN_KEY
from information_schema.COLUMNS
WHERE TABLE_SCHEMA ='数据库名' and TABLE_NAME='表名'
- 【
主键
】根据表名 查询 主键
SELECT a.COLUMN_NAME,a.CONSTRAINT_NAME
FROM information_schema.KEY_COLUMN_USAGE a,information_schema.TABLE_CONSTRAINTS b
WHERE a.TABLE_SCHEMA=b.TABLE_SCHEMA and a.TABLE_NAME=b.TABLE_NAME
AND a.CONSTRAINT_NAME=b.CONSTRAINT_NAME and b.CONSTRAINT_TYPE = 'PRIMARY KEY'
and a.TABLE_SCHEMA='数据库名' AND a.TABLE_NAME='表名'
- 【
外键
】根据表名 查询 外键 及 外键关联的详细信息
SELECT a.constraint_name,
a.table_schema,a.table_name,a.column_name,
a.referenced_table_schema,a.referenced_table_name,a.referenced_column_name
FROM information_schema.KEY_COLUMN_USAGE a,information_schema.TABLE_CONSTRAINTS b
WHERE a.TABLE_SCHEMA=b.TABLE_SCHEMA and a.TABLE_NAME=b.TABLE_NAME
AND a.CONSTRAINT_NAME=b.CONSTRAINT_NAME and b.CONSTRAINT_TYPE ='FOREIGN KEY'
and a.TABLE_SCHEMA='数据库名' AND a.TABLE_NAME='表名'
- 【
索引
】根据表名 查询 索引
show index from `数据库名`.`表名`
where key_name not in
( SELECT a.CONSTRAINT_NAME
FROM information_schema.KEY_COLUMN_USAGE a,information_schema.TABLE_CONSTRAINTS b
WHERE a.TABLE_SCHEMA=b.TABLE_SCHEMA and a.TABLE_NAME=b.TABLE_NAME
AND a.CONSTRAINT_NAME=b.CONSTRAINT_NAME
and a.TABLE_SCHEMA='数据库名' AND a.TABLE_NAME='表名')
- 【
唯一约束
】根据表名 查询 唯一约束
SELECT a.CONSTRAINT_NAME,a.COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE a,information_schema.TABLE_CONSTRAINTS b
WHERE a.TABLE_SCHEMA=b.TABLE_SCHEMA and a.TABLE_NAME=b.TABLE_NAME
AND a.CONSTRAINT_NAME=b.CONSTRAINT_NAME and b.CONSTRAINT_TYPE = 'UNIQUE'
and a.TABLE_SCHEMA='数据库名' AND a.TABLE_NAME='表名'
【注意】本文的sql均自测于mysql5.7版本