资源描述
实验三 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) PRIMARY 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 表增加“入学时间”列(列名为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添加列级完整性约束,取值唯一,不能为空
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表的主码约束时出现错误,原因是在创建各个表时已经定义了主码约束,因此再次建立时失败。
(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(检查)约束。
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
实验报告完毕!
展开阅读全文