新-实验三数据嵌套查询和视图操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三数据嵌套查询和视图操作
实验目的:
1.通过本实验能够熟练应用sql语言使用IN、比较符、ANY或ALL和EXISTS
操作符进行嵌套查询操作。
2.掌握视图的定义、查询、修改。
实验要求:
1.在进行本实验之前,应熟练课程内容,在上机之前做好实验计划,编写
好相应的代码。
2.认真填写实验报告,记录所有实验用例。
实验内容:
(一)嵌套查询
1.查询出比7654工资还高的全部雇员的信息。
2.查询出工资比7654高,同时与7788从事相同工作的全部雇员的信息。
3.查询出工资最低的雇员姓名、工作、工资。
4.查询出部门名称、部门的员工数、部门的平均工资、部门的最低收入雇
员姓名和最高收入雇员的姓名
5.查询每个部门最低工资的雇员信息。
以上解法存一个问题,当两部门中有多个相同的工资值时会产生错误的结果,为什么?
6.查询工资小于某一个部门的最低工资的员工的信息。
SELECT * FROM emp WHERE sal <ANY
(SELECT min(sal) FROM emp GROUP BY deptno)
7.用集函数实现一个查询。
(用intersect,union,minus都可以)
8.用exists实现查询部门名RESEARCH的员工的姓名。
9.查询选修了全部课程的学生姓名。
SQL语言中没有全称量词∨(,all)。
但是可以把带有全称量词的谓词转换为等价的带有存在量词的谓词。
(∨x)P≡∟(exists x(∟P))
试做:查询所有学生都选修的课程名。
10. 求至少选修了学号为“200215122”的学生所选修全部课程的学生学号和姓名。
11.求选修课程超过2门的学生的学号和姓名。
(二)视图
1.建立一个视图,此视图包含了全部的20部门的雇员信息(雇员编号empno,姓名ename,雇佣日期hiredate)。
查询此视图。
2、对视图中empno为7369的部门编号修改为30。
对更新后的视图进行查
询。
创建新的视图将部门号为20的员工信息定义为一个视图
view_30(empno,ename),并设置with check option。
更新记录测试:对视图中empno为7369的部门编号修改为30。
结果如何?
对非条件列进行更新(对视图中empno为7369的ename修改为Smith)。
结如何?
两者有什么区别
4.定义平均工资在1000元以上的员工的视图a_sal。
Create View <视图名>[(<列名>[,<列名>]…)
AS <子查询>
[ With CHECK OPTION];
视图:视图子查询中允许任意复杂的SELECT语句,但通常不允许含有Order By
子句和distinct短语。
组成视图的属性列名或者全部省略,或者全部指定。
一下三种情况必须明确指定组成视图的所有列名:
1)某个目标列不是单纯的属性名,而是聚集函数或列表达式。
2)多表连接时选出了几个同名列作为视图的字段。
3)需要为某个列启用新的更合适的名字。
With CHECK OPTION 表示对视图进行update、insert(除外)、delete操作时要
保证更新、插入或删除的行满洲子查询中的条件表达式。
(三)思考题:
1.带有with check option的视图在更新、插入、删除的操作中应该注意哪
些。