Mysql 查询数据库表、视图、函数、存储过程、触发器...信息

一、查询数据库所有表、视图、索引、函数、存储过程、触发器名

--查询数据库sakila所有表

select
	table_name
from
	information_schema.tables
where
	table_schema = 'sakila'
	and table_type = 'BASE TABLE'

--查询数据库sakila所有视图

select
	TABLE_NAME as VIEW_NAME
from
	INFORMATION_SCHEMA.VIEWS
where
	TABLE_SCHEMA = 'sakila'


--查询数据库sakila所有索引
select
	s.TABLE_NAME ,
	s.INDEX_NAME 
from
	information_schema.STATISTICS s
where
	s.TABLE_SCHEMA = 'sakila'

--查询数据库sakila所有函数
select
	ROUTINE_NAME 
from
	information_schema.ROUTINES
where
	ROUTINE_SCHEMA = 'sakila'
	and ROUTINE_TYPE = 'FUNCTION'

--查询数据库sakila所有存储过程

	select
	ROUTINE_NAME 
from
	information_schema.ROUTINES
where
	ROUTINE_SCHEMA = 'sakila'
	and ROUTINE_TYPE = 'PROCEDURE'

--查询数据库sakila所有触发器
select
	TRIGGER_NAME as object_name
from
	INFORMATION_SCHEMA.TRIGGERS
where
	TRIGGER_SCHEMA = 'sakila'
order by
	TRIGGER_SCHEMA,
	TRIGGER_NAME

二、查询表详细信息

--查询表的列信息

select
	COL.COLUMN_NAME as '列名',
	COL.ORDINAL_POSITION as '#',
	COL.COLUMN_TYPE as '数据类型',
	COL.IS_NULLABLE as '非空',
	COL.COLUMN_KEY as '键',
	COL.COLUMN_DEFAULT as '默认',
	COL.EXTRA as '额外的',
	COL.GENERATION_EXPRESSION as '表达式',
	COL.COLUMN_COMMENT as '注释'
from
	information_schema.COLUMNS COL
where
	TABLE_SCHEMA = 'sakila'
	and TABLE_NAME = 'rental'

--查询表的约束信息(除外键约束),检查表达式  MySQL 8.0.16 及之后的版本才有
select
	tc.CONSTRAINT_NAME as '名称',
	kcu.COLUMN_NAME as '列',
	tc.CONSTRAINT_TYPE as '约束类型',
	tc.TABLE_NAME as '所有者',
	cc.CHECK_CLAUSE as '检查表达式'
from
	information_schema.TABLE_CONSTRAINTS tc,
	information_schema.KEY_COLUMN_USAGE kcu
left join
 information_schema.CHECK_CONSTRAINTS cc on
	(kcu.CONSTRAINT_NAME = cc.CONSTRAINT_NAME)
where
	tc.TABLE_SCHEMA = 'sakila'
	and tc.TABLE_NAME = 'rental'
	and tc.TABLE_SCHEMA = kcu.TABLE_SCHEMA
	and tc.TABLE_NAME = kcu.TABLE_NAME
	and tc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME
	and tc.CONSTRAINT_TYPE != 'FOREIGN KEY'

--查询表的外键信息
select
	rc.CONSTRAINT_NAME as '名称',
	kcu.COLUMN_NAME as '列',
	kcu.TABLE_NAME as '所有者',
	rc.REFERENCED_TABLE_NAME as '引用表',
	tc.CONSTRAINT_TYPE as '类型',
	rc.UNIQUE_CONSTRAINT_NAME as '引用对象',
	rc.DELETE_RULE as '删除时的规则',
	rc.UPDATE_RULE as '更新时的规则'
from
	information_schema.REFERENTIAL_CONSTRAINTS rc ,
	information_schema.TABLE_CONSTRAINTS tc,
	information_schema.KEY_COLUMN_USAGE kcu
where
	rc.CONSTRAINT_NAME = tc.CONSTRAINT_NAME
	and kcu.CONSTRAINT_NAME = tc.CONSTRAINT_NAME
	and kcu .TABLE_NAME = rc.TABLE_NAME
	and rc.TABLE_NAME = tc.TABLE_NAME
	and tc.CONSTRAINT_TYPE = 'FOREIGN KEY'
	and kcu.TABLE_SCHEMA = 'sakila'
	and kcu.TABLE_NAME = 'rental'

--查询表的触发器
select
	T.TRIGGER_NAME as '触发器名称',
	T.ACTION_TIMING as '触发时机(Timing)',
	T.EVENT_MANIPULATION as '类型',
	T.EVENT_OBJECT_TABLE as '表',
	T.ACTION_STATEMENT as '触发器主体'
from
	information_schema.triggers T
where
	event_object_schema = 'sakila'
	and event_object_table = 'rental'

--查询表的索引
select
	S.INDEX_NAME as '索引名',
	S.COLUMN_NAME as '列',
	S.TABLE_NAME as '表',
	S.INDEX_TYPE as '索引类型',
	S.COLLATION  as '升序',
	S.NULLABLE as '可为空',
	S.NON_UNIQUE as '唯一的',
	C.EXTRA  as '额外的',
	S.CARDINALITY as '基数',
	S.COMMENT as '注释'
from
	information_schema.STATISTICS S,
	information_schema.COLUMNS C
where
	S.TABLE_SCHEMA = 'sakila'
	and S.TABLE_NAME = 'rental'
	and S.TABLE_SCHEMA = C.TABLE_SCHEMA 
	and S.TABLE_NAME = C.TABLE_NAME 
	and S.COLUMN_NAME = C.COLUMN_NAME

--查询表分区
select
	P.PARTITION_NAME as '分区名称',
	P.PARTITION_ORDINAL_POSITION as '位置',
	P.TABLE_NAME as '表',
	P.SUBPARTITION_METHOD as '方法',
	P.PARTITION_EXPRESSION as '表达式',
	P.PARTITION_DESCRIPTION as '描述',
	P.TABLE_ROWS as '表行',
	P.AVG_ROW_LENGTH as '平均长度',
	P.DATA_LENGTH as '数据长度',
	P.MAX_DATA_LENGTH as '最大数据长度',
	P.INDEX_LENGTH as '索引长度',
	P.DATA_FREE as '已分配但未使用的数据空间大小',
	P.CHECKSUM as '核对合计',
	P.PARTITION_COMMENT as '注释',
	P.NODEGROUP as '节点组'
from
	information_schema.PARTITIONS P
where
	TABLE_SCHEMA = 'sakila'
	and TABLE_NAME = 'rental'

三、创建语句查询

表:show create table sakila.rental ;

视图:show create view sakila.actor_info;

函数:show create function sakila.get_customer_balance ;

存储过程:show create procedure sakila.film_in_stock;

触发器:show create trigger sakila.ins_film;

四、查看存储过程、函数的参数信息

--存储过程参数信息(函数的类型为FUNCTION)
select
	p.PARAMETER_MODE ,
	p.PARAMETER_NAME ,
	p.ORDINAL_POSITION ,
	p.DATA_TYPE ,
	p.NUMERIC_PRECISION
from
	information_schema.PARAMETERS p
where
	p.SPECIFIC_SCHEMA = 'sakila'
	and p.SPECIFIC_NAME = 'film_in_stock'
	and p.ROUTINE_TYPE = 'PROCEDURE'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值