zoukankan      html  css  js  c++  java
  • SQL多表联查总结

    交叉连接:(不常用)
    返回两个表的笛卡尔乘积(也即全组合排列)中符合查询条件的数据行。

    内连接
    返回连接表中符合连接条件和查询条件的数据行。

    左外连接
    返回符合连接条件和查询条件(即:内连接)的数据行,且还返回左表中不符合连接条件但符合查询条件的数据行。

    右外连接
    返回符合连接条件和查询条件(即:内连接)的数据行,且还返回右表中不符合连接条件但符合查询条件的数据行。

    全外连接(不常用,MySQL不支持)
    返回符合连接条件和查询条件(即:内连接)的数据行,且还返回左表中不符合连接条件但符合查询条件的数据行以及右表中不符合连接条件但符合查询条件的数据行。

    例子

    表结构和数据:
    users表

    id name
    1 李四
    2 王五
    4 张三

    logs表

    id user_id log
    1 1 操作了A
    2 1 操作了B
    3 2 操作了C
    4 2 操作了D
    5 3 操作了E

    交叉连接:
    语句

    SELECT
    a.`id`,
    a.`name`,
    b.`log`
    FROM
    `users` AS a,
    `logs` AS b

    结果

    id name log
    1 李四 操作了A
    2 王五 操作了A
    4 张三 操作了A
    1 李四 操作了B
    2 王五 操作了B
    4 张三 操作了B
    1 李四 操作了C
    2 王五 操作了C
    4 张三 操作了C
    1 李四 操作了D
    2 王五 操作了D
    4 张三 操作了D
    1 李四 操作了E
    2 王五 操作了E
    4 张三 操作了E

    内连接:
    语句

    SELECT
    a.`id`,
    a.`name`,
    b.`log`
    FROM
    `users` AS a
    INNER JOIN `logs` AS b ON a.`id` = b.`user_id`

    结果

    id name log
    1 李四 操作了A
    1 李四 操作了B
    2 王五 操作了C
    2 王五 操作了D

    左外连接:
    语句

    SELECT
    a.`id`,
    a.`name`,
    b.`log`
    FROM
    `users` AS a
    LEFT JOIN `logs` AS b ON a.`id` = b.`user_id`

    结果

    id name log
    1 李四 操作了A
    1 李四 操作了B
    2 王五 操作了C
    2 王五 操作了D
    4 张三 NULL

    右外连接:
    语句

    SELECT
    a.`id`,
    a.`name`,
    b.`log`
    FROM
    `users` AS a
    RIGHT JOIN `logs` AS b ON a.`id` = b.`user_id`

    结果

    id name log
    1 李四 操作了A
    1 李四 操作了B
    2 王五 操作了C
    2 王五 操作了D
    NULL NULL 操作了E
  • 相关阅读:
    设计模式-状态模式(25)
    设计模式-访问者模式(24)
    设计模式-观察者模式(22)
    设计模式-中介者模式(21)
    设计模式-行为型模式小结(20)
    设计模式-迭代器模式(19)
    Tomcat安装
    MySQL单表查询
    MySQL表操作
    MySQL表的完整性约束
  • 原文地址:https://www.cnblogs.com/itZhy/p/7454718.html
Copyright © 2011-2022 走看看