mysql查询数据库表字段的类型 sql语句_mysql使用sql语句查询数据库所有表注释已经表字段注释...

场景:

1. 要查询数据库 "mammothcode" 下所有表名以及表注释

/* 查询数据库 ‘mammothcode’ 所有表注释 */

SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema.TABLES WHERE table_schema=‘mammothcode‘;

2. 要查询表字段的注释

/* 查询数据库 ‘mammothcode’ 下表 ‘t_adminuser’ 所有字段注释 */

SELECT COLUMN_NAME,column_comment FROM INFORMATION_SCHEMA.Columns WHERE table_name=‘t_adminuser‘ AND table_schema=‘mammothcode‘

3. 一次性查询数据库 "mammothcode" 下表注释以及对应表字段注释

SELECT t.TABLE_NAME,t.TABLE_COMMENT,c.COLUMN_NAME,c.COLUMN_TYPE,c.COLUMN_COMMENT FROM information_schema.TABLES t,INFORMATION_SCHEMA.Columns c WHERE c.TABLE_NAME=t.TABLE_NAME AND t.`TABLE_SCHEMA`=‘mammothcode‘

扩展:使用存储过程,对上面sql语句进行存储,sql如下:

fcecaa27ea5212ceb9bf034c36bfbf34.gif

DELIMITER//

DROP PROCEDURE IF EXISTS findComment//

CREATE PROCEDURE findComment (dbName VARCHAR(50))

BEGIN

DECLARE stmt VARCHAR(65535);

#如果用户名长度大于0

IF LENGTH(dbName)>0 THEN

BEGIN

SET @sqlstr=CONCAT(‘SELECT t.TABLE_NAME,t.TABLE_COMMENT,c.COLUMN_NAME,c.COLUMN_TYPE,c.COLUMN_COMMENT FROM information_schema.TABLES t,INFORMATION_SCHEMA.Columns c WHERE c.TABLE_NAME=t.TABLE_NAME AND t.`TABLE_SCHEMA`=‘,‘‘‘‘,dbName,‘‘‘‘);

END;

ELSE

BEGIN

SET @sqlstr=CONCAT(‘SELECT ‘,‘‘‘‘,‘数据库名不能为空‘,‘‘‘‘, ‘AS ‘,‘‘‘‘,‘提示‘,‘‘‘‘);

END;

END IF;

PREPARE stmt FROM @sqlstr;

EXECUTE stmt;

END//

DELIMITER ;

fcecaa27ea5212ceb9bf034c36bfbf34.gif

调用存储过程:

CALL findComment(‘xiyinli_test‘);

上面的存储过程还可以简化:在存储过程中直接查询当前使用的数据库,如下:

fcecaa27ea5212ceb9bf034c36bfbf34.gif

DELIMITER//

DROP PROCEDURE IF EXISTS findComment//

CREATE PROCEDURE findComment ()

BEGIN

DECLARE stmt VARCHAR(65535);

#查询当前的 use-->database

SET @dbName=(SELECT DATABASE());

BEGIN

SET @sqlstr=CONCAT(‘SELECT t.TABLE_NAME,t.TABLE_COMMENT,c.COLUMN_NAME,c.COLUMN_TYPE,c.COLUMN_COMMENT FROM information_schema.TABLES t,INFORMATION_SCHEMA.Columns c WHERE c.TABLE_NAME=t.TABLE_NAME AND t.`TABLE_SCHEMA`=‘,‘‘‘‘,@dbName,‘‘‘‘);

END;

PREPARE stmt FROM @sqlstr;

EXECUTE stmt;

END//

DELIMITER ;

fcecaa27ea5212ceb9bf034c36bfbf34.gif

调用:

CALL findComment();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值