中南民族大学 数据库实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二数据完整性技术
一、实验目的和要求
1.熟悉SQL Server2005的开发环境;
2.熟悉SQL Server Management Studio 的基本操作,进一步理解数据库、表、
表间关系的概念。
3.掌握数据完整性的设置方法。
二、实验内容
1.利用SQL Server Management Studio 创建数据库,名称为【TMIS】;
2.在【TMIS】中建立数据表,表的定义可参考【实验指导书说明】中表的定义。要求定义每张表的主键,为属性选择合适的数据类型,决定是否允许为空,为【性别】属性定义默认值,并设置相关的约束条件。
3.定义表之间的关系。
4.分别为表录入几行数据记录,同时练习数据的修改和删除操作。
三、实验步骤
1、主键约束
1) 将Student表中的Sno定义为主键。
CREATE TABLE Student
(Sno CHAR(10) PRIMARY KEY,
Sname CHAR(8) NOT NULL,
Ssex CHAR(2),
Sbirth Smalldatetime,
Dno CHAR(4)
);
2) 将Department表中的Dno定义为主键。
CREATE TABLE Department
( Dno char(4) PRIMARY KEY,
Dname varchar(20) NOT NULL
);
3)将Course表中的Cno定义为主键。
CREATE TABLE Course
( Cno char(8) PRIMARY KEY,
Cname varchar(30) NOT NULL,
Cpno char(8),
Ccredit Tinyint
)
4)将SC表中的Sno,Cno定义为主键。
CREATE TABLE Course SC
( Sno char(10) NOT NULL,
Con char(8) NOT NULL
Grade Decimal(5,2),
PRIMARY KEY (Sno,Cno)
)
5)将Teacher表中的Tno定义为主键。
CREATE TABLE Teacher
( Tno char(7) PRIMARY KEY,
Tname varchar(8) NOT NULL,
Dno char(8) NOT NULL,
Tbirth Smalldatetime,
Ttitle varchar(10)
)
6)将SC表中的Sno,Cno 定义为主键。
CREATE TABLE Course SC
( Sno char(10) NOT NULL,
Con char(8) NOT NULL
Grade Decimal(5,2),
PRIMARY KEY (Sno,Cno)
)
2、非空约束
1)将Student表中的Sno,Sname定义为非空
Sno char(10) NOT NULL
Sname VARCHAR(8) NOT NULL
2)将Department表中的Dno,Dname定义为非空Dno char(4) NOT NULL
Dname varchar(20) NOT NULL
3)将Course表中的Cno,Cname定义为非空
Cno char(8) NOT NULL
Cname varchar(30) NOT NULL
4)将SC表中的Sno,Cno定义为非空
Sno char(10) NOT NULL
Cno char(8) NOT NULL
5)将Teacher表中的Tno,Tname, Dno定义为非空
Tno char(7)
Tname varchar(8)
Dnochar(4)
6)将Teaching表中的Tno,Cno定义为非空
Tno char(7)
Cno char(8)
3、外键约束
1) 定义表SC的外键:其中Sno是参照表Student的主键,Cno是参照表Course
的主键,并定义层叠删除关系。
2) 通过插入操作验证外键约束;
3) 层叠删除相关记录
CREATE TABLE SC
(
Sno CHAR(10) NOT NULL,
Cno CHAR(8) NOT NULL,
Grade Decimal(5,2),
PRIMARY KEY(Sno,Cno), --定义主码
FOREIGN KEY(Sno) REFERENCES Student(Sno), --Sno参照表Student的主码
FOREIGN KEY(Cno) REFERENCES Course(Cno) --Cno参照表Course的主码
);
ALTER TABLE table_name
ADD
CONSTRAINT constraint_name
FOREIGN KEY( column [ ,…n] )
REFERENCES ref_table( ref_column[ ,…n] )
Drop schema SC cascade
4、唯一值约束
设置系表(Department)中的Dname取值唯一。
Dname V ARCHAR(20) UNIQUE
5、CHECK约束
指定列值应该满足的条件:设置表Student的Ssex属性值只允许取“男”或“女”;设置表SC的Grade属性值定义在0-100 之间。
Ssex CHAR(2) CHECK (Ssex IN ('男','女'))
CHECK(Grade>=0 AND Grade<=100)