实验七 完整性约束的创建
一、实验目的
理解数据库完整性约束的概念,掌握SQL Server 2008的完整性约束的类型及相应的创建技术。
二、实验内容
1、定义和管理主键约束。
2、定义和管理唯一性约束。
3、定义和管理检查约束。
4、定义和管理外键约束。
5、定义和管理默认值约束。
三、实验指导
在关系数据库中,实体完整性约束、参照完整性约束和域完整性约束是必须满足的完整性约束条件。在SQL Server中,通过建立“约束”等措施来实现数据完整性约束,约束包括:主键(PRIMARY KEY)约束、唯一性(UNIQUE)约束、检查(CHECK)约束、默认值(DEFAULT)约束和外键(FOREIGN KEY)约束。约束的建立可以通过对象资源管理器进行操作,也可以利用T-SQL语句进行设置。
(一)主键(PRIMARY KEY)约束
主键约束指在表中定义一个主键来唯一标识表中每一行数据。
1、在SQL Server Management Studio中设置和修改主键
在表设计器中,单击要定义为主键的列的行选择器(如果要选择多列,在单击其他列的行选择器时按住Ctrl键)。然后右键单击该列的行选择器,选择“设置主键”命令,自动创建名为“PK_”(后跟表名)的主键索引。如图7.1所示。
2、利用T-SQL语句定义和修改主键
实验7.1 在教学管理数据库JXGL中创建学生表S的同时定义主键。
在数据库引擎查询文档中输入以下语句:
USE JXGL
GO
CREATE TABLE S
(
Sno char(8) PRIMARY KEY,
Sname char(8),
Sex char(2),
Sage smallint,
Sdept varchar(50)
)
GO
注意:如果要设置多列的组合为主键,需要把主键定义为表级完整性约束。
图7.1 利用表设计器管理主键
实验7.2 在定义数据表S时没有定义主键,则需要添加主键。
在数据库引擎查询文档中输入以下语句:
USE JXGL
GO
ALTER TABLE S
ADD CONSTRAINT PK_Sno PRIMARY KEY clustered(Sno)
GO
单击“执行”按钮则执行该程序段,这样就创建了名字为PK_Sno的主键。
(2)唯一性(UNIQUE)约束
为了确保列中的值是唯一的,需要设置唯一性约束。用户可以对一列或者多列定义唯一性约束,但这些列必须都定义为NOT NULL。
1、在SQL Server Management Studio中设置唯一性约束
实验7.3 在学生表S中的Sname列上设置UNIQUE约束。
步骤如下:
①在S表设计器中右键单击,在弹出的快捷菜单中选择“索引/键”命令,弹出“索引/键”对话框。
②在弹出的“索引/键”对话框中单击“添加”按钮,添加新的主/唯一键或索引;然后在“常规”栏的“类型”右边选择“唯一键”,在列的右边单击 按钮,选择列名Sname和排序规律ASC(升序)或DESC(降序),如图7.2所示。
图7.2 “索引/键”对话框
③设置完成后,单击“关闭”按钮返回表设计器窗口,然后单击工具栏中的“保存”按钮,完成唯一性约束的创建。
2、创建唯一约束sql语句用T-SQL语句定义或修改唯一性约束
在创建表时可以将唯一性约束作为CREATE TABLE 语句的一部分来定义,也可以在创建表之后用ALTER TABLE语句添加这些约束。
实验7.4 在课程表C中的Cname列上设置UNIQUE约束。
在数据库引擎查询文档中输入以下语句:
USE JXGL
GO
CREATE TABLE C
(
Cno char(4) NOT NULL PRIMARY KEY,
Cname char(20) NOT NULL CONSTRAINT UN_Cname UNIQUE,
Credit float,
Pcno char(4),
Describe varchar(100)
)
GO
执行该SQL语句,在定义表S的同时创建了名称为UN_Cname的唯一性约束。
实验7.5 在定义数据表C时没有定义Cname上的唯一性约束,用SQL语句添加唯一性约束。
在数据库引擎查询文档中输入以下语句:
USE JXGL
GO
ALTER TABLE C
ADD CONSTRAINT UN_Cname UNIQUE (Cname)
GO
(三)检查(CHECK)约束
CHECK约束将用户输入到特定列的数据限制为指定的值。可以在单列或多列上声明CHECK约束,只有单列CHECK约束可以和列一起定义,而且一列只能定义一个CHECK约束,涉及多列的CHECK约束作为CREATE TABLE语句中单独的元素。一个约束可以有多种逻辑表达式,它们可以和and或or一起使用。
1、使用SQL Server Management Studio创建CHECK约束
实验7.6为学生表S中添加年龄为15~30岁的约束。
打开表设计器窗口,可以单击工具栏中的 ,此时会弹出一个对话框,用来设置CHECK约束,如图7.3所示。
图7.3 设置Check约束
用户可以在表达式中输入设置的约束条件,然后设置该CHECK约束是否强制用于Insert和Update,是否强制用于复制,是否在创建或重新启用时检查现有数据。选择“是”,然后将该数据表保存。如果试图向表中插入不符合条件的记录,系统会提示插入不能成功。
2、使用T-SQL语句创建CHECK约束
实验7.7 在创建成绩表SC时创建成绩为0~100的约束。
在数据库引擎查询文档中输入以下语句:
USE JXGL
GO
CREATE TABLE SC
(
Sno char(8),
Cno char(4),
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论