zoukankan      html  css  js  c++  java
  • sql03-连接查询

    根据表的连接方式来划分,包括: .
           内连接:
                 等值连接
                 非等值连接
               自连接
           外连接:
                 左外连接(左连接)
                右外连接(右连接)|
           全连接(这个不写,很少用!)

    案例:找出每一个员工的部门名称,要求显示员工名和部门名。 

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

              

             笛卡尔积现象:当两张表进行连接查询的时候,没有任何条件进行限制,最终的查询结果条数是两张表记录条数的乘积。

             关于表的别名:
                    select e.ename ,d.dname from emp e,dept d;
               表的别名有什么好处?
                    第一:执行效率高。
                    第二:可读性好。

            

          内连接之等值连接:最大特点是:条件是等量关系。

              

                SQL92: (太老,不用了)
                   select
                         e. ename , d. dname
                    from
                          emp e, dept d
                     where
                           e. deptno = d. deptno;

                  SQL99://innex可以省略的, 带着inner目的是可读性好-些。

                     (常用的)
                    select
                          e. ename , d. dname
                    from
                          emp e
                    inner  join
                          dept d
                     on
                          e.deptno = d. deptno;
            语法:
                       A
                    join
                       B
                    on
                        连接条件
                     where

                            ...

       

         SQL99语法结构更清晰一些:表的连接条件和后来的where条件分离了

         【例子】:

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

                

      内连接之非等值连接:最大的特点是:连接条件中的关系是非等量关系。.
        案例:找出每个员工的工资等级,要求显示员工名、工资、工资等级。

         select s.grade,e.ename,e.sal from emp e join salgrade s on e.sal between s.losal and s.hisal;

         

        自连接:最大的特点是:一张表看做两张表。自己连接自己。
        案例:找出每个员工的上级领导,要求显示员工名和对应的领导名。

        所用表如下:

         

        select e.ename,e.mgr,p.ename,p.empno from emp e join emp p on e.mgr=p.empno;

         外连接?

            

        什么是外连接,和内连接有什么区别? 

            内连接:
             
       假设A和B表进行连接,使用内连接的话,凡是A表和B表能够匹配_上的记录查询出来,这就是内连接。
                 
    AB两张表没有主副之分,两张表是平等的。
           外连接:
               
     假设A和B表进行连接,使用外连接的话,AB两张表中有一-张表是主表,一张表是副表,主要查询主表 中的数据,捎带着查询副表,当副表中的数据没有和主表中的数据匹配.上,副表自动模拟出NULL与之匹配

         外连接的分类?
                左外连接(左连接):表示左边的这张表是主表。
                右外连接(右连接) :表示右边的这张表是主表。

         外连接:
               select 
                   a.ename '员工',b.ename '领导'
               from
                   emp a
                lelft join
                    emp b
               on
                   a.mgr = b. empno;

               select e.ename,e.mgr,p.ename,p.empno from emp e left join emp p on e.mgr=p.empno;

               

        三张表怎么连接查询?

       【语法】:
                 A
            join
                B

            on

                  ....
            join

                C
            on

                  .....
        表示: A表和B表先进行表连接,连接之后A表继续和c表进行连接。.

           案例:找出每一个员工的部门名称以及工资等级

           select

                  e.ename,d.dname,s.grade

            from

                   emp e

             join

                 dept d

             on

                e.deptno=d.deptno

             join

                 salgrade s

             on e.sal between s.losal and s.hisal;

           

    案例:找出每一个员工的部门名称、工资等级、以及上级领
            

            select

                d.dname,s.grade,e1.mgr

            from

                emp e
            join

               dept d
            on

               e.deptno=d.deptno
           join

               salgrade s
            on

              e.sal between s.losal and s.hisal
            left join

                emp e1
            on

                e.mgr=e1.empno;

           

  • 相关阅读:
    JAVA 设计的七大原则
    电脑开机一支黑屏 ,只有鼠标
    oracle 创建表空间 、用户 、赋权、建表
    input 标签禁止输入
    input框限制只能输入正整数、字母、小数、汉字
    LINUX 解压文件
    LINUX vim 修改文件 退出
    layui table表格字段过长,展示不完整时,鼠标放到上面展示完整信息
    全网最全JS正则表达式 校验数字
    《学习笔记》基於NOPI開發 ExeclHelper工具類
  • 原文地址:https://www.cnblogs.com/wwww2/p/12493938.html
Copyright © 2011-2022 走看看