创建了数据库之后,还需要创建模式才能够存储数据库对象。
DDL 创建模式
CREATE SCHEMA 命令用于创建一个新的模式:
-- SQL Server 以及 PostgreSQL 实现
CREATE SCHEMA hr
[AUTHORIZATION user1];
以上语句创建一个名为 hr 的模式,可选的 AUTHORIZATION 表示为该模式指定一个拥有者 user1,拥有者是一个已经存在的数据库用户。
SQL Server 创建数据库时会自动创建一个名为 dbo 的模式,PostgreSQL 创建数据库时会自动创建一个名为 public 的模式。
MySQL 中的模式等价于数据库,因此 CREATE SCHEMA 等价于 CREATE DATABASE。
Oracle 中的模式等价于用户,因此使用 CREATE USER 命令创建用户时就相当于创建一个同名的模式:
CREATE USER hr
IDENTIFIED BY xxx;
Oracle 也提供了 CREATE SCHEMA 命令,但不是用于创建模式,而是用于在模式中创建表、视图以及执行授权操作。
DDL 删除模式
不需要的模式可以使用 DROP SCHEMA 命令删除:
-- SQL Server 以及 PostgreSQL 实现
DROP SCHEMA hr;
MySQL 中的模式等价于数据库,因此 DROP SCHEMA 等价于 DROP DATABASE。
Oracle 中的模式等价于用户,因此使用 DROP USER 命令创建用户时就相当于创建一个同名的模式:
-- Oracle 实现
DROP USER hr;
如果模式中存在对象,则无法删除该模式;可以先删除其中的对象,再删除模式。某些数据库支持级联删除:
-- PostgreSQL 实现
DROP SCHEMA hr CASCADE;
-- Oracle 实现
DROP USER hr CASCADE;
CASCADE 表示删除模式的同时,删除该模式中的所有对象。