1、实验三 SQL语言的DDL 实验报告实验任务1.打开数据库SQL Server 2008的查询分析器,用Create Table建表Student,course,sc。数据库的名称为“学生选课”,各个表结构如教材P85页所示。以下要求用T-SQL来实现:创建student表:CREATE table Student(Sno CHAR(9) PRIMARY KEY, Sname CHAR(20) UNIQUE, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) );创建course表:CREATE TABLE Course (Cno CHAR(4) PRIM
2、ARY KEY, Cname CHAR(40), Cpno CHAR(4), Credit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Course(Cno) );创建sc表:CREATE TABLE SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY(Sno,Cno), FOREIGN KEY(Sno) REFERENCES Student(Sno), FOREIGN KEY(Cno) REFERENces Course(Cno) );2.向表中填入教材P82数据。3.向Student 表增加
3、“入学时间”列(列名为Scome,日期型)ALTER TABLE Student ADD Scome DATE;4.将年龄的数据类型改为整型。ALTER TABLE Student ALTER COLUMN Sage INT;5. 为Student中Sname添加列级完整性约束,不能为空。为Student中Sno添加列级完整性约束,取值唯一,不能为空。Sname添加列级完整性约束,不能为空ALTER TABLE Student ADD CONSTRAINT c1 CHECK(Sname IS NOT NULL);图示为插入元组时Sname列内为空时数据输入失败:Sno添加列级完整性约束,取值唯
4、一,不能为空ALTER TABLE Student ADD CONSTRAINT c2 UNIQUE(Sno)ALTER TABLE Student ADD CONSTRAINT c3 CHECK(Sno IS NOT NULL);6. 删除Student中Sname 列级完整性。ALTER TABLE Student DROP CONSTRAINT c1;7.为SC按学号升序和课程号降序建立唯一索引。CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);8. 建立Student、Course及SC的主码约束。在建立Student、Course、SC
5、表的主码约束时出现错误,原因是在创建各个表时已经定义了主码约束,因此再次建立时失败。(1)Student表主码约束建立失败(2)Course表主码约束建立失败(3)SC表主码约束建立失败9.建立 Student与SC、Course与SC之间的外码约束。ALTER TABLE SC ADD CONSTRAINT C5 FOREIGN KEY(Sno) REFERENCES Student(Sno)ALTER TABLE SC ADD CONSTRAINT C6 FOREIGN KEY(Cno) REFERENCES Course(Cno);10.实现学生性别只能是“男”或“女”的Check(检查
6、)约束。ALTER TABLE Student ADD CONSTRAINT C7 CHECK (Ssex IN(男,女)11.实现学生年龄只能小于等于30大于17的语义约束。ALTER TABLE Student ADD CONSTRAINT C8 CHECK (Sage 17 AND Sage=30)12. 用Create Index对表student的Sname字段建立一个升序索引,索引名Indexs。CREATE UNIQUE INDEX Indexs ON Student(Sname)13用Drop Index删除索引Indexs。DROP INDEX Student.Indexs实验报告完毕!