您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页视图和索引(数据库实验4)之欧阳引擎创编

视图和索引(数据库实验4)之欧阳引擎创编

来源:爱go旅游网
欧阳引擎创编 2021.01.01

数据库基础与实践实验报告

欧阳引擎(2021.01.01)

实验四 视图和索引

班级:惠普测试142 学号:1408090213 姓名:闫伟明

日期:2016-11-13

1 实验目的:

1) 2) 3)

掌握SQL进行视图创建的方法;

掌握SQL进行视图更新的方法,理解视图更新受限的原因; 掌握SQL进行索引创建及删除的方法。

2 实验平台:

操作系统:Windows xp。

实验环境:SQL Server 2000以上版本。 3 实验内容与步骤

利用实验一创建的sch_id数据库完成下列实验内容。

1.

定义视图V_TCS(定义时不加with check option),存放全部计算机系老师的信息。

视图定义代码:

CREATEVIEWV_TCSAS

SELECTtno,tn,sex,age,prof,sal,comm,T.dno

欧阳引擎创编 2021.01.01

欧阳引擎创编 2021.01.01

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='计算机'

视图查询语句与查询结果截图: SELECT*FROMV_TCS

4.

向V_TCS中插入一条信息专业教师的新记录,并查询

欧阳引擎创编 2021.01.01

欧阳引擎创编 2021.01.01

V_TCS视图的全部记录。 视图更新代码: INSERTINTOV_TCS

SELECT'T11','百里登风','男',21,'讲师',6000,8000,D.dno FROMD

WHERED.dn='信息'

视图查询语句与查询结果截图: SELECT*FROMV_TCS

SELECT*FROMTWHEREtno='T11'

5.

修改V_TCS中的记录,使得编号为t2的教师的职称为副教授。

视图更新代码:

UPDATEV_TCSSETprof='副教授'WHEREtno='T2' 视图查询语句与查询结果截图: SELECT*FROMV_TCSWHEREtno='T2'

6.

定义视图V_TCS_ck(定义时加with check option),存放全部计算机系老师的信息,对比该视图与V_TCS在进行数据更新时的差别。

视图定义代码:

CREATEVIEWV_TCS_ckASSELECTtno,tn,sex,age,prof,sal,comm,T.dno FROMT,D

欧阳引擎创编 2021.01.01

欧阳引擎创编 2021.01.01

WHERET.dno=D.dnoANDD.dn='计算机' WITHCHECKOPTION

视图更新对比实验代码及运行结果截图: --1.能插入

INSERTINTOV_TCS_ck

SELECT'T12','良莠','女',20,'讲师',4000,4000,D.dno FROMD

WHERED.dn='计算机'

--2.不能插入(视图CHECK OPTION约束) INSERTINTOV_TCS_ck

SELECT'T13','天明','男',25,'讲师',4000,4000,D.dno FROMD

WHERED.dn='信息'

7.

在课程C表的课程名属性上按降序创建唯一索引I_cn。

索引定义代码:

CREATEINDEXI_cnONC(cnDESC) 运行结果截图:

8.

删除C表上的索引I_cn。

索引删除代码: DROPINDEXC.I_cn 运行结果截图: 4 深入思考与讨论

欧阳引擎创编 2021.01.01

欧阳引擎创编 2021.01.01

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) INSERTINTOV_SCVALUES('笑笑','S1','RUBY',99) INSERTINTOV_SCVALUES('良垣','S15','JAVA',99) INSERTINTOV_SCVALUES('良莠','S1','JAVA',99) SELECT*FROMV_SCWHEREsno='S1'

--4.可以更新(修改分数只影响到SC一张表):

UPDATEV_SCSETV_SC.score=99 WHEREV_SC.cn='大学英语'ANDV_SC.sno='S1'

SELECT*FROMV_SCWHEREsno='S1'

--5.无法更新年龄(视图V_SC不包含age列): UPDATEV_SCSETage=18 WHEREV_SC.sno='S1' --6.无法更新,修改会影响到S和SC两张表:

欧阳引擎创编 2021.01.01

欧阳引擎创编 2021.01.01

UPDATEV_SCSETsn='韩笑',score=98 WHEREV_SC.sno='S1' --7.将成绩为NULL的课程名设为NULL,更新失败(遵守基表C的cn列的NOTNULL约束):

UPDATEV_SCSETcn=NULLWHEREscoreISNULL

2) 请先自己定义一个视图,使定义该视图的查询带分组和集函

数。再更新该视图,观察视图更新受限情况。

--1.定义:

CREATEVIEWV_SC_gpAS

SELECTsn,S.sno,AVG(score)avg_score FROMS,C,SC

WHERES.sno=SC.snoANDC.cno=SC.cno

GROUPBYsn,S.sno --2.查询:

SELECT*FROMV_SC_gp --3.无法插入:

INSERTINTOV_SC_gpVALUES('刘静','S8',88) --4.无法更新(avg_score集函数列):

UPDATEV_SC_gpSETavg_score=88 WHEREsn='小明' --5.无法更新(视图包含聚集函数、GROUP BY子句): UPDATEV_SC_gpSETsn='小小云'WHEREsn='小明'

欧阳引擎创编 2021.01.01

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务