引言

Schema在数据库中指一种逻辑结构或命名空间,用于组织和管理数据库对象(如表、视图、索引等)。不同数据库系统中Schema的具体含义和实现方式有所不同。

一、MySQL中的Schema

在MySQL中,Schema与Database是同义词,两者可以互换使用。创建Schema等同于创建Database。

CREATE SCHEMA test_schema; -- 等同于 CREATE DATABASE test_schema;

二、PostgreSQL中的Schema

PostgreSQL的Schema是Database内部的命名空间,默认存在public Schema。不同Schema可包含同名对象,适合多租户场景或模块化设计。就是一个数据库包含多个Schema,一个Schema可以包含多个表。需要SELECT表的时候,必须指定该表的模式所属SELECT * FROM Schema名称.表名称,或者使用以下方式设置搜素的路径:

CREATE SCHEMA custom_schema;
SET search_path TO custom_schema, public; -- 设置搜索路径

三、Oracle中的Schema

Oracle的Schema与用户账户绑定,每个用户拥有同名Schema。Schema包含该用户创建的所有对象。

CREATE USER schema_owner IDENTIFIED BY password;
-- 用户schema_owner登录后创建的对象属于schema_owner Schema 

四、SQL Server中的Schema

SQL Server的Schema是Database内部的命名空间,用于权限管理和对象分组,是组织数据库对象(表、视图等)的逻辑结构。默认Schema为dbo。Schema与用户分离,一个用户可拥有多个Schema。

CREATE SCHEMA hr_schema;
CREATE TABLE hr_schema.employees (...); -- 在hr_schema中创建表

五、DB2中的Schema

类似PostgreSQL中的Schema,DB2的Schema类似命名空间,用于分组对象。Schema名通常与创建它的用户ID相同。在PostgreSQL中,Schema主要用于逻辑隔离,便于多租户应用或模块化设计。DB2的Schema则更侧重于用户隔离,确保用户数据的独立性。PostgreSQL中,用户可以通过完整路径名(如schema.table)或配置search_path来访问其他Schema的对象。DB2需要显式授权才能跨Schema访问

CREATE SCHEMA analytics AUTHORIZATION db2user;
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