网页制作与网站建设技术大全 pdf公司形象vi设计
news/
2025/10/8 17:50:14/
文章来源:
网页制作与网站建设技术大全 pdf,公司形象vi设计,网站推广软文公司,企业品牌推广营销方案目录
一.基本查询回顾
二. 多表查询
三.自连接
四.子查询
1.单行子查询
2.多行子查询
3.多列子查询
4.在from子句中使用子查询
5.合并查询 一.基本查询回顾
准备数据库#xff1a; 查询工资高于500或岗位为MANAGER的雇员#xff0c;同时还要满足他们的姓名首字母为…目录
一.基本查询回顾
二. 多表查询
三.自连接
四.子查询
1.单行子查询
2.多行子查询
3.多列子查询
4.在from子句中使用子查询
5.合并查询 一.基本查询回顾
准备数据库 查询工资高于500或岗位为MANAGER的雇员同时还要满足他们的姓名首字母为大写的J 按照部门号升序而雇员的工资降序排序 使用年薪进行降序排序 显示工资最高的员工的名字和工作岗位 显示工资高于平均工资的员工信息
显示每个部门的平均工资和最高工资 显示平均工资低于2000的部门号和它的平均工资 显示每种岗位的雇员总数平均工资 二. 多表查询
实际开发中往往数据来自不同的表所以需要多表查询。本节我们用一个简单的公司管理系统有三张表EMP,DEPT,SALGRADE来演示如何进行多表查询。
显示雇员名、雇员工资以及所在部门的名字因为上面的数据来自EMP和DEPT表因此要联合查询:
例如
select * from emp,dept; 这种将多个表的数据进行组和穷举我们称为笛卡尔积。
但是我们发现表里面有很多不合法的数据所以我们需要将数据筛选出合法的数据。
其实我们只要emp表中的deptno dept表中的deptno字段的记录
select * from emp,dept where emp.deptnodept.deptno;显示部门号为10的部门名员工名和工资
select dname,ename,sal from emp,dept where emp.deptnodept.deptno and emp.deptno10; 显示各个员工的姓名工资及工资级别
select ename,sal,losal,hisal,grade from emp,salgrade where sal between losal and hisal; 三.自连接
自连接是指在同一张表连接查询.
案例 显示员工FORD的上级领导的编号和姓名mgr是员工领导的编号--empno
子查询
select empno,ename from emp where emp.empno(select mgr from emp where ename FORD); 使用多表查询自查询
select t1.ename,t2.empno from emp t1,emp t2 where t1.enameFORD and t1.mgrt2.empno ;四.子查询
子查询是指嵌入在其他sql语句中的select语句也叫嵌套查询.
1.单行子查询
显示SMITH同一部门的员工: 2.多行子查询
返回多行记录的子查询:
in关键字
例如 a in { b },将a在b中筛选出来。
查询和10号部门的工作岗位相同的雇员的名字工岗位资部门号但是不包含10自己的
select ename,job,sal,deptno from emp where job in (select job from emp where deptno10) and deptno 10;all关键字
all{集合}表示某一个集合中的全部元素。
显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号
select ename,sal,deptno from emp where sal all(select sal from emp where deptno30);any关键字
any{集合} 集合中的任意一个。
显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号包含自己部门的员工
select ename,sal,deptno from emp where sal any(select sal from emp where deptno30);3.多列子查询
单行子查询是指子查询只返回单列单行数据多行子查询是指返回单列多行数据都是针对单列而言的而多列子查询则是指查询返回多个列数据的子查询语句。
案例查询和SMITH的部门和岗位完全相同的所有雇员不含SMITH本人 4.在from子句中使用子查询
子查询语句出现在from子句中。这里要用到数据查询的技巧把一个子查询当做一个临时表使用。
案例显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资
select ename,deptno,sal,tmp.myavg from emp,(select avg(sal) myavg,deptno dt from emp group by deptno) tmp where salmyavg and deptno dt ;查找每个部门工资最高的人的姓名、工资、部门、最高工资
select ename,deptno,sal,maxsal,tmp.dt from emp,(select max(sal) maxsal,deptno dt from emp group by deptno) tmp where deptnotmp.dt and saltmp.maxsal; 显示每个部门的信息部门名编号地址和人员数量
select dept.dname,dept.deptno,dept.loc,total from (select count(*) total ,deptno from emp group by deptno) tmp,dept where tmp.deptnodept.deptno;5.合并查询
在实际应用中为了合并多个select的执行结果可以使用集合操作符 unionunion all
union
该操作符用于取得两个结果集的并集。当使用该操作符时会自动去掉结果集中的重复行。
案例将工资大于2500或职位是MANAGER的人找出来 select empno,ename,job,sal from emp where sal 2500 union select empno,ename,job,sal from emp where jobMANAGER;union all
该操作符用于取得两个结果集的并集。当使用该操作符时不会去掉结果集中的重复行。
select empno,ename,job,sal from emp where sal 2500 union all select empno,ename,job,sal,sal from emp where jobMANAGER;
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/931779.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!