Alex_McAvoy

想要成为渔夫的猎手

SQL 模式的数据定义

【模式定义】

基本语法

在 SQL 中,要创建模式,需要调用该命令的用户拥有数据库管理员权限,或者取得了数据库管理员所授予的 CREATE SCHEMA 权限

定义模式的 SQL 语法为:

1
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>;

例如,为用户 TOM 定义一个学生-课程模式 S-T

1
CREATE SCHEMA "S-T" AUTHORIZATION TOM;

隐含模式名

如果没有指定 <模式名>,那么 <模式名> 将隐含为 <用户名>

例如,为用户 TOM 定义一个学生-课程模式 S-T 时,没有指定模式名 S-T,此时模式名即用户名 TOM

1
CREATE SCHEMA AUTHORIZATION TOM;

子句支持

定义模式实质上是定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象

目前,用户可以在创建模式的同时,在该模式中进一步创建基本表、创建视图、定义授权,即在 CREATE SCHEMA 语句中接受 CREATE TABLECREATE VIEWGRANT 子句

语法为:

1
2
CREATE SCHEMA <模式名> AUTHORIZATION <用户名> 
[<表定义子句> | <视图定义子句> | <授权定义子句>];

例如,为用户 TOM 定义一个学生-课程模式 S-T,同时在其中定义一个表 TAB1,该表一共两列,均为 INT 型

1
2
CREATE SCHEMA "S-T" AUTHORIZATION TOM
CREATE TABLE TAB1(COL1 INT, COL2 INT);

【模式删除】

在 SQL 中,删除模式的 SQL 语法为:

1
DROP SCHEMA <模式名> <CASCADE|RESTRICT>;

其中 CASCADERESTRICT 二者必选其一,选择了级联(CASCADE),表示在删除模式的同时将该模式中所有的数据库对象全部删除;选择了限制(RESTRICT),表示如果该模式中已经定义了下属的数据库对象,则拒绝该删除语句的执行,仅在该模式中没有任何下属对象时,才执行该语句

例如,删除学生-课程模式 S-T,同时将该模式中定义的表 TAB1 也删除

1
DROP SCHEMA "S-T" CASCADE;
感谢您对我的支持,让我继续努力分享有用的技术与知识点!