广东海洋大学_计算机科学与技术_数据库实验3
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GDOU-B-11-112广东海洋大学学生实验报告书(学生用表)
实验名称实验3 索引和视图课程名称数据库系统原理课程号1620072学院(系) 信息学院专业计科班级 1113
学生姓名学号实验地点科技楼实验日期04-26
实验三索引和视图
一、实验目的
1.掌握利用SSMS和T—SQL语句创建和删除索引的两种方法。
2.掌握利用SSMS和T—SQL语句创建、查询、更新及删除视图的方法。
二、实验要求
1.能认真独立完成实验内容;
2.实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作;
3.验后做好实验总结,根据实验情况完成实验报告。情况完成总结报告。
三、实验学时
2学时
四、实验内容
1、用T—SQL建立一个“学生选课数据库”,在此基础上用SQL语句建立该数据库包含的学生
表,课程表,学生选修表:
CREATE DATABASE学生选课数据库
ON PRIMARY
(
NAME=Student_dat,
FILENAME='D:\学生选课数据库.mdf',
SIZE=10MB,
MAXSIZE=50MB,
FILEGROWTH=10%
)
LOG ON
(
NAME=Student_log,
FILENAME='D:\学生选课数据库.ldf',
SIZE=5MB,
FILEGROWTH=10%
)
GO
学生表:Student
CREATE TABLE Student(
Sname CHAR(10),
Ssex CHAR(2)CHECK(Ssex='男'OR Ssex='女'),
Sage SMALLINT CHECK(Sage BETWEEN 15 AND 30),
Sdept CHAR(20)
);
INSERT INTO Student( Sno ,Sname,Ssex,Sage,Sdept ) VALUES('S01','王建平','男',21,'自动化') INSERT INTO Student( Sno ,Sname,Ssex,Sage,Sdept ) VALUES('S02','刘华','女',19,'自动化')
INSERT INTO Student( Sno ,Sname,Ssex,Sage,Sdept ) VALUES('S03','范林军','女',18,'计算机') INSERT INTO Student( Sno ,Sname,Ssex,Sage,Sdept ) VALUES('S04','李伟','男', 19 ,'数学'); INSERT INTO Student( Sno ,Sname,Ssex,Sage,Sdept ) VALUES('S05','黄河','男',18,'计算机')
INSERT INTO Student( Sno ,Sname,Ssex,Sage,Sdept )
VALUES('S06','长江','男', 20 ,'数学');
课程表:Course
CREATE TABLE Course(
Cno CHAR(4)PRIMARY KEY,
Cname CHAR(10)NOT NULL,
Cpno CHAR(4),
Credit INT CHECK(Credit>=0 AND Credit<=100),
Teacher NCHAR(4)
);
INSERT INTO Course ( Cno,Cname,Cpno,Credit )
VALUES('C01','英语',NULL, 4 )
INSERT INTO Course ( Cno,Cname,Cpno,Credit )
VALUES('C02','数据结构','C05',2)
INSERT INTO Course ( Cno,Cname,Cpno,Credit )
VALUES('C03','数据库','C02',2)
INSERT INTO Course ( Cno,Cname,Cpno,Credit )
VALUES('C04','DB_设计','C03',3)
INSERT INTO Course ( Cno,Cname,Cpno,Credit )
VALUES('C05','C++',NULL,3)
INSERT INTO Course ( Cno,Cname,Cpno,Credit )
VALUES('C06','网络原理','C07',3)
INSERT INTO Course ( Cno,Cname,Cpno,Credit )
VALUES('C07','操作系统','C05',3)
学生选修表:SC
CREATE TABLE SC(
Sno char(10)FOREIGN KEY REFERENCES Student(Sno), Cno CHAR(4)FOREIGN KEY REFERENCES Course(Cno), Grade INT CHECK( Grade>=0 AND Grade<=100 ),
);
INSERT INTO SC ( Sno,Cno,Grade)
VALUES('S01','C01',92)
INSERT INTO SC ( Sno,Cno,Grade)
VALUES('S01','C03',84)
INSERT INTO SC ( Sno,Cno,Grade)
VALUES('S02','C01',90)
INSERT INTO SC ( Sno,Cno,Grade)
VALUES('S02','C02',94)
INSERT INTO SC ( Sno,Cno,Grade)
VALUES('S02','C03',82)
INSERT INTO SC ( Sno,Cno,Grade)
VALUES('S03','C01',72)
INSERT INTO SC ( Sno,Cno,Grade)
VALUES('S03','C02',90)
INSERT INTO SC ( Sno,Cno,Grade)
VALUES('S03','C03',75)
2.索引的建立、删除
①用SSMS的方式为Student表按Sno(学号)升序建唯一索引
②用T—SQL语句为Course表按Cno(课程号)升序建唯一索引,
CREATE UNIQUE INDEX课程号
ON Course(Cno ASC)
③用T—SQL语句为SC表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。
CREATE UNIQUE INDEX PK_SC
ON SC(Sno ASC,Cno DESC)
④能否用T—SQL语句再为表Students的Sname(姓名)和Sno(学号)列上建立一个聚簇索引?若不能说
明原因?
答:不能,因为一个表只能由一个聚集索引。
⑤用T—SQL语句删除基本表SC上的唯一索引。
DROP INDEX SC.PK_SC