zoukankan      html  css  js  c++  java
  • MySQL JOIN

    MySQL JOIN

    MySQL 中联合查询可以根据多个表中列的关系进行查询,查询效率较高
    students 表:

    +--------+------+
    | stu_no | name |
    +--------+------+
    |      1 | Tom  |
    |      2 | Jack |
    +--------+------+
    

    class 表:

    +---------+--------+
    | class   | stu_no |
    +---------+--------+
    | Math    |      1 |
    | History |      3 |
    +---------+--------+
    

    INNER JOIN (内连接)

    INNER JOIN 等于 JOIN
    当左右表都存在匹配时返回行

    SELECT * FROM students INNER JOIN class on students.stu_no = class.stu_no;
    SELECT * FROM students JOIN class on students.stu_no = class.stu_no;
    

    执行结果:

    +--------+------+-------+--------+
    | stu_no | name | class | stu_no |
    +--------+------+-------+--------+
    |      1 | Tom  | Math  |      1 |
    +--------+------+-------+--------+
    

    LEFT OUTER JOIN (左连接)

    LEFT OUTER JOIN 等于 LEFT JOIN
    返回左表所有行,如果右表没有匹配时,相应数据为 NULL

    SELECT * FROM students LEFT OUTER JOIN class on students.stu_no = class.stu_no;
    SELECT * FROM students LEFT JOIN class on students.stu_no = class.stu_no;
    

    执行结果:

    +--------+------+-------+--------+
    | stu_no | name | class | stu_no |
    +--------+------+-------+--------+
    |      1 | Tom  | Math  |      1 |
    +--------+------+-------+--------+
    |      2 | Jack | NULL  |   NULL |
    +--------+------+-------+--------+
    

    RIGHT OUTER JOIN (右链接)

    RIGHT OUTER JOIN 等于 RIGHT JOIN
    返回右表所有行,如果左表没有匹配时,相应数据为 NULL

    SELECT * FROM students RIGHT OUTER JOIN class on students.stu_no = class.stu_no;
    SELECT * FROM students RIGHT JOIN class on students.stu_no = class.stu_no;
    

    执行结果:

    +--------+------+---------+--------+
    | stu_no | name | class   | stu_no |
    +--------+------+---------+--------+
    |      1 | Tom  | Math    |      1 |
    +--------+------+---------+--------+
    |   NULL | NULL | History |      3 |
    +--------+------+---------+--------+
    

    FULL OUTER JOIN

    返回左右表所有行,如果另一表没有匹配时,相应数据为 NULL
    注意:MySQL 中没有 FULL OUTER JOIN, 需要使用以下代码代替

    SELECT * FROM students LEFT OUTER JOIN class on students.stu_no = class.stu_no
    UNION
    SELECT * FROM students RIGHT OUTER JOIN class on students.stu_no = class.stu_no;
    

    执行结果:

    +--------+------+---------+--------+
    | stu_no | name | class   | stu_no |
    +--------+------+---------+--------+
    |      1 | Tom  | Math    |      1 |
    +--------+------+---------+--------+
    |      2 | Jack | NULL    |   NULL |
    +--------+------+---------+--------+
    |   NULL | NULL | History |      3 |
    +--------+------+---------+--------+
    
  • 相关阅读:
    (转)OpenCV提取视频每一帧及将连续图片合成视频
    OpenCV对图像的性能测试
    (转)OpenCV中的常用函数
    EasyX-加载图像实现人物行走
    “三行情书”——给你三行代码的爱恋~
    EasyX—模拟小球自由落体
    maven的pom.xml配置文件
    spring常用注解
    sql优化
    idea快捷键
  • 原文地址:https://www.cnblogs.com/dbf-/p/11399288.html
Copyright © 2011-2022 走看看