2024年4月2日发(作者:)

约束

一、上机题

1. 在Student表中(Student表结构,参见前面《上机1》)

(1) 在Student表中创建Default约束Df_RegisterDate,当用户插入学生记录的时候,

如果没有提供RegisterDate字段的值,那么获取系统当前的日期作为默认值。

Alter table student

Add

Constraint Df_RegisterDate

Default date() for RegisterDate

(2) 在Score表中创建Check约束Ck_Math,限制用户在插入或更改数学成绩时,不能

超过0-100的范围。

Alter table score

Add

Constraint ck_math check

(math like ‘[0-100]’)

(3) 在Student表中创建Unique约束Unique_StudentCode,限制学号必须是唯一值。

Alter table student

Add

Constraint unique_studentcode

Unique nonclustered (studentcode)

(4) 在Student表中创建Unique约束Unique_StudentNamePhone,不允许出现姓名和联

系电话完全一样的学生记录。

Alter table student

Add

Constraint unique_studentnamephone

Unique(student,telphone)

(5) 在Score表的StudentCode字段创建Student表的外键约束,引用Student表的

StudentCode。

Alter table score

Add

Constraint FK_student

Foreign key (studentcode)

References student(studentcode)

2. 创建一个SQL SERVER授权用户TEST,检查这个用户是否能够访问Student数据库,

能否访问Student表,如何授权这个用户访问STUDENT数据库的Student表?

3. 分别使用SQL Server身份验证登陆和Windows身份验证登陆你的服务器。

二、思考题

1. SQL SERVER的身份验证模型有哪两个?SQL SERVER授权的用户身份有哪两个?

有windows身份验证模式和混合验证模式

2. 用户登录SQL SERVER后,是否就有能力访问数据库和表中的数据?

用户登录以后不能就访问数据库和表中的数据

3. 简述DENY许可和REVOKE许可的区别是什么?

DENY将许可授予某个用户,而REVOKE则收回DENY赋予的权利

4. 什么是数据库的完整性,关系数据库中有哪些完整性规则?解释他们的内容。

数据库完整性(Database Integrity)是指数据库中数据的正确性和相容性。

实体完整性,域完整性,引用完整性,用户定义完整性

实体完整性

实体完整性将行定义为特定表的唯一实体。实体完整性通过 UNIQUE 索引、UNIQUE 约

束或 PRIMARY KEY 约束,强制表的标识符列或主键的完整性。

域完整性

域完整性指特定列的项的有效性。您可以强制域完整性限制类型(通过使用数据类型)、限

制格式(通过使用 CHECK 约束和规则)或限制可能值的范围(通过使用 FOREIGN KEY

约束、CHECK 约束、DEFAULT 定义、NOT NULL 定义和规则)。

引用完整性

输入或删除行时,引用完整性保留表之间定义的关系。在 SQL Server 中,引用完整性通

过 FOREIGN KEY 和 CHECK 约束,以外键与主键之间或外键与唯一键之间的关系为基

础。引用完整性确保键值在所有表中一致。这类一致性要求不引用不存在的值,如果一个

键值发生更改,则整个数据库中,对该键值的所有引用要进行一致的更改。简述Default、

Check、Unique、Pirmary Key、Foreign Key约束在什么条件下会影响用户对数据表的操作?

5. 思考:是否表必须有一个主关键字才能定义该表与数据库其它表之间的关系?

6. 主关键字对应的记录字段,是否可以为空值?

主关键字对应的记录字段,不可以是空值