SQL实验报告三

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三视图、索引及数据更新

一、实验目的:

熟练掌握索引的建立与删除的方法,熟练掌握SQL的应用,熟练掌握数据插入、修改和删除的使用,为后继学习作准备。

二、实验属性

验证性

三、实验要求

1.预习教材第三章,熟悉SQL语句。

2.熟悉SQL Server环境。

3.掌握建立索引的两种方法,即在基本表中建立和用命令方式建立。

4.掌握删除索引的方法。

5.掌握sql视图建立、修改和删除;

6.掌握sql视图查询。

7.掌握sql数据插入、修改和删除语句的一般格式及使用方法。

四、实验原理

SQL语言应用。

五、实验步骤:

1 建立索引

例3.1为学生选课数据库中的Students,Courses,Reports三个表建立索引。其中Students 表按Sno(学号)升序建唯一索引,Courses表按Cno(课程号)升序建唯一索引,Reports表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。命令:

CREA TE UNIQUE INDEX Stusno ON Student(Sno);

CREA TE UNIQUE INDEX Coucno ON Course(Cno);

CREA TE UNIQUE INDEX SCno ON SC(SnoASC,Cno DESC);

例 3.2 在基本表Students的Sname(姓名)和Sno(学号)列上建立一个聚簇索引,而且Students中的物理记录将按照Sname值和Sno值的升序存放。命令:

CREA TE CLUSTERED INDEX Stu_snamesno ON Student(Sname,Sno);

2删除索引

例3.3删除基本表Reports上的索引。命令:DROP INDEX SC.SCno

3 建立视图

例3.4建立数学系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。命令:

CREA TE VIEW Smath AS SELECT Sno,Sname,Sage,Sdept FROM Student WHERE Sdept='数学'

例3.5建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)的视图。命令:

CREA TE VIEW SSCG AS SELECT Student.Sno,Student.Sname,ame,SC.Grade FROM Student,SC,Course WHERE Student.Sno=SC.Sno AND o=o

例3.6定义一个反映学生出生年份的视图。命令:

CREA TE VIEW SBirth(Sname,Birthday) AS SELECT Sname,2010-Sage FROM Student

4 删除视图

例3.7删除例3.6建立的视图。命令:DROP VIEW SBirth

5 查询视图

例3.8在数学系的学生视图中找出年龄(Sage)小于20岁的学生姓名(Sname)和年龄(Sage)。命令:SELECT Sname,Sage FROM Smath WHERE Sage<20

例3.9在例3.5建立的视图中查询成绩在85分以上的学生学号(Sno)、姓名(Sname)和课程名称(Cname)。命令:SELECT Sname,Sno,Cname FROM SSCG WHERE Grade>85

6 更新视图

例3.10将数学系学生视图中学号为“S05”的学生姓名改为“黄海”。命令:UPDA TE Smath SET Sname='黄海' WHERE Sno='S05'

例 3.11向数学系学生视图中插入一个新的学生记录,其中学号为“S09”,姓名为“王海”,年龄为20岁。命令:INSERT INTO Smath V ALUES ('S09','王海','20','数学') 例 3.12删除数学系学生视图中学号为“S09”的记录。命令:DELETE FROM Smath WHERE Sno='S09'

7 插入数据

例3.13设数据库中已有一个关系History_Student,其关系模式与Students完全一样,试将关系Students中的所有元组插入到关系History_Student中去。命令:INSERT INTO History_Student SELECT * FROM Student

8 修改数据

例3.14将学号为“S03”的学生年龄改为22岁,即要修改满足条件的一个元组的属性值。命令:UPDA TE Student SET Sage='22' WHERE Sno='S03'

例3.15将所有学生的年龄增加1岁。即要修改多个元组的值。命令:UPDA TE Student SET Sage=Sage+1

例 3.16将数学系所有学生的成绩置零。命令:UPDA TE SC SET Grade='0' WHERE SnoIN(SELECT Sno FROM Smath)

9 删除数据

例3.17删除学号为“S04”的学生选修的课号为“C02”的记录。命令:DELETE FROM SC WHERE Sno='S04' AND Cno='C02'

例3.18删除所有学生的选课记录。命令:DELETE FROM SC

例 3.19删除数学系所有学生的选课记录。命令:DELETE FROM SC WHERE Sno IN(SELECT Sno FROM Smath)

相关文档
最新文档