MySql查询库结构及表属性SQL总结

库结构(用户、数据库、表、视图、触发器)

  • 数据库用户】 查询 数据库中的所有用户
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版本

猜你喜欢

转载自blog.csdn.net/qq_42002006/article/details/114227947