我的编程空间,编程开发者的网络收藏夹
学习永远不晚

汇总数据库信息的存储过程

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

汇总数据库信息的存储过程

汇总数据库信息的存储过程

问题:

  mysql日常开发过程中,数据库、表的很多信息分散在不同的工具和不同的界面中,来回切换查找非常麻烦。

解决方式:

  基于这个问题,写了一个存储过程,将这些日常需要的信息集合在一个存储过程中,查询起来非常方便。

       工具合集中写了其他存储过程的调用方式和说明,为的是方便解决其他问题,后续分享这些问题和解决方式。

 

  1 -- -- powered by wanglifeng https://www.cnblogs.com/wanglifeng717
  2 DROP PROCEDURE IF EXISTS show_db_info;
  3 
  4 DELIMITER %%
  5 CREATE PROCEDURE show_db_info() 
  6 label:BEGIN
  7 -- ############################################################################
  8 -- ############                    打印一个库中每个表的各种信息    ##############
  9 -- -- powered by wanglifeng https://www.cnblogs.com/wanglifeng717
 10 -- ############################################################################
 11 
 12 -- 设置库名
 13 SET @dbname= DATABASE();
 14 
 15 
 16 DROP TABLE if exists fk_tbl;
 17 CREATE TABLE if NOT exists fk_tbl as
 18   SELECT 
 19     t.CONSTRAINT_TYPE AS "fk",
 20     t.TABLE_NAME AS "tbl_name",
 21     t.CONSTRAINT_NAME AS "fk_name",
 22     k.COLUMN_NAME AS "fk_col",
 23     CONCAT(
 24       "来自 ",
 25       k.REFERENCED_TABLE_NAME,
 26       " 表 (",
 27       k.REFERENCED_COLUMN_NAME,
 28       ")"
 29     ) AS "come_from" 
 30   FROM
 31     information_schema.TABLE_CONSTRAINTS t 
 32     JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE k 
 33       ON t.CONSTRAINT_NAME = k.CONSTRAINT_NAME 
 34       AND t.TABLE_NAME = k.TABLE_NAME 
 35       AND t.CONSTRAINT_SCHEMA = k.CONSTRAINT_SCHEMA 
 36   WHERE t.CONSTRAINT_TYPE = "FOREIGN KEY" 
 37     AND t.table_schema = DATABASE() ;
 38  
 39  DROP TABLE if EXISTS index_tbl;
 40  CREATE  table if not exists index_tbl as
 41  SELECT 
 42     IF(
 43       non_unique = 0,
 44       "唯一键",
 45       "索引"
 46     ) AS "index_type",
 47     TABLE_NAME AS "tbl_name",
 48     index_name AS "index_name",
 49     column_name  AS "index_col",
 50     s.SEQ_IN_INDEX AS "order",
 51     (SELECT GROUP_CONCAT(i.column_name ORDER BY i.seq_in_index) FROM  information_schema.statistics i WHERE  i.table_schema = DATABASE() and i.table_name=s.table_name AND i.index_name=s.index_name GROUP BY i.index_name) AS "bind_col"
 52   FROM
 53     information_schema.statistics s
 54   WHERE table_schema = DATABASE();
 55   
 56 -- SELECT * FROM index_tbl;
 57  
 58  
 59  
 60 
 61 -- ########################################################################   
 62 --     打印表信息
 63 -- ######################################################################## 
 64 
 65 SET @help_code="
 66 -- 表注释:   @tbl_comment
 67 
 68 -- 字段列表:@allColumnList
 69 
 70 call insert_code_generator("@in_var_tbl_name");
 71 
 72 call select_code_generator("@in_var_tbl_name","list|obj","static_query_col","dynamic_query_col","list_query_col");
 73 
 74 call update_code_generator("@in_var_tbl_name","update_col","dynamic_update_col","static_query_col","dynamic_query_col","list_query_col");
 75 
 76 call tbl_query("@in_var_tbl_name","*"," where 1=1 limit 50 ","32");
 77 
 78 call insert_sql_generator("@in_var_tbl_name","exclude_col_list");
 79 
 80 call delete_drop_sql_generator("WHERE "2021-05-19 22:19:56.724" <= LEFT(create_time,23) and LEFT(create_time,23)<="2021-05-19 22:19:56.728"","include_tbl_list","exclude_tbl_list","0");
 81 
