数据库实验三 数据库安全性与完整性实验(SQL入门教学三 从0到1)
实验三
前言
- 实验内容和要求
数据库的安全性实验,在 SQL Server中,设置 SQL Server的安全认证模式,实现对SQL Server的用户和角色管理,设置和管理数据操作权限。
具体内容如下:
设置SQL Server服务器身份验证模式(Windows或SQL Server和Windows(S) 认证模式)
登录的管理
创建一个SQL Server登录名,系统会自动生成同登录名的用户名
- 数据库用户的管理
给用户授权,授权时必须是超级用户(在windows账户或者sa账户下)才可以进行。给用户授予某些表的相关操作权限
- 角色的管理
创建一个角色,使创建的用户成为该角色的成员,并授予一定的操作权限
5.在课程表的“课程名”字段上定义唯一约束
6.在选课表的“成绩”字段上定义check约束,使之必须大于等于0且小于等于100。“课程号”字段只能输入数字字符
7.(1)在学生表中定义主键、外键约束
(2)定义完整性约束命名子句,限制学生表的“性别”字段,使之只能取“男、女”值
(3)在学生表中增加出生日期字段,使出生年月的默认值取当前日期
- 参考教材《数据库系统概论第五版》==P141-P151 数据加密 P158P167 数据库完整性==
- 实验前,先熟悉常用的语句,方便理解以下代码(个人整理,如有错误,欢迎指正)
SQL知识点
一、授权:授予与收回
列权限 | 含义 |
---|---|
SELECT | 查询表 |
REFERENCES | 约束表 |
INSERT | 用户可以插入一个元组 |
UPDATE | 修改表 |
DELETE | 删除表 |
ALL PRIVILEGES | 所有权限 |
1.GRANT
GRANT <权限>,<权限>..... |
2.REMOVE
GRANT <权限>,<权限>..... |
二、数据库的完整性
1.参照完整性
NO ACTION: 不允许该操作执行,该策略一般设置为默认策略
CASCADE:当删除或者修改被参照表中的一个元组导致与参照表不一致时,删除或修改参照表中的所有导致不一致的元组
设为空值:当删除或者修改被参照表中的一个元组导致与参照表不一致时,将造成不一致的元组设为空值
CREATE TABLE SC( |
2.用户定义的完整性
2.1属性约束条件
NOT NULL: 列值非空
UNIQUE: 列值唯一
CHECK: 检查列值是否满足一个表达式
CREATE TABLE SC( |
2.2元组约束条件
与属性约束条件相比,元组级的约束可以设置不同属性之间的取值的相互约束条件
CREATE TABLE Student( |
3.完整性约束命名子句
以上的完整性约束条件都在CREATE TABLE
语句中定义,SQL还在CREATE TABLE
语句中提供了完整性约束命名子句CONSTRAINT
,从而灵活的增加、删除一个完整性约束条件
CONSTRAINT <完整性约束条件名><完整性约束条件>
3.1子句
CREATE TABLE Student( |
3.2删除约束
ALTER TABLE Student |
实验内容
1.设置SQL Server服务器身份验证模式(Windows或SQL Server和Windows(S) 认证模式)
1.1键鼠操作
首先打开新建登录名
按下图依次填写
1.2SQL语句
---创建SQL Server登录名 |
2.登录的管理
2.1键鼠操作
创建一个SQL Server登录名,系统会自动生成同登录名的用户名
首先打开数据库用户窗口
按下图,将user用户加入学籍管理数据库中,并命名用户名为U1(也可以为user)
创建好后,刷新
2.2SQL语句
---创建数据库用户 |
3.数据库用户的管理
给用户授权,授权时必须是超级用户(在windows账户或者sa账户下)才可以进行。给用户授予某些表的相关操作权限
---授权U1查询和插入权限 |
---授权所有权限给U1 |
4.角色的管理
角色同样可以使用键鼠,方法与上面相同,不做赘述
创建一个角色,使创建的用户成为该角色的成员,并授予一定的操作权限
---创建角色R1,授权查询,更新,插入权限 |
---授权R1删除权限 |
---移除R1查询权限 |
5.在课程表的“课程名”字段上定义唯一约束
CREATE TABLE Course1 |
6.在选课表的“成绩”字段上定义check约束,使之必须大于等于0且小于等于100。“课程号”字段只能输入数字字符
CREATE TABLE SC1 |
7.
(1)在学生表中定义主键、外键约束
CREATE TABLE SC1 |
(2)定义完整性约束命名子句,限制学生表的“性别”字段,使之只能取“男、女”值
CRATE TABLE Student |
(3)在学生表中增加出生日期字段,使出生年月的默认值取当前日期
Alter TABLE Student1 ADD birthday DATE DEFAULT getdate(); |
思考题
1.角色的作用是什么?
数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合,因此以一组具有相同权限的用户创建一个角色,使用角色管理数据库权限可以简化授权的过程
2.数据库用户和windows用户有何不同?
windows用户是通过windows登录账号的相关权限登录,数据库用户是通过sqlserver程序自身创建的用户登录