实验三 索引和视图.docx

上传人:b****0 文档编号:9006209 上传时间:2023-05-16 格式:DOCX 页数:14 大小:278.17KB
下载 相关 举报
实验三 索引和视图.docx_第1页
第1页 / 共14页
实验三 索引和视图.docx_第2页
第2页 / 共14页
实验三 索引和视图.docx_第3页
第3页 / 共14页
实验三 索引和视图.docx_第4页
第4页 / 共14页
实验三 索引和视图.docx_第5页
第5页 / 共14页
实验三 索引和视图.docx_第6页
第6页 / 共14页
实验三 索引和视图.docx_第7页
第7页 / 共14页
实验三 索引和视图.docx_第8页
第8页 / 共14页
实验三 索引和视图.docx_第9页
第9页 / 共14页
实验三 索引和视图.docx_第10页
第10页 / 共14页
实验三 索引和视图.docx_第11页
第11页 / 共14页
实验三 索引和视图.docx_第12页
第12页 / 共14页
实验三 索引和视图.docx_第13页
第13页 / 共14页
实验三 索引和视图.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验三 索引和视图.docx

《实验三 索引和视图.docx》由会员分享,可在线阅读,更多相关《实验三 索引和视图.docx(14页珍藏版)》请在冰点文库上搜索。

实验三 索引和视图.docx

实验三索引和视图

实验三索引和视图

一、实验目的

1.掌握利用SSMS和T—SQL语句创建和删除索引的两种方法。

2.掌握利用SSMS和T—SQL语句创建、查询、更新及删除视图的方法。

二、实验要求

1.能认真独立完成实验内容;

2.实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作;

3.验后做好实验总结,根据实验情况完成实验报告。

情况完成总结报告。

三、实验学时

  2学时

四、实验内容

1、用T—SQL建立一个“学生选课数据库”,在此基础上用SQL语句建立该数据库包含的学生表,课程表,学生选修表:

学生表:

Student(Sno,Sname,Ssex,Sage,Sdept)其中Sno为主键且Sname不能为空值,且取值唯一、Ssex只能取值男或女、Sage在15到30之间:

Sno

Sname

Ssex

Sage

Sdept

S01

S02

S03

S04

S05

S06

王建平

刘华

范林军

李伟

黄河

长江

21

19

18

19

18

20

自动化

自动化

计算机

数学

数学

数学

 

createdatabase选课数据库

use选课数据库

createtablestudent(snochar(5)primarykey,

snamechar(10)notnullunique,

ssexchar(3)constraintssex_chcheck(ssexin('男','女')),

sageintnotnullconstraintsage_chcheck(sagebetween15and30),

sdeptchar(10))

课程表:

Course(Cno,Cname,Cpno,Credeit)其中Cno为主键

Cno

Cname

Cpno

Credit

C01

英语

NULL

4

C02

数据结构

C05

2

C03

数据库

C02

2

C04

DB_设计

C03

3

C05

C++

NULL

3

C06

网络原理

C07

3

C07

操作系统

C05

3

createtablecourse(cnochar(5)primarykey,

cnamechar(10)notnull,

cpnochar(5),

creditintnotnull)

insertintocourse

values('C01','英语',null,4)

insertintocourse

values('C02','数据结构','C05',2)

insertintocourse

values('C03','数据库','C02',2)

insertintocourse

values('C04','DB_设计','C03',3)

insertintocourse

values('C05','C++',null,3)

insertintocourse

values('C06','网络原理','C07',3)

insertintocourse

values('C07','操作系统','C05',3)

学生选修表:

SC(Sno,Cno,Grade)其中Sno,Cno为主键同时又为外键、Grade值在0到100;

Sno

Cno

Grade

S01

C01

92

S01

C03

84

S02

C01

90

S02

C02

94

S02

C03

82

S03

C01

72

S03

C02

90

S04

C03

75

createtablesc(snochar(5)notnull,

cnochar(5)notnull,

gradeintconstraintgrade_chcheck(gradebetween0and100),

primarykey(sno,cno),

constraintfk_snoforeignkey(sno)referencesstudent(sno),

constraintfk_cnoforeignkey(cno)referencescourse(cno))

insertintosc

values('S01','C01',92)

insertintosc

values('S01','C03',84)

insertintosc

values('S02','C01',90)

insertintosc

values('S02','C02',94)

insertintosc

values('S02','C03',82)

insertintosc

values('S03','C01',72)

insertintosc

values('S03','C02',90)

insertintosc

values('S04','C03',75)