126 
127 
128 ";
129 
130 -- 表名,注释名  
131   SELECT 
132    (@row_id:=@row_id +1) AS "序号",
133     s.table_name AS "表名",
134     s.table_comment AS "注释",
135     
136      
146     (SELECT 
147             CONCAT_WS("",""字段注释:"{
",
148                 GROUP_CONCAT(
149                     CONCAT_WS("",
150                       CONCAT_WS( "",""",t.COLUMN_NAME,"":")
151                         ,repeat(" ",
152                             (
153                                 (SELECT  MAX(length(CONCAT_WS( "",""",s.COLUMN_NAME,""")))  FROM information_schema.columns s WHERE s.TABLE_SCHEMA= DATABASE() and s.TABLE_NAME=t.TABLE_NAME)  
154                                  - 
155                                 LENGTH(CONCAT_WS( "",""",t.COLUMN_NAME,"""))
156                             )
157                         )
158                         
159                         ,
160                             -- "tbl_cbm_user_info的uuid | varchar(64) | 非空 | 默认值: null | 字符编码: utf8mb4 | 校验编码: utf8mb4_bin | 索引 | idx_ali_user_info_user_uuid(user_uuid)"
161                              CONCAT_WS("",""",t.column_comment," | ",t.COLUMN_TYPE," | ",if(t.is_nullable="YES","可空","非空"),case t.COLUMN_KEY when "PRI" then " | 主键"  else "" END
162                             ,CONCAT_WS(""," | 默认值: ",IFNULL(t.COLUMN_DEFAULT,"null"))
163                             ,CONCAT(""," | 字符编码: ",t.CHARACTER_SET_NAME)
164                             ,CONCAT(""," | 校验编码: ",t.COLLATION_NAME)
165                             ,(
166                                 IFNULL(
167                                     (
168                                         SELECT 
169                                             GROUP_CONCAT( CONCAT(" | ",index_type,": ","(",bind_col,")")SEPARATOR "")
170                                         FROM index_tbl i WHERE i.tbl_name =t.TABLE_NAME  AND i.index_col =t.COLUMN_NAME  
171                                     )
172                                 ," | 无索引")
173                             )
174                             ,    
175                             --  | 外键: fk_ali_user_info_user_uuid来自 tbl_cbm_user_info 表 (uuid)    
176                             (    
177                                 SELECT 
178                                 CONCAT(" | 外键: ",come_from)
179                                 FROM fk_tbl f WHERE f.tbl_name =t.TABLE_NAME AND f.fk_col=t.COLUMN_NAME
180                             )
181                             
182                             ,""") 
183                          -- -----------------------------------------------------
184                     ) ORDER BY t.ORDINAL_POSITION SEPARATOR ",
"
185                 ),"
}"
186             ) 
187         FROM information_schema.columns t 
188         WHERE t.TABLE_SCHEMA = DATABASE() and t.TABLE_NAME=s.table_name
189     ) AS "字段列表",
190      REPLACE(
191                    replace(
192                           REPLACE(@help_code,"@tbl_comment",s.TABLE_COMMENT) 
193                           ,"@in_var_tbl_name"
194                           ,s.TABLE_NAME
195                    )
196                 ,"@allColumnList"
197                 ,(SELECT GROUP_CONCAT(t.COLUMN_NAME) FROM information_schema.columns t WHERE  t.TABLE_SCHEMA= DATABASE() and t.TABLE_NAME=s.TABLE_NAME)
198                 ) AS "工具合集",
199     s.table_rows AS "记录数",
200     TRUNCATE(s.data_length / 1024 / 1024, 2) AS "数据容量(MB)",
201     TRUNCATE(s.index_length / 1024 / 1024, 2) AS "索引容量(MB)",
202     s.create_time AS "创建时间" 
203   FROM
204     information_schema.tables s
205     JOIN (SELECT @row_id:=0) temp
206   WHERE s.table_schema = @dbname 
207     AND s.table_name NOT IN ("index_tbl","fk_tbl")
208     ORDER BY s.data_length DESC,s.index_length DESC ;
209  
210  
211   
212 -- ########################################################################   
213 -- 外键约束 
214 -- ######################################################################## 
215 
216    
217 SELECT 
218     (@row_id:=@row_id +1) AS "序号",
219     t.CONSTRAINT_TYPE AS "约束类型",
220     t.TABLE_NAME AS "表名",
221     t.CONSTRAINT_NAME AS "约束名",
222     k.COLUMN_NAME AS "相关列",
223     CONCAT("来自 ", k.REFERENCED_TABLE_NAME,  " 表 (", k.REFERENCED_COLUMN_NAME, ")" ) AS "来自" 
224 FROM
225     information_schema.TABLE_CONSTRAINTS t 
226     JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE k 
227     JOIN (SELECT @row_id:=0) temp
228     ON t.CONSTRAINT_NAME = k.CONSTRAINT_NAME 
229     AND t.TABLE_NAME = k.TABLE_NAME 
230     AND t.CONSTRAINT_SCHEMA = k.CONSTRAINT_SCHEMA 
231 WHERE t.CONSTRAINT_TYPE = "FOREIGN KEY" 
232 AND t.table_schema = @dbname AND t.table_name NOT IN ("index_tbl","fk_tbl");
233   
234   
235 -- ########################################################################    
236 -- 索引列表   
237 -- ########################################################################
238 
239 SELECT  
240     (@row_id:=@row_id +1) AS "序号",t.*
241 FROM 
242 ( 
243   SELECT 
244     IF(non_unique = 0,"unique","normal_index") AS "索引类型",
245     TABLE_NAME AS "表名",
246     index_name AS "索引名",
247     GROUP_CONCAT(column_name  ORDER BY seq_in_index) AS "相关列" 
248   FROM
249     information_schema.statistics 
250   WHERE table_schema = @dbname AND table_name IN  (SELECT table_name  FROM  information_schema.TABLES  WHERE TABLE_SCHEMA = @dbname) 
251   AND table_name NOT IN ("index_tbl","fk_tbl")
252   GROUP BY TABLE_NAME, INDEX_NAME 
253  ) t
254 JOIN (SELECT @row_id:=0) temp;
255     
256 
257 DROP TABLE if EXISTS index_tbl;
258 DROP TABLE if exists fk_tbl;
259 
260 
261 END %%
262 DELIMITER ;    
263 
264 CALL show_db_info();
show_db_info存储过程

 

mysql数据库运行结果如下:

 

 

 

 

 

 

 

 

 

 

 

 本文来自云海天,作者:wanglifeng,转载请注明原文链接: https://www.cnblogs.com/wanglifeng717/p/15830527.html

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

汇总数据库信息的存储过程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

汇总数据库信息的存储过程

问题:  mysql日常开发过程中,数据库、表的很多信息分散在不同的工具和不同的界面中,来回切换查找非常麻烦。解决方式:  基于这个问题,写了一个存储过程,将这些日常需要的信息集合在一个存储过程中,查询起来非常方便。       工具合集中写了其他存储过程的调
汇总数据库信息的存储过程
2017-02-26

数据库存储过程

原文:https://www.cnblogs.com/gfutcan/p/13946765.html
数据库存储过程
2015-11-12

Oracle数据库存储过程的调试过程

目录oracle存储过程调试方法Oracle 存储过程的调试总结oracle存储过编程客栈程调试方法PL/SQL中为我们提供了【调试存储过程】的功能,可以帮助你完成存储过程的预编编程客栈译与测试。点击要调试的存储过程,右键选择TEST如
2022-07-05

mysql数据库存储过程教程

mysql 存储过程是预编译的 sql 语句集合,可作为单个单元执行,提供提高性能、代码重用、安全性、数据完整性等优势。创建存储过程需要确定功能、编写代码、使用 create procedure 语句创建、使用 call 语句测试。例如,获
mysql数据库存储过程教程
2024-08-01

创建一个MySQL存储过程,该存储过程以数据库名称作为参数,列出特定数据库中包含详细信息的表。

假设当前我们使用一个名为“query”的数据库,其中包含以下表格 -mysql> Show tables in query;+-----------------+| Tables_in_query |+----------------
2023-10-22

MySQL数据库之存储过程 procedure

目录1、存储过程与函数的区别1.1、相同点1.2、不同点2、存储过程的操作2.1、创建过程2.2、查看过程2.3、调用过程2.4、删除过程3、存储过程的形参类型前言:stored procedure 完成特定功能的SQL语句集,存储在数据
2022-06-15

Unity 数据存储和读取的方法汇总

这篇文章主要介绍了Unity 数据存储和读取的方法,本文通过四种方法在Unity中实现数据存储和读取方法的案例内容,结合示例代码给大家讲解的非常详细,需要的朋友可以参考下
2022-11-13

数据信息汇总的七种基本技术总结

数据汇总是一个将原始数据简化为其主要成分或特征的过程,使其更容易理解、可视化和分析。本文介绍总结数据的七种重要方法,有助于理解数据实质的内容。

Linux数据库的存储过程是什么

在Linux上,存储过程是一组SQL语句的集合,它们被存储在数据库中并可以被调用和执行。存储过程通常用来执行一系列的操作,比如插入、更新、删除数据,并且可以接收参数进行动态操作。在Linux上,常见的数据库管理系统如MySQL、Postg
Linux数据库的存储过程是什么
2024-05-06

mysql与oracle通过存储过程查询数据库所有表的列总和

mysql数据库: delimiter // # 定义//为一句sql的结束标志,取消;的所代表的意义drop procedure if exists db_table_col_count; # 如果存在名字为db_table_col_count的proc
mysql与oracle通过存储过程查询数据库所有表的列总和
2020-01-06

编程热搜

目录