MySQL技巧系列之《未经证实的葵花宝典》:一篇可以当饭吃的MySQL文章,值得收藏
如何找东西:找表,找字段,找存储过程,找触发器,找事件。如何生成数据结构表(字典表)?
一篇可以当饭吃的MySQL文章,值得收藏!
如何找东西:找表,找字段,找存储过程,找触发器,找事件。如何生成数据结构表(字典表)
依然以下表为测试用例。
CREATE TABLE my_test_table
(
auto_id
INT(4) NOT NULL AUTO_INCREMENT COMMENT ‘流水ID’,
dh
VARCHAR(50) DEFAULT NULL COMMENT ‘单号’,
amt_type
VARCHAR(20) DEFAULT NULL COMMENT ‘费用类型’,
amt
DECIMAL(13,2) DEFAULT NULL COMMENT ‘金额’,
PRIMARY KEY (auto_id
)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=‘我的测试用表’
– 知道表描述 ‘我的测试用表’ 找是什么表名?
SELECT TABLE_SCHEMA 库名, TABLE_NAME 表名, TABLE_COMMENT 表描述 FROM information_schema.TABLES WHERE TABLE_COMMENT = ‘我的测试用表’;
– 知道表名 my_test_table 找字段?
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_NAME = ‘my_test_table’;
– 知道字段“dh”,找字段在什么表里?
SELECT TABLE_NAME, COLUMN_NAME, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ‘你的数据库名’ AND COLUMN_NAME = ‘dh’ ORDER BY TABLE_NAME;
SELECT TABLE_NAME, COLUMN_NAME, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ‘你的数据库名’ AND COLUMN_NAME LIKE ‘%dh%’ ORDER BY TABLE_NAME;
– 知道备注“单号”,找字段?找表?
SELECT TABLE_NAME, COLUMN_NAME, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ‘你的数据库名’ AND COLUMN_COMMENT = ‘单号’ ORDER BY TABLE_NAME;
SELECT TABLE_NAME, COLUMN_NAME, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ‘你的数据库名’ AND COLUMN_COMMENT LIKE ‘%单号%’ ORDER BY TABLE_NAME;
– 知道表名 my_test_table 找用在什么存储过程中?
SELECT SPECIFIC_NAME FROM information_schema.ROUTINES WHERE ROUTINE_DEFINITION LIKE ‘%my_test_table%’;
SELECT SPECIFIC_NAME FROM information_schema.ROUTINES WHERE ROUTINE_DEFINITION LIKE ‘%什么内容都可以%’;
– 知道表名 my_test_table 找用在什么函数中(与找存储过程相同)?
SELECT SPECIFIC_NAME FROM information_schema.ROUTINES WHERE ROUTINE_DEFINITION LIKE ‘%my_test_table%’;
– 知道表名 my_test_table 找它有什么触发器?
SELECT TRIGGER_SCHEMA, TRIGGER_NAME, EVENT_MANIPULATION FROM information_schema.TRIGGERS WHERE event_object_table = ‘my_test_table’;
– 知道表名或者存储过程名,找它用在什么"事件"中?
SELECT EVENT_SCHEMA, EVENT_NAME FROM information_schema.EVENTS WHERE EVENT_DEFINITION LIKE ‘%pr_test%’;
SELECT EVENT_SCHEMA, EVENT_NAME FROM information_schema.EVENTS WHERE EVENT_DEFINITION LIKE ‘%什么内容都可以%’;
– 生成数据结构表(字典表)
SELECT TABLE_NAME 表名, COLUMN_NAME 字段名, COLUMN_TYPE 类型, IS_NULLABLE 是否允许空, COLUMN_KEY 主键, IF(EXTRA=‘AUTO_INCREMENT’, ‘自增’, ‘’) 自增, COLUMN_COMMENT 字段说明
FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ‘你的数据库名’ AND TABLE_NAME = ‘my_test_table’
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
妙!高!实在是高!
一篇可以当饭吃的MySQL文章,值得收藏!
总结:灵活应用MySQL内置的系统库information_schema,可以找到好多东西:找表,找字段,找存储过程,找触发器,找事件。还可以生成数据结构表(字典表)。一篇好文章可以当饭吃,值得收藏!