内容正文:
举一反三考点练
《网站数据库应用技术-SQL server》设置表约束-讲义
1. 理解数据完整性与约束分类
2. 掌握NOT NULL、DEFAULT、CHECK 约束的实战设置
3. 掌握PRIMARY KEY、UNIQUE、FOREIGN KEY 约束的实战设置
知识点一 数据完整性与约束分类
1.数据完整性概念
(1)定义:数据库中数据的准确性、一致性、正确性统称“数据完整性”。
(2)四大类型
· 实体完整性:保证每一行记录唯一且可识别,通常用 PRIMARY KEY 或 UNIQUE 实现。
· 域完整性:保证列值符合业务规则与数据类型,常见手段为 NOT NULL、CHECK、DEFAULT。
· 参照完整性:保证多表之间关联数据的一致性,由 FOREIGN KEY 约束完成。
· 用户定义完整性:根据具体业务自行设定的规则,可通过 CHECK、触发器等方式实现。
2.约束的作用与分类
(1)作用:由 SQL Server 自动强制实施,防止无效、错误或重复数据进入表。
(2)六大约束
NOT NULL:禁止 NULL 值,确保列必有数据。
DEFAULT:在插入时若未提供值,自动填充默认值。
CHECK:通过布尔表达式检查列值范围或格式。
PRIMARY KEY:唯一标识一行,列值非空且唯一。
UNIQUE:保证列或列组合值唯一,但允许一次 NULL。
FOREIGN KEY:建立两表间引用关系,确保外键值在主键表中存在。
3.约束与对象资源管理器(图形界面)
(1)打开位置:在 SSMS 中依次展开“数据库→表→具体表→列”即可查看或设置。
(2)操作习惯:
· NOT NULL:在表设计器“允许 Null 值”复选框中取消勾选。
· DEFAULT:在“列属性”窗口的“默认值或绑定”处输入常量、函数(如 getdate())。
· CHECK:在表设计器右键→“CHECK 约束”→“添加”→输入表达式。
· PRIMARY KEY:右键列→“设置主键”或工具栏按钮,列前出现钥匙图标。
· UNIQUE:右键表→“索引/键”→“添加”→类型选“唯一键”。
· FOREIGN KEY:右键表→“关系”→“添加”→设定主键表、外键表及关联列。
4.约束与 T-SQL(ALTER TABLE 语法)
(1)通用格式
ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束类型 (列或表达式)
(2)删除格式
ALTER TABLE 表名 DROP CONSTRAINT 约束名
(3)注意:
· 主键列必须先设 NOT NULL;
· 外键列与主键列数据类型必须一致;
· 不同数据库内对象可重名,同一数据库内需唯一命名。
5.小提示与易错点
(1)NULL 不等于 0 或空字符串,仅表示“未知”。
(2)一张表只能有一个主键,但可有多个 UNIQUE 和 CHECK。
(3)设置 FOREIGN KEY 时,若主键表中无对应值,插入或更新外键表会失败。
(单项选择题)以下关于数据完整性的描述,正确的是( )
A. 数据完整性仅包括实体完整性和域完整性
B. 数据完整性仅包括参照完整性和用户定义完整性
C. 数据完整性包括实体完整性、域完整性、参照完整性和用户定义完整性
D. 数据完整性仅包括实体完整性和参照完整性
【答案】C
【解析】数据完整性包括实体完整性、域完整性、参照完整性和用户定义完整性。
【要点】考查数据完整性的分类。
1.(单项选择题)以下关于 PRIMARY KEY 约束的描述,正确的是( )
A. 禁止列值为空 B. 在插入时若未提供值,自动填充默认值
C. 确保列值唯一且非空 D. 建立两表之间的引用关系
【答案】C
【解析】PRIMARY KEY 约束用于确保列值唯一且非空,通常用于唯一标识表中的每一行。
【要点】考查 PRIMARY KEY 约束的作用。
2.(单项选择题)以下关于 UNIQUE 约束的描述,正确的是( )
A. 禁止列值为空 B. 在插入时若未提供值,自动填充默认值
C. 确保列值唯一,但允许一次 NULL D. 建立两表之间的引用关系
【答案】C
【解析】UNIQUE 约束用于确保列值唯一,但允许一次 NULL。
【要点】考查 UNIQUE 约束的作用。
3.(单项选择题)以下关于 FOREIGN KEY 约束的描述,正确的是( )
A. 禁止列值为空 B. 在插入时若未提供值,自动填充默认值
C. 确保列值唯一 D. 建立两表之间的引用关系,确保外键值在主键表中存在
【答案】D
【解析】FOREIGN KEY 约束用于建立两表之间的引用关系,确保外键值在主键表中存在。
【要点】考查 FOREIGN KEY 约束的作用。
1.(判断题)实体完整性通过 PRIMARY KEY 或 UNIQUE 约束实现,用于保证每一行记录唯一且可识别( )
【答案】√
【解析】实体完整性通过 PRIMARY KEY 或 UNIQUE 约束实现,用于保证每一行记录唯一且可识别。
【要点】考查实体完整性的实现方式。
2.(判断题)域完整性通过 NOT NULL、CHECK、DEFAULT 约束实现,用于保证列值符合业务规则与数据类型( )
【答案】√
【解析】域完整性通过 NOT NULL、CHECK、DEFAULT 约束实现,用于保证列值符合业务规则与数据类型。
【要点】考查域完整性的实现方式。
3.(填空题)域完整性通过___________、___________、___________约束实现,用于保证列值符合业务规则与数据类型。
【答案】NOT NULL,CHECK,DEFAULT
【解析】域完整性通过 NOT NULL、CHECK、DEFAULT 约束实现,用于保证列值符合业务规则与数据类型。
【要点】考查域完整性的实现方式。
· 实体完整性:通过 PRIMARY KEY 或 UNIQUE 确保每行唯一。
域完整性:通过 NOT NULL、CHECK、DEFAULT 限制列值。
参照完整性:通过 FOREIGN KEY 确保关联数据一致。
用户定义完整性:通过 CHECK 或触发器实现自定义规则。
· 约束作用:防止无效或错误数据进入表。
· 约束类型:
NOT NULL:禁止空值。DEFAULT:提供默认值。CHECK:限制值范围。PRIMARY KEY:唯一标识行。UNIQUE:列值唯一。FOREIGN KEY:引用其他表的主键。
· 设置约束:
图形界面:通过 SSMS 表设计器或“索引/键”设置。
T-SQL:ALTER TABLE 添加或删除约束。
· 注意:主键列必须非空,外键列与主键列数据类型必须一致。
知识点二 NOT NULL、DEFAULT、CHECK 约束的实战设置
1.NOT NULL 约束
(1)目的:强制列必须输入数据,常用于主键、标识或业务必填字段。
(2)图形界面操作
·打开表设计器→取消列的“允许 Null 值”勾选→保存。
(3)T-SQL 操作
ALTER TABLE 表名 ALTER COLUMN 列名 类型 NOT NULL;
若需取消,将 NOT NULL 改为 NULL。
(4)案例
·“图书信息”表的 ISBN 列:NOT NULL,防止出现空主键。
·“学生信息”表的学号、姓名列:NOT NULL,确保学生记录完整。
2.DEFAULT 约束
(1)目的:减少数据录入工作量,自动提供默认值。
(2)图形界面操作
· 在“列属性→默认值或绑定”处输入常量、函数或表达式→保存。
(3)T-SQL 操作
ALTER TABLE 表名 ADD CONSTRAINT 约束名 DEFAULT 默认值 FOR 列名;
删除:ALTER TABLE 表名 DROP CONSTRAINT 约束名;
(4)案例
· “图书信息”类别列:DEFAULT '工业技术'。
· “图书库存”入库日期列:DEFAULT getdate(),记录系统自动写入时间。
· “学生信息”性别列:DEFAULT '男';是否内宿列:DEFAULT '是'。
3.CHECK 约束
(1)目的:对列值进行逻辑检查,只有满足布尔表达式才允许写入。
(2)图形界面操作
· 右键表→“CHECK 约束”→“添加”→在“表达式”框输入条件→保存。
(3)T-SQL 操作
ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK (布尔表达式);
删除:ALTER TABLE 表名 DROP CONSTRAINT 约束名;
(4)案例
· “图书信息”定价列:CHECK (定价 >= 0)。
· “图书库存”图书状态列:CHECK (图书状态 IN ('在藏','借出'))。
· “学生成绩”成绩列:CHECK (成绩 BETWEEN 0 AND 100)。
· “学生信息”性别列:CHECK (性别 IN ('男','女'));是否内宿列:CHECK (是否内宿 IN ('是','否'))。
5.综合技巧
(1)一个列可同时具有 NOT NULL、DEFAULT、CHECK 多重约束,互不冲突。
(2)表达式中可使用 AND、OR、BETWEEN、IN 等逻辑运算符,但不能引用其他表列。
(3)若需修改 CHECK 表达式,先删除旧约束再新建。
(单项选择题)在 SQL Server 中,设置 DEFAULT 约束时,以下说法正确的是( )
A. DEFAULT 约束只能设置常量值 B. DEFAULT 约束可以设置函数值,如 getdate()
C. DEFAULT 约束必须在列定义时设置 D. DEFAULT 约束不能设置为 NULL
【答案】B
【解析】DEFAULT 约束可以设置为常量值、函数值(如 getdate())或其他表达式。它可以在列定义时设置,也可以通过 ALTER TABLE 语句添加。
1.(单项选择题)在 SQL Server 中,设置 CHECK 约束时,以下说法正确的是( )
A. CHECK 约束只能限制列值为正数 B. CHECK 约束可以限制列值范围或格式
C. CHECK 约束必须在列定义时设置 D. CHECK 约束不能包含逻辑运算符
【答案】B
【解析】CHECK 约束可以限制列值范围或格式,支持使用逻辑运算符(如 AND、OR、BETWEEN、IN 等)。
【要点】考查 CHECK 约束的设置。
2.(单项选择题)在 SQL Server 中,以下关于 NOT NULL 约束的描述,正确的是( )
A. NOT NULL 约束可以自动提供默认值 B. NOT NULL 约束用于确保列值唯一
C. NOT NULL 约束用于强制列必须有数据 D. NOT NULL 约束可以限制列值范围
【答案】C
【解析】NOT NULL 约束用于强制列必须有数据,不能有空值。它不提供默认值,也不限制列值范围。
【要点】考查 NOT NULL 约束的作用。
3.(单项选择题)在 SQL Server 中,以下关于 DEFAULT 和 CHECK 约束的描述,正确的是( )
A. DEFAULT 约束和 CHECK 约束不能同时设置 B. DEFAULT 约束可以限制列值范围
C. CHECK 约束可以自动提供默认值 D. DEFAULT 约束和 CHECK 约束可以同时设置
【答案】D
【解析】DEFAULT 约束和 CHECK 约束可以同时设置。DEFAULT 约束用于提供默认值,而 CHECK 约束用于限制列值范围。
【要点】考查 DEFAULT 和 CHECK 约束的设置。
1.(判断题)在 SQL Server 中,NOT NULL 约束用于强制列必须有数据,不能有空值( )
【答案】√
【解析】NOT NULL 约束用于强制列必须有数据,不能有空值。
【要点】考查 NOT NULL 约束的作用。
2.(判断题)在 SQL Server 中,DEFAULT 约束可以在列定义时设置,也可以通过 ALTER TABLE 语句添加( )
【答案】√
【解析】DEFAULT 约束可以在列定义时设置,也可以通过 ALTER TABLE 语句添加。
【要点】考查 DEFAULT 约束的设置。
3.(填空题)在 SQL Server 中,CHECK 约束用于限制列值范围,支持使用逻辑运算符,如___________、___________、___________、___________等。
【答案】AND,OR,BETWEEN,IN
【解析】CHECK 约束用于限制列值范围,支持使用逻辑运算符,如 AND、OR、BETWEEN、IN 等。
【要点】考查 CHECK 约束的设置。
· NOT NULL:强制列必须有数据。
图形界面:取消“允许 Null 值”勾选。
T-SQL:ALTER TABLE 表名 ALTER COLUMN 列名 类型 NOT NULL。
· DEFAULT:自动提供默认值。
图形界面:在“列属性”中输入默认值。
T-SQL:ALTER TABLE 表名 ADD CONSTRAINT 约束名 DEFAULT 默认值 FOR 列名。
· CHECK:限制列值范围。
图形界面:右键表→“CHECK 约束”→输入表达式。
T-SQL:ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK (布尔表达式)。
· 综合技巧:一个列可同时设置多种约束。修改 CHECK 表达式需先删除旧约束再新建。
知识点三 PRIMARY KEY、UNIQUE、FOREIGN KEY 约束的实战设置
1.PRIMARY KEY(主键)约束
(1)作用:唯一标识表中每一行,值必须非空且唯一;自动创建聚集索引。
(2)图形界面操作
· 在表设计器选中列→右键“设置主键”或工具栏钥匙按钮→列前出现钥匙图标→保存。
(3)T-SQL 操作
ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (列或列组合);
删除:ALTER TABLE 表名 DROP CONSTRAINT 约束名;
(4)注意:
· 一张表只能有一个主键;
· 主键列必须先设 NOT NULL;
· 多列组合主键时,所有列均需非空。
2.UNIQUE(唯一)约束
(1)作用:确保非主键列值唯一,可含一次 NULL;自动创建唯一非聚集索引。
(2)图形界面操作
· 右键表→“索引/键”→“添加”→类型选“唯一键”→选择列→命名约束→保存。
(3)T-SQL 操作
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (列或列组合);
删除:ALTER TABLE 表名 DROP CONSTRAINT 约束名;
3.FOREIGN KEY(外键)约束
(1)作用:建立两表之间的引用关系,确保外键值在主键表中存在,从而维护参照完整性。
(2)图形界面三种入口
· 表设计器右键“关系”→“添加”→设置主键表、外键表及对应列→命名→保存;
· 或数据库关系图:新建图→添加两表→拖拽主键列到外键列→自动创建关系;
· 删除:打开“关系”或关系图→选中关系→“删除”→保存。
(3)T-SQL 操作
ALTER TABLE 外键表
ADD CONSTRAINT 约束名 FOREIGN KEY (外键列) REFERENCES 主键表(主键列);
删除:ALTER TABLE 外键表 DROP CONSTRAINT 约束名;
(4)注意:
· 主键表与外键表的关联列数据类型必须完全一致;
· 级联更新/删除规则可在“关系”对话框中设置(INSERT 和 UPDATE 规范);
· 若主键表数据被引用,删除或更新主键值默认会受限制,需先处理外键表数据。
4.综合应用技巧
(1)设计顺序:先定义主键→再设 UNIQUE→再建 FOREIGN KEY,可减少冲突。
(2)命名规范:PK_表名列名、UK_列名、FK_外键表_主键表,便于维护。
(3)可视化关系图:能一次性查看并管理多表关系,支持拖拽连线、批量保存。
(单项选择题)在 T-SQL 中,以下哪个语句用于添加 UNIQUE 约束( )
A. ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (列)
B. ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (列)
C. ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY (列) REFERENCES 主键表(主键列)
D. ALTER TABLE 表名 ADD CONSTRAINT 约束名 DEFAULT 默认值 FOR 列
【答案】B
【解析】ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (列) 用于添加 UNIQUE 约束。
【要点】考查对 T-SQL 添加 UNIQUE 约束语法的了解。
1.(单项选择题)在 T-SQL 中,以下哪个语句用于添加 FOREIGN KEY 约束( )
A. ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (列)
B. ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (列)
C. ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY (列) REFERENCES 主键表(主键列)
D. ALTER TABLE 表名 ADD CONSTRAINT 约束名 DEFAULT 默认值 FOR 列
【答案】C
【解析】ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY (列) REFERENCES 主键表(主键列) 用于添加 FOREIGN KEY 约束。
【要点】考查对 T-SQL 添加 FOREIGN KEY 约束语法的了解。
2.(单项选择题)关于 UNIQUE 约束和 PRIMARY KEY 约束的区别,以下说法正确的是( )
A. UNIQUE 约束的列值必须唯一且非空,PRIMARY KEY 约束的列值可以有 NULL
B. UNIQUE 约束的列值可以有多个 NULL,PRIMARY KEY 约束的列值必须唯一且非空
C. UNIQUE 约束的列值必须唯一,但允许有一个 NULL,PRIMARY KEY 约束的列值必须唯一且非空
D. UNIQUE 约束的列值可以重复,PRIMARY KEY 约束的列值必须唯一
【答案】C
【解析】UNIQUE 约束的列值必须唯一,但允许有一个 NULL;PRIMARY KEY 约束的列值必须唯一且非空。
【要点】考查对 UNIQUE 约束和 PRIMARY KEY 约束区别的理解。
3.(单项选择题)关于 FOREIGN KEY 约束的作用,以下说法正确的是( )
A. 用于确保外键列的值在主键表中存在,维护参照完整性
B. 用于确保外键列的值在主键表中不存在,维护数据独立性
C. 用于确保外键列的值可以任意设置,增加数据灵活性
D. 用于确保外键列的值可以重复,增加数据冗余
【答案】A
【解析】FOREIGN KEY 约束用于确保外键列的值在主键表中存在,从而维护参照完整性。
【要点】考查对 FOREIGN KEY 约束作用的理解。
1.(填空题)PRIMARY KEY 约束用于__________________表中的每一行。
【答案】唯一标识
【解析】PRIMARY KEY 约束用于唯一标识表中的每一行,确保每一行记录的唯一性和可识别性。
【要点】考查对 PRIMARY KEY 约束作用的理解。
2.(填空题)UNIQUE 约束的列值必须__________________,但允许有一个 NULL 值。
【答案】唯一
【解析】UNIQUE 约束的列值必须唯一,但允许有一个 NULL 值。
【要点】考查对 UNIQUE 约束特性的理解。
3.(判断题)FOREIGN KEY 约束用于建立表之间的引用关系,确保外键值在主键表中存在( )
【答案】√
【解析】FOREIGN KEY 约束用于建立表之间的引用关系,确保外键值在主键表中存在,从而维护参照完整性。
【要点】考查对 FOREIGN KEY 约束作用的理解。
· PRIMARY KEY:唯一标识表中每一行。
图形界面:选中列→右键“设置主键”。
T-SQL:ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (列)。
· UNIQUE:确保列值唯一,可含一次 NULL。
图形界面:右键表→“索引/键”→添加唯一键。
T-SQL:ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (列)。
· FOREIGN KEY:建立表间引用关系。
图形界面:右键表→“关系”→添加引用。
T-SQL:ALTER TABLE 外键表 ADD CONSTRAINT 约束名 FOREIGN KEY (外键列) REFERENCES 主键表(主键列)。
· 综合应用技巧:
先定义主键,再设置唯一约束,最后建立外键。命名规范:PK_表名列名、UK_列名、FK_外键表_主键表。使用可视化关系图管理多表关系。
原创精品资源学科网独家享有版权,侵权必究!2
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$