• 技术文章 >数据库 >MySQL

    mysql内连接是什么

    小妮浅浅小妮浅浅2021-07-21 14:42:15原创118

    说明

    1、内部连接类似于自然连接,但内部连接不要求比较两个表的同名属性列,可以用on或using指定两个表比较的字段(比较的字段不要求同名)。

    2、内部连接的条件可以不写,此时查询的是笛卡尔积。

    实例

    # 表的内连接,内连接是结果集中只保留符合连接条件的记录
    -- 方法一
    SELECT e.empno,e.ename,d.dname
    -- 连接目标
    FROM t_emp e JOIN t_dept d
    -- 连接条件
    ON e.deptno=d.deptno;
     
    -- 方法二
    SELECT e.empno,e.ename,d.dname
    -- 连接目标
    FROM t_emp e,t_dept d
    -- 连接条件
    WHERE e.deptno=d.deptno;
     
    -- 内连练习一
    # 不同表的内连接
    # 查询每个员工的工号,姓名,部门名称,底薪,职位,工资等级
    SELECT e.empno,e.ename,d.dname,e.sal,e.job,s.grade
    FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno
    JOIN t_salgrade s ON e.sal BETWEEN s.losal and s.hisal;
     
    # 相同表的内连接一
    # 查询Scott相同部门的员工都有谁
    SELECT e2.ename
    FROM t_emp e1 JOIN t_emp e2 ON e1.deptno=e2.deptno
    WHERE e1.ename="SCOTT" AND e2.ename!="SCOTT";
     
    # 相同表的内连接二
    # 查询底薪超过公司平均底薪的员工信息
    SELECT e.empno,e.ename,e.deptno,e.job
    FROM t_emp e JOIN
    (SELECT avg(sal) as avgs FROM t_emp) t
    ON e.sal>=t.avgs;
     
    # 查询RESEARCH部门的人数,最高底薪、最低底薪、平均底薪、平均工龄
    SELECT COUNT(*),MAX(e.sal),MIN(e.sal),AVG(e.sal),
    FLOOR(AVG((DATEDIFF(NOW(),e.hiredate)/365)))
    FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno
    WHERE d.dname="RESEARCH";
     
    SELECT FLOOR(29.9) # 29
    SELECT CEIL(1.1) # 1.2
     
    # 查询每种职业的最高工资、最低工资、平均工资、最高工资等级和最低工资等级
    SELECT e.job,
    MAX(e.sal+IFNULL(e.comm,0)),
    MIN(e.sal+IFNULL(e.comm,0)),
    AVG(e.sal+IFNULL(e.comm,0)),
    MAX(s.grade),
    MIN(s.grade)
    FROM t_emp e JOIN t_salgrade s
    ON (e.sal+IFNULL(e.comm,0)) BETWEEN s.losal AND s.hisal
    GROUP BY e.job;
     
     
    # 查询每个底薪超过部门平均底薪的员工信息
    SELECT e.empno,e.ename,e.sal
    FROM t_emp e JOIN
    (SELECT deptno,AVG(sal) as depsal FROM t_emp GROUP BY deptno) t
    ON e.deptno=t.deptno
    AND e.sal>depsal;

    以上就是mysql内连接的介绍,希望对大家有所帮助。更多mysql学习指路:MySQL

    专题推荐:mysql内连接
    品易云
    上一篇:mysql在win10配置环境变量的方法 下一篇:mysql内连接查询的两种类型

    相关文章推荐

    • mysql整数类型的介绍• mysql浮点类型是什么• mysql位类型如何理解• mysql中时间类型是什么• mysql中有哪些字符串类型• mysql中enum类型是什么• mysql中set类型如何理解• 如何使用PHP删除MySQL数据库• mysql instr条件查询的实现• mysql模块如何使用• mysql服务器端的组件• mysql逻辑备份有什么特点• mysql常见的优化类型• PHP7原生MySQL数据库的操作• mysql在win10配置环境变量的方法

    全部评论我要评论

  • 取消发布评论
  • 

    Python学习网