暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql_04:连接查询

那些年了 2021-07-28
712

五、连接查询:

1distinct去除重复记录

    SELECT DISTINCT(job) FROM emp;


    2、选出员工所在的部门名字(两张表连接)

      SELECT ename,dname from emp e,dept d WHEREe.DEPTNO = d.DEPTNO;
      //SQL92的写法

      SQL92的缺点:结构不清晰,表的连接条件和后期进一步筛选条件都放到了where后面。

        SELECT ename,dname from emp e join dept don e.DEPTNO = d.DEPTNO;
        //SQL99的写法

        SQL99的优点:表连接的条件是独立的,连接之后,如果还需进一步筛选,再往后继续加where


        3、筛选在最低工资和最高工资之间的员工姓名和工资

          SELECT
                e.ename,
          e.SAL,
          s.GRADE
          FROM
          empe
          JOIN salgrade s ON e.SAL BETWEEN s.LOSAL
          AND s.HISAL;


          4、右外连接

            SELECT e.ENAME,d.DNAME FROM emp e RIGHTJOIN dept d on e.DEPTNO = d.DEPTNO;

            right:表示将join关键字后边的这张表看成主表,为了将这张(主)表的数据全部查询出来,捎带关联查询左边的表。

            外连接的查询结果条数一定是>=内连接的查询结果条数。


            5、查询每个员工是上级领导,要求显示所有员工的名字和领导名字

              SELECT
              a.ENAMEAS '员工名',
              b.enameAS '领导名'
              FROM
                   empa
              LEFT JOIN emp b ON a.MGR = b.empno;


              6、多张表的连接语法

                SELECT
                *
                FROM
                a
                JOIN b ON a和b的连接条
                JOIN c ON a和c的连接条件
                Right JOIN d ON a和d的连接条件;

                一条SQL语句中内连接和外连接可以同时存在。


                7、找出每个员工的部门名称和工资等级,要求显示员工名、部门名、工资和工资等级。

                  SELECT
                  e.ENAME,
                  d.DNAME,
                  e.SAL,
                  s.GRADE
                  FROM
                  empe
                  JOIN dept d ON e.DEPTNO = d.DEPTNO
                  JOIN salgrade s ON e.SAL BETWEEN s.LOSAL
                  AND s.HISAL;
                  最后修改时间:2021-07-28 18:00:20
                  文章转载自那些年了,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论