• 技术文章 >数据库 >MySQL

    mysql内连接是什么

    小妮浅浅小妮浅浅2021-08-23 20:58:32原创4823

    说明

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

    (比较的字段不要求同名)。

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

    实例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    # 表的内连接,内连接是结果集中只保留符合连接条件的记录

    -- 方法一

    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

    推荐操作系统:windows7系统、mysql5.8、DELL G3电脑

    专题推荐:mysql内连接
    上一篇:mysql常见的优化类型 下一篇:mysql内连接查询的两种类型

    相关文章推荐

    • mysql整数类型的介绍• mysql浮点类型是什么• mysql位类型如何理解• mysql中有哪些字符串类型• mysql中enum类型是什么• mysql中set类型如何理解• mysql instr条件查询的实现• mysql模块如何使用• mysql服务器端的组件• mysql逻辑备份有什么特点• mysql常见的优化类型

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网