《SQL Server 2005实用教程》实验答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二
2.实验内容
(1)
CREA TE DA TABASE StuInfo
ON
PRIMARY (NAME = StuInfo _Data,,
FILENAME = 'D:\ StuInfo.Mdf',
SIZE =3MB,
MAXSIZE = 10MB,
FILEGROWTH =1 MB)
LOG ON
(NAME = StuInfo _Log,
FILENAME = 'D:\ StuInfo _Log.Ldf',
SIZE = 1MB,
MAXSIZE =5MB,
FILEGROWTH = 1MB)
GO
(2)
--创建学生表T_Student
USE Stuinfo
GO
CREATE TABLE t_student(
S_number char(8) NOT NULL PRIMARY KEY,
S_name char(10) NOT NULL,
Sex char(2) NULL CHECK(Sex='男' or Sex='女'),
Birthday datetime ,
Nation nvarchar(10) ,
Politics varchar(10) ,
Department nvarchar(12) ,
Address varchar(60) ,
PostalCode nvarchar(10) ,
Phone varchar(24) ,
)
--创建课程表T_Course
USE Stuinfo
GO
CREATE TABLE t_course(
C_number char(4) NOT NULL PRIMARY KEY,
C_name char(10) NOT NULL,
Teacher char(10) ,
Hours int NOT NULL,
Credit int ,
Type nvarchar(12) ,
)
--创建课程表T_Score
USE Stuinfo
GO
CREATE TABLE t_score(
S_number char(8) NOT NULL REFERENCES t_student (S_number),
C_number char(4) NOT NULL REFERENCES t_course (C_number),
Score numeric(5, 1) CHECK(Score>=0 and Score<=100),
CONSTRAINT PK_t_score PRIMARY KEY (S_number ,C_number) )
(3)在SSMS中打开表,按照表3.15、3.16、3.167的内容直接输入数据即可。
(4)
INSERT INTO t_score
VALUES('040104','2',70)
显示错误信息,不能保存该条记录。因为T_Score表的S_Number列与表T_Student 的S_Number列存在着外键约束关系,而表T_Student不存在S_Number为040104的记录。
(5)
INSERT INTO t_score
VALUES('040104','2',70)
能执行,向t_score表添加了该条数据。
(6)
update dbo.t_student
set S_number='040105'
where S_number='040101'
显示错误信息,不能修改该条记录。因为T_Score表的S_Number列与表T_Student 的S_Number列存在着外键约束关系,而表T_Score存在S_Number为'040101'的记录,为保证表T_Score数据的完整性,不能修改表T_Student中S_Number为'040101'的记录。
(7)
delete t_course
where C_number='5'
显示错误信息,不能删除该条记录。因为T_Score表的C_Number列与表T_Course 的C_Number列存在着外键约束关系,为保证表T_Score数据的完整性,不能删除表
T_Course中C_Number为5的记录。
(8)
法一:首先删除T_Score表中C_Number=’5’的所有记录,然后再删除表T_Course 中C_Number为5的记录。
法二:修改T_Score表与T_Course表关于C_Number的外键约束,设置其“INSERT 和UPDATE规范”的“删除规则”为“层叠”。
(9)
USE Stuinfo
ALTER TABLE t_student
ADD CONSTRAINT CK_Politics CHECK(Politics='中共党员' or Politics='团员' or Politics='民主党派' or Politics='群众')
ALTER TABLE t_student
ADD CONSTRAINT DF_Politics DEFAULT('团员') FOR Politics
(10)
EXEC SP_DETACH_DB 'Stuinfo', 'true'
EXEC SP_ATTACH_DB 'Stuinfo','C:\StuInfo.Mdf'
实验三
3.实验步骤
(1)
USE stuinfo
go
SELECT * FROM t_student ORDER BY s_number DESC
(2)
USE stuinfo
go
SELECT s_name 姓名, birthday 出生日期,year(getdate())-year(birthday) 年龄,
c_name 课程名称, score 成绩
FROM t_student,t_course,t_score
WHERE t_student.s_number=t_score.s_number
and t_course.c_number=t_score.c_number