SQL 模式

本文最后更新于:2024年3月18日 凌晨

SQL 模式

定义模式

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

注意:

  • 如果没有指定<模式名>,那么<模式名>隐含为<用户名>
  • 要创建模式,调用该命令的用户必须拥有数据库管理员权限,或者获得了数据库管理员授予的CREATE SCHEMA的权限。
  • 定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表,视图,索引等。
  • 目前,在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW,和GRSNT子句。也就是说用户可以在创建模式的同时在这个模式定义中进一步创建基本表,视图,定义授权。

[例3.1]:为用户WANG定义一个学生-课程模式S-T

1
CREATE SCHEMA"S-T" AUTHORIZATION WANG default character set utf8mp4;

[例3.2]

1
CREATE SCHEMA AUTHORIZATION WANG default character set utf8mp4;;

该语句没有指定<模式名>,所以<模式名>隐含为用户名WANG

[例3.3]:为用户ZHANG创建一个模式TEST,并且在其中定义一个表TAB1

1
2
3
4
5
6
7
CREATE SCHEMA TEST AUTHORIZATION ZHANG  default character set utf8mp4;
CREATE TABLE TAB1(COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2)
);

删除模式

1
2
DROP SCHEMA<模式名><CASCADE|RESTRICT>;
(SQL SERVER不区分)

其中CASCADE和RESTRICT两者必选其一,选择了CASCADE(级联),表示在删除模式的同时把该模式中所有的数据库对象全部删除;选择了RESTRICT(限制),表示如果该模式中已经定义了下属的数据库对象(如表,视图等),则拒绝该删除语句的执行,只有当该模式没有任何下属对象时才能执行DROP SCHEMA语句。

[例3.4]

1
DROP SCHEMA ZHANG CASCADE

该语句删除了模式ZHANG,同时,该模式中已经定义的表TAB1也被删除了。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!