2.索引的建立、删除

①用SSMS的方式为Student表按Sno(学号)升序建唯一索引

②用T—SQL语句为Course表按Cno(课程号)升序建唯一索引,

createuniqueindexcourse_cno

oncourse(cnoasc)

③用T—SQL语句为SC表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。

createuniqueindexsc_sno_cno

onsc(snoasc,cnodesc)

④能否用T—SQL语句再为表Students的Sname(姓名)和Sno(学号)列上建立一个聚簇索引?

若不能说明原因?

不能,因为student表中主键sno唯一,则已默认存在聚集索引,而每个表只能有一个聚集索引,故不能再建立另一个聚集索引。

⑤用T—SQL语句删除基本表SC上的唯一索引。

dropindexsc_sno_cno

onsc

3.用T—SQL完成如下视图的建立、查询、修改及删除

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

createviewc_student

asselectsno,sname,sage,sdept

fromstudent

wheresdept='数学'

withcheckoption

2)用SSMS的方式建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)的视图Student_CR。

3)定义一个反映学生出生年份的视图Student_birth(Sno,Sname,Sbirth)。

createviewstudent_birth

asselectsno,sname,2013-sageas'sbirth'

fromstudent

go

4)建立先修课程为空的课程视图v_course

createviewv_course

asselectcno,cname

fromcourse

wherecpnoisnull

go

5) 建立成绩高于90分的女生成绩视图v_F_grade(包括学号,姓名,课程号及成绩列)

createviewv_f_grade

asselectstudent.sno,sname,o,grade

fromstudent,sc,course

wherestudent.sno=sc.snoando=o

andssex='女'andgrade>90

go

6)建立视图S_AVGAGE(其中包括性别SSEX与平均年龄AVG_AGE两列)用以反映男生、女

生的平均年龄

createviews_avgage

asselectssex,avg(sage)as'avg_age'

fromstudent

groupbyssex

7)对前面创建的视图S_AVGAGE执行更新操作:

UPDATES_AVGAGE

SETAVG_AGE=85

WHERE ssex='女'

上述语句能否成功执行?

为什么?

对视图或函数'S_AVGAGE'的更新或插入失败,因其包含派生域或常量域。

8)在数学系的学生视图C_Student中找出年龄(Sage)小于20岁的学生姓名(Sname)和年龄

(Sage)。

selectsname,sage

fromc_student

wheresage<20

9)在Student_CR视图中查询成绩在85分以上的学生学号(Sno)、姓名(Sname)和课程名称

(Cname)。

selectsno,sname,cname

fromstudent_cr

wheregrade>85

10)将数学系学生视图C_Student中学号为S05的学生姓名改为“黄海”。

updatec_student

setsname='黄海'

wheresno='S05'

11)向数学系学生视图C_Student中插入一个新的学生记录,其中学号为“S09”,姓名为“王海”,年龄为20岁。

insertintoc_student(sno,sname,sage,sdept)

values('S09','王海',20,'数学')

12)删除数学系学生视图C_Student中学号为“S09”的记录。

delete

fromc_student

wheresno='S09'

四、思考题

1.在一个表中可以有多个聚簇索引吗?

为什么?

聚簇索引也叫簇类索引,是一种对磁盘上实际数据重新组织以按指定的一个或多个列的值排序。

由于聚簇索引的索引页面指针指向数据页面,所以使用聚簇索引查找数据几乎总是比使用非聚簇索引快。

每张表只能建一个聚簇索引,并且建聚簇索引需要至少相当该表120%的附加空间,以存放该表的副本和索引中间页。

2.视图有哪些优点?

使用视图的优点如下:

 

查询的简单性:

将复杂的查询(如多表的连接查询)定义为视图,保留了用户所关心的数据内容,剔除了那些不必要的冗余数据,使其数据环境更加容易控制,从而达到简化用户浏览和操作的目的; 

安全保护:

数据库管理员可以在限制表用户的基础上进一步限制视图用户,可以为各种不同的用户授予或撤销在视图上的操作权限,这样,视图用户只能查询或修改他们各自所能见到的数据,从而保证数据库中数据的安全; 

掩盖数据库的复杂性:

使用视图可以把数据库的设计和用户的使用屏蔽开来,当基本表发生更改或重新组合时,只需要修改视图的定义即可。

用户还能够通过视图获得和数据库中的表一致的数据。

3.总结创建视图的方法有几种,各种方法实现的步骤,各举一例实现。

两种。

一种是SSMS创建,另一种是T—SQL语句创建。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2