SQL Server-- 模式(schema)

本文最后更新于:2022年4月10日 晚上

概览:SQL Server的模式定义与删除。

参考学习书籍:数据库系统概论(第五版) 王珊、萨师煊编著

使用数据库版本:Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64)

管理工具:Microsoft SQL Server Managment Studio 17

模式

定义模式就相当定义一个命名空间,在该空间内可以进一步定义该模式包含的数据库对象,如基本表、视图、索引等。

一个数据库中可以建立多个模式,一个模式通常包括多个表、视图和索引等数据库对象。

正常使用的SQL Server在数据库内创建的表都是dbo开头的。因为我们正常使用的数据库用户名是dbo。如下图所示。

引图

模式创建

创建模式定义时,调用该命令的用户必须拥有管理员权限,否则无法创建。而且不能为登录名创建模式,必须是具体的数据库的用名。

管理员权限才能创建,必须使用数据库用户名

参考链接:sql-server(模式创建)

创建用户

你的当前数据库下/安全性/用户,在此用户下,右键新建用户,我选择的是不带登录名的用户,只填写了用户名。

引图

创建模式

创建模式: create schema 模式名 authorization 用户名

当然模式名可以省略,省略时模式名默认为用户名。

create schema cc authorization colourso

执行成功后,右键用户名查看其属性,查看拥有的架构即可看到定义的模式cc

引图

authorization 美: [.ɔθərɪ’zeɪʃ(ə)n] n. 授权;批准

使用模式创建表

创建表时要加上指定的模式,即 模式.表名

create table cc.Stu(
Sname char(20),
Sno char(10) primary key
);

引图

这样就可以创建表名相同,但是模式不同的表了。

删除模式(课本)

drop schema 模式名 cascade/restrict 

cascade(级联)/restrict(限制)两者必须二选一。

**cascade(级联)**:在删除模式时同时把该模式的所有数据库对象都删除

**restrict(限制)**: 如果该模式已经定义了下属的数据库对象,则该删除指令无法执行。

cascade 英: [kæ’skeɪd] n.级联;阶梯;

restrict 美: [rɪ’strɪkt] v. 限制;约束;

删除模式

上面的代码在SQLServer中貌似并不能执行使用。百度了有人说‘SQL Server里drop schema语句并不支持cascade关键字’,不知道是不是真的😂。

drop schema 模式名

在SQLServer中直接使用上面语句进行删除,如果该模式没被使用就可以直接删除,否则需要先删除该模式的数据库对象才能删除。

参考链接:CSDN-₩※※:-)逆行:sql-server(模式创建)

SQL Server “DROP TABLE 表名 CASCADE” 显示”CASCADE”附近有语法错误的原因

SQL Server在删除表时并不区分RESTRICT或是CASCADE。

既然不支持,那为何又能识别CASCADE为关键字呢?

事实上在SQL Server中CASCADE关键字用于在建表操作时预先建立级联关系(通常和DENY关键字配合使用,所以报有语法错),建表后执行DROP操作时就不需要用户再指定删除模式了。

参看链接:SQL Server “DROP TABLE 表名 CASCADE” 显示”CASCADE”附近有语法错误的原因