视图和索引数据库实验4Word文件下载.docx
《视图和索引数据库实验4Word文件下载.docx》由会员分享,可在线阅读,更多相关《视图和索引数据库实验4Word文件下载.docx(13页珍藏版)》请在冰点文库上搜索。
![视图和索引数据库实验4Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/83388715-98a5-4487-8a53-e32d1843e815/83388715-98a5-4487-8a53-e32d1843e8151.gif)
1)掌握SQL进行视图创建的方法;
2)掌握SQL进行视图更新的方法,理解视图更新受限的原因;
3)掌握SQL进行索引创建及删除的方法。
2实验平台:
操作系统:
Windowsxp。
实验环境:
SQLServer2000以上版本。
3实验内容与步骤
利用实验一创建的sch_id数据库完成下列实验内容。
1.定义视图V_TCS(定义时不加withcheckoption),存放全部计算机系老师的信息。
视图定义代码:
CREATEVIEWV_TCSAS
SELECTtno,tn,sex,age,prof,sal,comm,T.dno
FROMT,D
WHERET.dno=D.dnoANDD.dn='
计算机'
视图查询语句与查询结果截图:
SELECT*FROMV_TCS
2.定义视图V_sal,存放全体教师的教师号,教师姓名,教师酬金(工资+岗位津贴),职称信息。
CREATEVIEWV_salAS
SELECTtno教师号,tn教师姓名,sal+comm教师酬金,prof支撑信息
FROMT
SELECT*FROMV_sal
3.向V_TCS中插入一条计算机专业教师的新记录,并查询V_TCS视图的全部记录。
视图更新代码:
INSERTINTOV_TCS
SELECT'
T10'
'
良瑗'
女'
20,'
讲师'
6000,8000,D.dno
FROMD
WHERED.dn='
4.向V_TCS中插入一条信息专业教师的新记录,并查询V_TCS视图的全部记录。
T11'
百里登风'
男'
21,'
信息'
SELECT*FROMTWHEREtno='
5.修改V_TCS中的记录,使得编号为t2的教师的职称为副教授。
UPDATEV_TCSSETprof='
副教授'
WHEREtno='
T2'
SELECT*FROMV_TCSWHEREtno='
6.定义视图V_TCS_ck(定义时加withcheckoption),存放全部计算机系老师的信息,对比该视图与V_TCS在进行数据更新时的差别。
CREATEVIEWV_TCS_ckASSELECTtno,tn,sex,age,prof,sal,comm,T.dno
WITHCHECKOPTION
视图更新对比实验代码及运行结果截图:
--1.能插入
INSERTINTOV_TCS_ck
T12'
良莠'
4000,4000,D.dno
--2.不能插入(视图CHECKOPTION约束)
T13'
天明'
25,'
7.在课程C表的课程名属性上按降序创建唯一索引I_cn。
索引定义代码:
CREATEINDEXI_cnONC(cnDESC)
运行结果截图:
8.删除C表上的索引I_cn。
索引删除代码:
DROPINDEXC.I_cn
4深入思考与讨论
1)请先自己定义一个视图,使定义该视图的查询中使用连接。
再更新该视图,观察视图更新受限情况。
--1.定义:
CREATEVIEWV_SCAS
SELECTsn,S.sno,cn,score
FROMS,C,SC
WHERES.sno=SC.snoANDC.cno=SC.cno
--2.查询:
SELECT*FROMV_SC
--3.均无法插入(插入影响到多张表):
INSERTINTOV_SCVALUES('
笑笑'
S1'
JAVA'
99)
RUBY'
良垣'
S15'
99)
SELECT*FROMV_SCWHEREsno='
--4.可以更新(修改分数只影响到SC一张表):
UPDATEV_SCSETV_SC.score=99WHEREV_SC.cn='
大学英语'
ANDV_SC.sno='
--5.无法更新年龄(视图V_SC不包含age列):
UPDATEV_SCSETage=18WHEREV_SC.sno='
--6.无法更新,修改会影响到S和SC两张表:
UPDATEV_SCSETsn='
韩笑'
score=98WHEREV_SC.sno='
--7.将成绩为NULL的课程名设为NULL,更新失败(遵守基表C的cn列的NOTNULL约束):
UPDATEV_SCSETcn=NULLWHEREscoreISNULL
2)请先自己定义一个视图,使定义该视图的查询带分组和集函数。
--1.定义:
CREATEVIEWV_SC_gpAS
SELECTsn,S.sno,AVG(score)avg_score
GROUPBYsn,S.sno
SELECT*FROMV_SC_gp
--3.无法插入:
INSERTINTOV_SC_gpVALUES('
刘静'
S8'
88)
--4.无法更新(avg_score集函数列):
UPDATEV_SC_gpSETavg_score=88WHEREsn='
小明'
--5.无法更新(视图包含聚集函数、GROUPBY子句):
UPDATEV_SC_gpSETsn='
小小云'
WHEREsn='