PostgreSQL 和 MySQL 中 schema 的区别

发布于 2021-05-08 14:34:50

背景

公司同事对于 schema 的概念比较模糊。 PostgreSQL 、MySQL 、SQL Server 、Oracle 都有 schema (模式)的概念,并且在实际应用中体现的作用不大一样,这里重点解释 PostgreSQL 和 MySQL 的 schema 。

区别

PostgreSQL

schema 在同一个数据库中可以创建多个,每个 schema 可以拥有相同表名的表。

假设有 a_schema 和 b_schema ,里面都可以存在 test_table 这张表,并且在同一个数据库中可以通过语句查看到不同 schema 里面的数据。

select column1
from a_schema.test_table
union all
select column1
from b_schema.test_table;

MySQL

与 PostgreSQL 不大一样,在 MySQL 的 database 和 schema 是同一个概念,所以在 MySQL 中不会特别提及 schema 。

MySQL 中,可以同时操作多个数据库( 和 schema 的概念一致 )

select column1
from a_database1.test_table
union all
select column1
from a_database2.test_table;

示意图

image.png

PostgreSQL 中 schema 的优势

  1. 对于需要统一编码规则、排序规则等配置,可以做到配置一次,达到多个 schema 复用配置的效果,换成 MySQL 的 schema 来实现,则需要配置多次。
  2. 可以减少 root 权限的使用,通过数据库的权限管理,让用户自己在特定数据库管理 schema 。
  3. 在一个数据库中可以通过不同的 schema 创建相同的表。
0 条评论

发布
问题