数据库中的SCHEMA到底是什么?MySQL

平时在看一些数据库相关的书籍或是文档的时候总会出现这样一个词SCHEMA(模式),那这个SCHEMA到底是指什么?下面就来看看

SHCHEMA的定义

官方文档定义

Conceptually, a schema is a set of interrelated database objects, such as tables, table columns, data types of the columns, indexes, foreign keys, and so on. These objects are connected through SQL syntax, because the columns make up the tables, the foreign keys refer to tables and columns, and so on. Ideally, they are also connected logically, working together as part of a unified application or flexible framework. For example,the INFORMATION_SCHEMA and performance_schema databases use “schema” in their names to emphasize the close relationships between the tables and columns they contain.
In MySQL, physically, a schema is synonymous with a database. You can substitute the keyword SCHEMA instead of DATABASE in MySQL SQL syntax, for example using CREATE SCHEMA instead of CREATE DATABASE.
Some other database products draw a distinction. For example, in the Oracle Database product, a schema represents only a part of a database: the tables and other objects owned by a single user.
See Also database, INFORMATION_SCHEMA, Performance Schema.

摘自: https://dev.mysql.com/doc/refman/8.0/en/ . 文档最后一部分MySQL Glossary(MySQL 术语 )

野鸡翻译

从概念上讲,schema指的是一组相关联的数据库对象,这些对象包含:表、字段、字段类型、索引、外键、等等。 这些对象通过SQL语法连接,因为表是由字段组成的,外键指向表和字段等等。理想情况下,这些对象在逻辑上也是相连的,作为统一应用程序或者是灵活框架的一部分一起运作。例如,MySQL自带的“INFORMATION_SCHEMA”和“performace_schema”数据库在数据库命名时使用了“schema”这个词,目的就在于强调该数据库包含的表和字段的亲密关系。
Mysql中,从物理层角度讲,schema就是数据库的代名词。你可以用SCHEMA关键字代替DATABASE,如:使用CREATE SCHEMA代替CREATE DATABASE.
另外,不同数据对SCHEMA的定义是不一样的。例如,在Oracle中,schema仅表示数据库的一部分:单个用户拥有的表和其他对象。

SCHEMA的例子

SCHEMA代替database

使用关键字schema代替关键字database,如在查询数据库清单或者创建数据库时,如下图:

数据库中的SCHEMA到底是什么?MySQL
如上图所示,使用show databases; 和show schemas 得到的结果是一致的。
数据库中的SCHEMA到底是什么?MySQL
数据库中的SCHEMA到底是什么?MySQL
如上图可知,create database; 和create schema;效果是一致的。

MySQL中自带的performance_schema数据库和information_schema

安装Mysql后都会自带有两个数据库performance_schema和information_schema,简单介绍如下:
数据库中的SCHEMA到底是什么?MySQL

performance_schema

顾名思义:性能模式(数据库),即是该数据库包含的表和字段是用于存储MySQL中关于性能特征的信息的。这里使用schema这个词就如定义中一样是为了强调该数据库是关于性能方面。
数据库中的SCHEMA到底是什么?MySQL

information_schema

该模式(数据库)存储的是MySQL的数据字典。比如,要查询MySQL的元数据信息可以查询表INFORMATION_SCHEMA.TABLES和INFORMATION_SCHEMA.COLUMNS来获得MySQL中的表信息和字段信息。例如:
现在要查看MySQL中存储了多少张表,就可以在information_schema数据库表TABLES中进行查询

切换到information_schema,并查看TABLES表中的数据量

数据库中的SCHEMA到底是什么?MySQL
数据库中的SCHEMA到底是什么?MySQL

也就是当前整个MySQL中存储了493张表

切换到非MySQL自带数据库,删除一张表

最好不要删除MySQL自带的表,所以这里切换到用户自定义数据库,并删除1张表
数据库中的SCHEMA到底是什么?MySQL
数据库中的SCHEMA到底是什么?MySQL

验证结果,查询informaton_schema中表TABLES中的数据量

数据库中的SCHEMA到底是什么?MySQL
数据量492 = 493 -1;
减少了1条 ,符合预期。

总结

schema(模式)就是database(数据库)的代名词。
schema强调数据库中表(或其他对象)表示(存储)内容的方向。