深入浅出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的结果取之此表。
分类:
MySQL管理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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代理技术深度解析与实战指南