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”附近有语法错误的原因
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!