美文网首页
2018-04-23下午

2018-04-23下午

作者: 怀念单调 | 来源:发表于2018-04-23 16:57 被阅读0次

    --多表链接

    --查询员工姓名,薪资,部门地点

    --查询的列有哪些

    --这些列来自那张表

    --有没有限制条件

    select ename ,sal,loc from emp ,dept

    --笛卡尔积:一张表中的所有数据与另一张表的所有数据都做了一个链接

    select * from dept

    --多表链接时需要加上限制条件 消除笛卡尔积的效果

    --等值链接

    --查询 员工姓名,薪资,部门地点

    --emp.deptno=dept.deptno emp表与dept表的关联条件

    --deptno 同时存在两张表中

    --如果直接使用会 产生未明确定义列的问题

    --需要表明进行区分

    select ename,sal,loc from emp e,dept d where e.deptno=d.deptno

    --查询员工编号,职位,工作地点,部门地点,部门号,部门名称

    select empno,job,loc,e.deptno,dname from emp e,dept d where e.deptno=d.deptno

    --非等值链接

    --表与表之间的关联条件不是直接相等的

    select ename ,sal ,grade from emp,salgrade where sal between losal and hisal --------

    --外连接

    --查询所有部门员工姓名和部门号,没有员工的部门也要显示

    --(+) 外连接符号

    --如果需要将不满足链接条件的数据显示在结果集

    --可以使用(+)外连接符号

    --(+)写在哪个表中 就会对应出现万能行

    --万能行的作用就是与不满足条件的数据进行连接

    select ename,d.deptno from emp e,dept d where e.deptno(+)= d.deptno

    --查询员工姓名,薪资,工作地点,薪资等级

    --多表连接后 如果有其他限制条件 在 where 中通过 and 连接

    select ename ,sal,loc,grade from emp,dept ,salgrade where emp.deptno=dept.deptno and sal between losal and hisal;

    --查询员工姓名,薪资,工作地点,薪资等级 要求薪资大于1500

    select ename ,sal,loc,grade from emp,dept ,salgrade where emp.deptno=dept.deptno and sal between losal and hisal and sal>1500;

    --N个表 表的关联条件至少 N-1

    --通过表前缀可以提高查询性能

    --表 别 名 代替表名

    --当给表起了表别名之后 不能使用表名作为列的前缀

    select ename ,e.deptno ,dname from emp e,dept d where e.deptno =d.deptno

    --1.写一个查询,显示所有员工姓名,部门编号,部门名称。

    select ename,e.deptno,dname from emp e, dept d where e.deptno=d.deptno;

    --2.写一个查询,显示所有工作在CHICAGO并且奖金不为空的员工姓名,工作地点,奖金

    select ename,loc,comm from emp e,dept d where e.deptno= d.deptno and loc='CHICAGO' and comm is not null

    --3.写一个查询,显示所有姓名中含有A字符的员工姓名,工作地点。

    select ename,loc from emp e,dept d where e.deptno=d.deptno and ename like '%A%'

    1.查询每个员工的编号,姓名,工资,工资等级,所在工作城市,按照工资等级进行升序排序。

    select e.deptno,ename,sal,grade,loc from emp e,dept d,salgrade s where e.deptno=d.deptno and e.sal between losal and hisal order by grade

    --自链接

    --查询每个员工的姓名和直接上级的姓名

    --e表示员工表 l 表示领导表

    -- 关联条件 员工表的领导编号=领导表员工编号

    select e.ename ,l.ename from emp e,emp l where e.mgr=l.empno

    ---查询员工的姓名,薪资,领导姓名,领导薪资

    select e.ename,l.ename,e.sal,l.sal from emp e,emp l where e.mgr=l.empno and e.sal<1500

    --1.查询所有工作在NEW YORK和CHICAGO的员工姓名,员工编号,以及他们的经理姓名,经理编号。

    select e.ename, e.empno,l.ename,l.empno from emp e,dept d,emp l where e.deptno=d.deptno and e.mgr=l.empno and e.mgr=l.empno and d.loc in ('NEW YORK','CHICAGO')

    --2.第上一题的基础上,添加没有经理的员工King,并按照员工编号排序。

    select e.ename,e.empno,l.ename,l.empno from emp e,emp l where e.mgr=l.empno(+)

    --3.查询所有员工编号,姓名,部门名称,包括没有部门的员工也要显示出来。

    select empno,ename,dname from emp e,dept d where e.empno=d.deptno(+)

    相关文章

      网友评论

          本文标题:2018-04-23下午

          本文链接:https://www.haomeiwen.com/subject/rhcllftx.html