mysql实验视图与索引_视图和索引(数据库实验4)【借鉴实操】

《视图和索引(数据库实验4)【借鉴实操】》由会员分享,可在线阅读,更多相关《视图和索引(数据库实验4)【借鉴实操】(11页珍藏版)》请在人人文库网上搜索。

1、数据库基础与实践实验报告实验四 视图和索引班级:惠普测试142 学号:1408090213姓名:闫伟明日期:2016-11-131 实验目的:1) 掌握SQL进行视图创建的方法;2) 掌握SQL进行视图更新的方法,理解视图更新受限的原因;3) 掌握SQL进行索引创建及删除的方法。2 实验平台:操作系统:Windows xp。实验环境:SQL Server 2000以上版本。3 实验内容与步骤利用实验一创建的sch_id数据库完成下列实验内容。1. 定义视图V_TCS(定义时不加with check option),存放全部计算机系老师的信息。视图定义代码:CREATE VIEW V_TCS A。

2、S SELECT tno,tn,sex,age,prof,sal,comm,T.dno FROM T,D WHERE T.dno=D.dno AND D.dn=计算机 视图查询语句与查询结果截图:SELECT * FROM V_TCS2. 定义视图V_sal,存放全体教师的教师号,教师姓名,教师酬金(工资+岗位津贴),职称信息。视图定义代码:CREATE VIEW V_sal AS SELECT tno 教师号,tn 教师姓名,sal+comm 教师酬金,prof 支撑信息 FROM T视图查询语句与查询结果截图:SELECT * FROM V_sal3. 向V_TCS中插入一条计算机专业教师。

3、的新记录,并查询V_TCS视图的全部记录。视图更新代码:INSERT INTO V_TCS SELECT T10,良瑗,女,20,讲师,6000,8000,D.dno FROM D WHERE D.dn=计算机视图查询语句与查询结果截图:SELECT * FROM V_TCS4. 向V_TCS中插入一条信息专业教师的新记录,并查询V_TCS视图的全部记录。视图更新代码:INSERT INTO V_TCS SELECT T11,百里登风,男,21,讲师,6000,8000,D.dno FROM D WHERE D.dn=信息视图查询语句与查询结果截图:SELECT * FROM V_TCSSEL。

4、ECT * FROM T WHERE tno=T115. 修改V_TCS中的记录,使得编号为t2的教师的职称为副教授。视图更新代码:UPDATE V_TCS SET prof=副教授 WHERE tno=T2 视图查询语句与查询结果截图:SELECT * FROM V_TCS WHERE tno=T26. 定义视图V_ TCS_ck(定义时加with check option),存放全部计算机系老师的信息,对比该视图与V_TCS在进行数据更新时的差别。视图定义代码:CREATE VIEW V_TCS_ck AS SELECT tno,tn,sex,age,prof,sal,comm,T.dno。

5、 FROM T,D WHERE T.dno=D.dno AND D.dn=计算机WITH CHECK OPTION视图更新对比实验代码及运行结果截图:-1.能插入INSERT INTO V_TCS_ckSELECT T12,良莠,女,20,讲师,4000,4000,D.dno FROM D WHERE D.dn=计算机-2.不能插入(视图CHECK OPTION约束)INSERT INTO V_TCS_ckSELECT T13,天明,男,25,讲师,4000,4000,D.dno FROM D WHERE D.dn=信息7. 在课程C表的课程名属性上按降序创建唯一索引I_cn。索引定义代码:C。

6、REATE INDEX I_cn ON C(cn DESC)运行结果截图:8. 删除C表上的索引I_cn。索引删除代码:DROP INDEX C.I_cn运行结果截图:4 深入思考与讨论1) 请先自己定义一个视图,使定义该视图的查询中使用连接。再更新该视图,观察视图更新受限情况。-1.定义:CREATE VIEW V_SC AS SELECT sn,S.sno,cn,score FROM S,C,SC WHERE S.sno=SC.sno AND C.cno=SC.cno-2.查询:SELECT * FROM V_SC-3.均无法插入(插入影响到多张表):INSERT INTO V_SC VA。

7、LUES(笑笑,S1,JAVA,99)INSERT INTO V_SC VALUES(笑笑,S1,RUBY,99)INSERT INTO V_SC VALUES(良垣,S15,JAVA,99)INSERT INTO V_SC VALUES(良莠,S1,JAVA,99) SELECT * FROM V_SC WHERE sno=S1-4.可以更新(修改分数只影响到SC一张表):UPDATE V_SC SET V_SC.score=99 WHERE V_SC.cn=大学英语 AND V_SC.sno=S1SELECT * FROM V_SC WHERE sno=S1-5.无法更新年龄(视图V_SC。

8、不包含age列):UPDATE V_SC SET age=18 WHERE V_SC.sno=S1-6.无法更新,修改会影响到S和SC两张表:UPDATE V_SC SET sn=韩笑,score=98 WHERE V_SC.sno=S1 -7.将成绩为NULL的课程名设为NULL,更新失败(遵守基表C的cn列的NOT NULL约束):UPDATE V_SC SET cn=NULL WHERE score IS NULL2) 请先自己定义一个视图,使定义该视图的查询带分组和集函数。再更新该视图,观察视图更新受限情况。-1.定义:CREATE VIEW V_SC_gp AS SELECT sn,S.sno,AVG(score) avg_scoreFROM S,C,SC WHERE S.sno=SC.sno AND C.cno=SC.cnoGROUP BY sn,S.sno-2.查询:SELECT * FROM V_SC_gp-3.无法插入:INSERT INTO V_SC_gp VALUES(刘静,S8,88)-4.无法更新(avg_score集函数列):UPDATE V_SC_gp SET avg_score=88 WHERE sn=小明-5.无法更新(视图包含聚集函数、GROUP BY子句):UPDATE V_SC_gp SET sn=小小云 WHERE sn=小明11cl借鉴。

你可能感兴趣的:(mysql实验视图与索引)