随笔 - 404  文章 - 4  评论 - 0  阅读 - 25万

深入浅出MySQL阅读笔记-查询元数据信息

日常工作中,会遇到类似下面的应用场景:

  • 删除数据库demo下所有前缀为tmp的表;
  • 将数据库demo下所有存储引擎为myisam的表改为innodb.

  对于这类需求,在MySQL5.0之前只能通过show tables、show create table或者show table status等命令来得到指定数据库下的表名和存储引擎。这些命令不适合进行字符串的批量编辑。

  MySQL5.0之后,提供了一个新的数据库information_schema。用来记录MySQL中的元数据信息。元数据指的是数据的数据,比如表名、列名、列类型、索引名等表的各种属性名称。这个库是一个虚拟数据库,物理上并不存在相关的目录和文件;库里show tables 显示的各种“表”也并不是实际存在的物理表,而全部是视图。

  对于上面的两个需求,可以通过两个命令得到需要的SQL语句:

select concat('drop table demo.',table_name,';') from tables where table_name='demo' and table_name like 'tmp%';
 
select concat('alter table demo.',table_name,'engine=innodb;') from tables where table_='demo' and engine='MyISAM';

  下面列出一些比较常用的视图:

  • SCHEMATA:该表提供当前mysql实例中所有数据库的信息,show databases的结果取之此表。
  • TABLES:该表提供了关于数据库中的表的信息(包括视图),详细表述某个表属于哪个schema、表类型、表引擎、创建时间等信息。show tables from schemaname的结果取之此表。
  • COLUMNS:该表提供了表中的列信息,详细表述了某张表的所有列以及每个列的信息。show columns from schemaname.tablename的结果取之此表。
  • STATISTICS:该表提供了关于表索引的信息。show index from schemaname.tablename的结果取之此表。
posted on   HelonTian  阅读(1110)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示