内容正文:
2.3 设置表约束
网站数据库应用基础
——SQL Server 2017
同步精品课堂
高等教育出版社第2版
掌握国家标准《机械制图》中有关图幅、比例、字体图线等基本规定。
教学目标
一
01
(1)学会使用对象资源管理器给数据库表设置约束。
技能目标
02
(1) 掌握ALTER TABLE 语句给数据库表设置约束。
(2)了解表数据的完整性概念。
知识目标
教学重难点
二
掌握ALTER TABLE 语句给数据库表设置约束
学会使用对象资源管理器给数据库表设置约束
教学重点
教学难点
导入新课
三
约束
约束是指派给表列的属性,用于防止将某些类型的无效数据值放置在该列中。例如,设置 UNIQUE或 PRIMARY KEY约束防止插入重复的值,设置CHECK 约束防止插入与设置的条件不匹配的值,而设置NOT NULL约束防止插入NULL值。本任务学习对数据库中各表设置约束。
1 设置 NOT NULL 约束
新知讲授
四
NOT NULL约束可以防止在列中插入NULL (空)值,如果必须在某列中输入数据,则
应当给该列设置 NOT NULL约 束 。
案 例1 使用对象资源管理器给“图书信息管理”数据库中“图书信息”表的“ISBN ”
列 设 置 NOT NULL约束,使该列输入的数据不能为空。
1 设置 NOT NULL 约束
新知讲授
四
案 例1 使用对象资源管理器给“图书信息管理”数据库中“图书信息”表的“ISBN ”
列 设 置 NOT NULL约束,使该列输入的数据不能为空。
在对象资源管理器中依次展开“数据库” → “图书信息管理” → “表”节点,可以看 到该数据库中的所有表,右击“dbo.图书信息”表,选择“设计”命令,打开“dbo.图书 信息”表的表设计器窗口,取消勾选 “ISBN” 字 段 的 “ 允 许 Null 值”列中的复选框
1 设置 NOT NULL 约束
新知讲授
四
1. 使 用 对 象 资 源 管 理 器 给 “ 学 生 成 绩 管 理 ” 数 据 库 中 “ 学 生 信 息 ” 表 的 “ 学 号 ” 和“姓名”列设置 NOT NULL 约束,使这两列输入的数据都不能为空。
2. 使 用ALTER TABLE 语 句 给 “ 学 生 成 绩 管 理 ” 数 据 库 中 “ 学 生 成 绩 ” 表 的 “ 学 号 ”和“课程号”两列设置 NOT NULL 约束,使这两列输入的数据都不能为空。
体验活动
1 设置 NOT NULL 约束
新知讲授
四
设置 NOTNULL约束与修改列的语法是一样的。如果要使用 ALTER TABLE 语句删除 NOT NULL约束(即设置成NULL约束),其代码与设置NOT NULL约束基本一样,只是把最后的 NOT NULL 改为 NULL。
小提示
1 设置 NOT NULL 约束
新知讲授
四
数据完整性概述
数据库是一种共享资源,在数据库的使用过程中保证数据的安全、可靠、正确是非常重要的。
01
数据库完整性包括实体完整性、域完整性、参照完整性和用户定义完整性。
03
数据完整性是指数据的准确性和一致性。它是防止数据库中存在不符合语义规定的数据
和防止因错误信息的输入或输出造成无效操作而提出的。
02
1 设置 NOT NULL 约束
新知讲授
四
约束主要有: NOT NULL 约 束 、DEFAULT 约 束 、CHECK 约束、PRIMARY KEY 约束、
UNIQUE 约束、FOREIGN KEY 约束等。
约束是 SQL Server提供的自动强制数据完整性的一种方法。它通过定义列的取值规则来
维护数据的完整性。
01
02
2.约束
1 设置 NOT NULL 约束
新知讲授
四
2.约束
当某一列的值
一定要输入数据才有意义的时候,就可以为该列设置NOT NULL约束,如主键列必须不允许出现空值,否则就失去了唯一标识一条记录的作用。
NULL值既不是0也不是空白,而是表示“不确定”或“没有数据”的意思。
03
又称非空约束,用来控制是否允许该列的值为空值(即 NULL值)。
01
02
(1)NOT NULL约束
1 设置 NOT NULL 约束
新知讲授
四
2.约束
使用
默认值可以提高数据输入的速度
DEFAULT 约束可以包括常量、函数、空值等
03
又称默认约束,是指在插入操作中如果没有提供输入值时,系统根 据所设置的 DEFAULT约束自动指定值。
01
02
(2)DEFAULT 约束
1 设置 NOT NULL 约束
新知讲授
四
定义DEFAULT 约束时应注意以下几点
① 一列只能定义一个 DEFAUTL 约束
② 如果定义的默认值长度大于该列的最大长度,则输入到表中的默认值将被截断。
③ DEFAULT 约束不能定义在带有 INDENTITY 属性列(即标识列)中。
1 设置 NOT NULL 约束
新知讲授
四
2.约束
如果输入值不符合检查条件,系统将拒绝这条记录的插入 或修改。
以限制输 入值,保证数据库数据的完整性。
03
又称检查约束,对输入列或者整个表中的值设置检查条件
01
02
(3)CHECK 约束
1 设置 NOT NULL 约束
新知讲授
四
定义 CHECK约束时应注意以下几点:
① 一列可以有任意多个 CHECK 约束,并且约束条件中可以包含由AND 和 OR 组合成的
多个逻辑表达式。
② CHECK 约束中设置的条件必须为布尔表达式,并且不能引用其他表。
③ 执行INSERT 语句或者 UPDATE 语句时,检查约束将验证数据。
1 设置 NOT NULL 约束
新知讲授
四
③ 创建 PRIMARY KEY约束时, SQL Server会自动创建一个唯一的聚集索引。
④ Image 和 Text 数据类型的列不能定义为主键。
① 一个表只能定义一个 PRIMARY KEY 约束。
② 定义了 PRIMARY KEY 约束的字段的值不能重复。
(4)PRIMARY KEY 约束
1 设置 NOT NULL 约束
新知讲授
四
(5)UNIQUE 约束
1
2
① UNIQUE 约束主要用于非主键的列或列组合。
3
③ 一个表中被定义为 UNIQUE 约束的列,最多只能有一个 NULL 值。
② 一个表可以有多个 UNIQUE 约束。
1 设置 NOT NULL 约束
新知讲授
四
(6)FOREIGN KEY 约束
1
2
① 主键和外键的数据类型必须完全匹配。
3
③ FOREIGN KEY 约束不会自动创建索引。
② 一个表中最多可以定义31个 FOREIGN KEY约束。
2 设 置 DEFAULT 约 束
新知讲授
四
案 例 3 使 用 对 象 资 源 管 理 器 给 “ 图 书 信 息 管 理 ” 数 据 库 中 “ 图 书 信 息 ” 表 的 “ 类 别 ”
列设置 DEFAULT 约束,默认值为“工业技术”。
打 开 “dbo. 图书信息”表的表设计器窗口,单击选中“类别”字段,在下方“列属性”
窗口的“默认值或绑定”项中输入“工业技术”,然后保存即可
2 设 置 DEFAULT 约 束
新知讲授
四
① 如果要使用对象资源管理器删除 DEFAULT 约束,则在表设计器窗口中选择对应字
段,在下方列属性的“默认值或绑定”项中,将对应的内容删除即可。
② DEFAULT约束可以是数值、字符串,也可以是函数。在输入字符串时,单引号可以 自己输入,也可以不输入,系统会自动添加。如果输入的是数值或者函数,则不用单引号。
最常用的函数默认值是 getdate(), 它的值是指系统当前日期和时间。
小提示
2 设 置 DEFAULT 约 束
新知讲授
四
USE 图书信息管理
GO
ALTER TABLE 图书库存
ADD CONSTRAINT DF_图书状态 DEFAULT '在藏'FOR 图书状态
代码如下
案例4 使用 ALTER TABLE 语句给“图书信息管理”数据库中“图书库存”表的“图 书状态”列设置 DEFAULT约束,默认值为“在藏”,约束名称为 “DF_ 图书状态”。
2 设 置 DEFAULT 约 束
新知讲授
四
USE 图书信息管理
GO
ALTER TABLE 图书库存
ADD DEFAULT '在藏 'FOR 图书状态
代码如下
① 使 用ALTER TABLE 语句给表添加约束时,如果不需要指定约束名称,则可以省略CONSTRAINT 关键字及后面的约束名称。如在案例4中,如果不需要指定约束名称,可以把代码改写如下:
3 设置 CHECK 约束
新知讲授
四
案例5 使用对象资源管理器给“图书信息管理”数据库中“图书信息”表的“定价”
列设置 CHECK 约束,要求“定价”必须大于或者等于0。
第1步:在 “dbo. 图书信息”表的表设计器窗口上右击,在弹出的快捷菜单中选择 “CHECK 约束”命令
3 设置 CHECK 约束
新知讲授
四
案例5 使用对象资源管理器给“图书信息管理”数据库中“图书信息”表的“定价”
列设置 CHECK 约束,要求“定价”必须大于或者等于0。
第2步:在 “CHECK 约束”对话框中添加 CHECK 约束。单击“添加”按钮,然后 在“表达式”文本框中输入“定价>=0”,单击“关闭”按钮,最后保存
2 设 置 DEFAULT 约 束
新知讲授
四
1. 使用对象资源管理器给“学生成绩管理”数据库中“学生成绩”表的“成绩”列添 加 CHECK 约束,要求成绩必须是0~100的数值。
2. 使 用ALTER TABLE语句给“学生成绩管理”数据库中“学生信息”表的“性 别”和“是否内宿”两列设置 CHECK 约束,要求“性别”列只能输入“男”或者 “女”,“是否内宿”列只能输入“是”或者“否”,约束名称分别为 “CK_ 性别”和 “CK_ 是否内宿”:
小提示
4 设置PRIMARY KEY 约束
新知讲授
四
案例7 使用对象资源管理器给“图书信息管理”数据库中“图书信息”表的“ISBN ”
列设置PRIMARY KEY约束。
第1步:打开 “dbo. 图书信息”表的表设计器窗口,右击 “ISBN” 列,从弹出的快捷 菜单中选择“设置主键”命令,或者选择“ISBN” 列后单击表设计器工具栏上的“设置主 键”按钮
4 设置PRIMARY KEY 约束
新知讲授
四
案例7 使用对象资源管理器给“图书信息管理”数据库中“图书信息”表的“ISBN ”
列设置PRIMARY KEY约束。
第2步:设置完成的 “ISBN” 列的最前面会显示 图标
4 设置PRIMARY KEY 约束
新知讲授
四
① 如果向一个没有指定 PRIMARY KEY 约束的表中添加PRIMARY KEY 约束,那么指定
为 PRIMARY KEY 的一个列或多个列的组合中的所有列都必须已经指定 NOT NULL约束,否 则无法将该列或多列的组合指定为 PRIMARY KEY 约束。
小提示
4 设置PRIMARY KEY 约束
新知讲授
四
② 一般情况下,每一张表都需要一个 PRIMARY KEY 约束来唯一标识每一条记录,在案 例7和案例8中已经分别对“图书信息管理”数据库中“图书信息”和“出版社”两个表设 置了PRIMARY KEY约束,大家可以使用自己喜欢的方式给“图书库存”表的“图书序号” 列设置 PRIMARY KEY 约束。
小提示
5 设置 UNIQUE 约束
新知讲授
四
UNIQUE 约束又称为唯一性约束,使用 UNIQUE 约束可以确保在非主键列中不输入重复 的值, UNIQUE 约束和 PRIMARY 约束都强制唯一性,它们之间的区别如下:
①在一个表中可以定义多个 UNIQUE约束,但是只能定义一个 PRIMARY KEY 约束。
②定义为UNIQUE 约束的列上允许有空值,但是 PRIMARY KEY 约束的列上不允许有 空值。
01
02
6 设置 FOREIGN KEY 约束
新知讲授
四
FOREIGN KEY约束又称为外键约束,用于保证数据库各个表中数据的一致性和正确性。
1
将一个表的一列(或列组合)定义为引用其他表的主键或唯一约束列
2
则引用表中的这个列(或列组合)就称为外键。被引用的表称为主键表,引用表称为外键表。
3
FOREIGN KEY约束
6 设置 FOREIGN KEY 约束
新知讲授
四
案例11 使用对象资源管理器给“图书信息管理”数据库中“图书信息”表的“出版社号”
列 设 置 FOREIGN KEY 约 束 , 要 求 该 列 的 值 必 须 参 照 “ 出 版 社 ” 表 的 “ 出 版 社 号 ” 列 的 值 。
第1步:在 “dbo. 图书信息”表的表设计器窗口上右击,选择“关系”命令,或者在打开 了“dbo.图书信息”表的表设计器窗口后单击表设计器工具栏上的“关系”按钮
6 设置 FOREIGN KEY 约束
新知讲授
四
案例11 使用对象资源管理器给“图书信息管理”数据库中“图书信息”表的“出版社号”
列 设 置 FOREIGN KEY 约 束 , 要 求 该 列 的 值 必 须 参 照 “ 出 版 社 ” 表 的 “ 出 版 社 号 ” 列 的 值 。
第2步:在“外键关系”对话框中,先单击“添加”按钮,系统默认添加名称为“FK图书信息_图书信息”的关系
6 设置 FOREIGN KEY 约束
新知讲授
四
表创建好以后,可以通过对象资源管理器或 ALTER TABLE 语句来给表添加约束,也可以在创建表时直接给表添加约束。
在用CREATE TABLE语句创建表时直接在
列定义后添加相应的约束。
下面是一个简单的表格,概述了数据库管理系统(DBMS)的一些关键概念:
| 序号 | 概念 | 描述 |
|------|------------------|--------------------------------------------------------------|
| 1 | 数据库管理系统(DBMS) | 一种软件系统,用于创建、查询、更新和管理数据库。 |
| 2 | 数据库(Database) | 存储在DBMS中的数据集合,包含表、视图、存储过程等。 |
| 3 | 表(Table) | 数据库中的基本存储单元,由行(记录)和列(字段)组成。 |
| 4 | 索引(Index) | 用于提高数据检索速度的数据库对象。 |
| 5 | 事务(Transaction) | 一系列操作,要么全部完成,要么全部不完成,确保数据一致性。 |
| 6 | 存储过程(Stored Procedure) | 预编译的SQL语句集合,用于执行数据库操作。 |
| 7 | 触发器(Trigger) | 在特定数据库操作发生时自动执行的存储过程。 |
| 8 | 视图(View) | 虚拟的表,其内容由SQL查询定义,用于简化查询和提高安全性。 |
| 9 | SQL Server 特定概念 | 包括SSMS、SSIS、SSAS、SSRS等,提供管理和开发数据库的工具。 |
| 10 | 安全性(Security) | 包括用户认证、权限控制和加密技术,保护数据安全。 |
| 11 | 备份与恢复(Backup and Recovery) | 确保数据持久性和在故障时的数据恢复。 |
| 12 | 性能优化(Performance Tuning) | 包括查询优化、索引优化等,提高数据库性能。 |
请注意,这个表格只是一个简单的概述,每个概念都可以展开更详细的解释和讨论。
师生互动
五
将学生分成小组,按照课中所讲内容,负责总结本节课学习案例 ,以小组的形式归纳问题,下节课随机汇报。
随堂练习
六
1.以下( )选项是正确的主键约束定义。
A. PRIMARY KEY
B. UNIQUE KEY
C. FOREIGN KEY
D. CHECK
答案:A
解析: 主键(PRIMARY KEY)约束用于唯一标识数据库表中的每条记录,它保证表中每一行数据的唯一性。
随堂练习
六
2.如果你想要确保某个字段中的值在每次插入或更新时都必须存在,你应该使用( )约束。
A. NOT NULL
B. UNIQUE
C. PRIMARY KEY
D. DEFAULT
答案:A
解析: NOT NULL 约束确保字段不能包含 NULL 值,即每次插入或更新记录时,该字段必须有值。
随堂练习
六
3.以下( )约束用于防止表中的数据重复。
A. NOT NULL
B. UNIQUE
C. PRIMARY KEY
D. FOREIGN KEY
答案:B
解析: UNIQUE 约束保证表中所有记录的该字段值都是唯一的,不允许有重复值。
随堂练习
六
4.以下( )个约束用于维护两个表之间的关系。
A. PRIMARY KEY
B. UNIQUE
C. FOREIGN KEY
D. CHECK
答案:C
解析: FOREIGN KEY 约束用于在两个表之间建立关系,确保引用的数据的完整性
随堂练习
六
5.以下( )约束用于限制字段值的范围。
A. CHECK
B. UNIQUE
C. PRIMARY KEY
D. FOREIGN KEY
答案:A
解析: CHECK 约束用于限制字段的值必须满足一定的条件,比如数值范围、字符串长度等。
随堂练习
六
6.如果你想要确保一个字段的值在每次插入或更新时都必须是当前日期,你应该使用( )约束。
A. NOT NULL
B. UNIQUE
C. PRIMARY KEY
D. DEFAULT
答案:D
解析: DEFAULT 约束用于为字段设置默认值,如果插入或更新记录时没有指定该字段的值,系统会自动使用默认值。
随堂练习
六
7.以下( )约束可以确保表中的数据满足特定的业务规则。
A. CHECK
B. UNIQUE
C. PRIMARY KEY
D. FOREIGN KEY
答案:A
解析: CHECK 约束用于确保字段的值满足特定的业务规则或条件。
随堂练习
六
8.以下( )选项不是SQL中的标准约束类型。
A. PRIMARY KEY
B. FOREIGN KEY
C. UNIQUE
D. CHECK
答案:D
解析:在SQL中,PRIMARY KEY、FOREIGN KEY和UNIQUE都是标准约束类型,用于确保数据的唯一性和引用完整性。CHECK约束用于确保列中的值满足特定的条件,但它不是所有数据库系统都支持的标准约束类型。
课堂小结
七
谢谢
$$