MySQL中table_schema的基本操作

mysql数据库中有一些表(是view,只能做select操作)记录了现有表的meta data,比如某个column的名字,它的定义是什么等等。

  1. 列出test数据库中所有的表名,类型(普通表还是view)和使用的引擎

select table_name, table_type, engine
FROM information_schema.tables
WHERE table_schema = ‘test’
ORDER BY table_name DESC;

解释: 对表的meta data的查询需要使用information_schema.tables, table_schema是数据库的名称,table_name是具体的表名,table_type指的是表的类型

  1. 检查数据库’test’中的某一个表’hello_world’是否存在

select count(1) from information_schema.tables where table_schema = ‘test’ and table_name = ‘hello_world’;

  1. 检查都一张表‘hello_world’的某一栏’a’的类型

select column_type from information_schema.columns where TABLE_SCHEMA = ‘test’ and TABLE_NAME = ‘hello_world’ and COLUMN_NAME = ‘a’;

解释: 对于某一个表中具体field的查询,需要使用表information_schema.columns

  1. 更改某一栏的定义;

alter table test.hello_world modify column a bigint(20) DEFAULT 0;

### Information_SchemaTable_Schema 的定义与用途 #### Information_Schema 数据库 Information_Schema 是一个特殊的系统数据库,它提供了关于 MySQL 服务器中其他数据库及其对象的元数据信息。换句话说,它是“关于数据库数据库”,用于存储和提供有关数据库结构的信息[^3]。 通过查询 Information_Schema 中的视图,可以获取诸如表、列、索引、用户权限等各种元数据。例如,`SCHEMATA` 表提供了关于数据库schema)的基本信息[^1],而 `SCHEMA_PRIVILEGES` 则描述了特定用户的数据库级权限信息[^2]。 以下是访问 Information_Schema 的典型方式: ```sql SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'example_table'; ``` 此查询返回名为 `example_table` 的表的相关元数据信息。 --- #### Table_Schema 字段 Table_Schema 并不是一个独立的数据库或实体,而是作为字段存在于某些 Information_Schema 视图中,比如 `TABLES` 或 `COLUMNS`。具体来说,`TABLE_SCHEMA` 字段表示某个表所属的数据库名称。因此,在查询过程中,可以通过这个字段来过滤属于特定数据库的表或其他对象。 以下是一个示例查询,展示如何利用 `TABLE_SCHEMA` 来筛选指定数据库中的所有表: ```sql SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'my_database_name'; ``` 上述 SQL 查询会列出 `my_database_name` 数据库下的所有表名。 --- #### 主要区别总结 | **特性** | **Information_Schema** | **Table_Schema** | |---------------------|---------------------------------------------------------------------------------------------------------|------------------------------------------------------| | **本质** | 特殊系统数据库,包含多个视图以提供元数据信息 | 属于 Information_Schema 视图中的一个字段 | | **作用范围** | 提供整个 MySQL 实例级别的元数据 | 描述单个表所在的数据库 | | **使用场景** | 获取全局元数据(如所有数据库列表、表结构、列属性等) | 筛选或定位特定数据库内的表 | --- ### 示例代码对比 下面分别展示了如何使用这两个概念: #### 使用 Information_Schema 查看所有数据库 ```sql SELECT SCHEMA_NAME AS Database_Name FROM INFORMATION_SCHEMA.SCHEMATA; ``` #### 使用 Table_Schema 找到某数据库的所有表 ```sql SELECT TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'specific_db_name'; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值