zbb20181206 mysql使用sql語句查詢資料庫所有表註釋已經表字段註釋
阿新 • • 發佈:2018-12-06
場景:
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如下:
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 ;
呼叫儲存過程:
CALL findComment('xiyinli_test');
上面的儲存過程還可以簡化:在儲存過程中直接查詢當前使用的資料庫,如下:
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 ;
呼叫:
CALL findComment();