美文网首页
SQL连表查询

SQL连表查询

作者: 丢了发型的男人 | 来源:发表于2018-11-27 15:44 被阅读0次

连接查询包括合并、内连接、外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要。

1、Union

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。

当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

注意:使用UNION时,两张表查询的结果有相同数量的列、列类型相似。


预置脚本:

   INSERT INTO Students(ID,Name,Age,City,MajorID) VALUES(101,'Tom',20,'BeiJing',10)
   INSERT INTO Students(ID,Name,Age,City,MajorID) VALUES(102,'Lucy',18,'ShangHai',11)

   INSERT INTO Teachers(ID,Name) VALUES(101,'Mrs Lee')
   INSERT INTO Teachers(ID,Name) VALUES(102,'Lucy')

1)基本UNION查询,查询学校教师、学生的总的信息表,包括ID和姓名

      SELECT ID,Name FROM Students
      UNION
      // UNION ALL 查询全部
      SELECT ID,Name FROM Teachers

查询结果:

2、INNER JOIN(内连接)

特性:只显示连接表都有的关联数据! 最常用的连接方式,INNER 可以不用写

A表 ————————————————————————B表
    SELECT * FROM A JOIN B ON A.id = B.aid;

结果:

3、外连接

特性:与内连接相比,即使没有匹配行,也会返回一个表的全集
外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL OUTER JOIN。通常我们省略outer 这个关键字。写成:LEFT/RIGHT/FULL JOIN。
重点:至少有一方保留全集,没有匹配行用NULL代替。

LEFT JOIN 左连接
例: 用内连接的例子

    SELECT * FROM A LEFT JOIN B ON A.id = B.aid; 只显示 3 条数据

结果:


RIGHT JOIN 右连接
例:
    SELECT * FROM A RIGHT JOIN B ON A.id = B.aid; 只显示 3 条数据

结果:


CROSS JOIN 全连接(交叉连接)
交叉连接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉连接也称作笛卡尔积。
简单查询两张表组合,这是求笛卡儿积,效率最低。

笛卡儿积:笛卡尔乘积,也叫直积。假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}。可以扩展到多个集合的情况。类似的例子有,如果A表示某学校学生的集合,B表示该学校所有学生爱好的集合,则A与B的笛卡尔积表示所有可能的爱好情况。
例:

image.png

一次查询多表

SELECT name,hobby FROM A,B 结果与交叉连接一样

相关文章

  • SQL连表查询

    连接查询包括合并、内连接、外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要。 1、Union UNIO...

  • sql _ 连表查询 & 授权

    一,连表查询 1)连表 简单查询_where 2) 连表 多种方式查询 3)子查询 综合以上查询示例 二,DCL数...

  • sql99语法连接查询

    二、sql99语法 /*语法:select 查询列表from 表1 别名 【连接类型】join 表2 别名on 连...

  • sql99语法

    二、sql99语法 /*语法:select 查询列表from 表1 别名 【连接类型】join 表2 别名on 连...

  • 无限极分类-全路径方式

    创建表SQL 测试数据 组装SQL查询 查询结果

  • 数据库表行列转换

    行转列 创建表kecheng,并插入数据 查询该表,结构显示: 通过sql查询显示下图: SQL_A: SQL_B...

  • 06 Mybatis 多表查询

    一、 一对一查询 建立user与account表之间的关联 sql实现查询 定义一个实体类来接受连表查询结果集, ...

  • mysql数据库查询语句

    1.简单的查询基本表的SQL语句 (1)查询语句 (2)查询语句 Student表的删除SQL语句: 选课表的操作...

  • MySQL中where条件中IN的慢查询优化

    MySQL中where条件中IN的慢查询优化 我们在编写SQL查询语句时,有时候会遇到连表查询的情况,有时的业务场...

  • SQL多表查询高级应用

    SQL多表查询 多表连接示范 两张表t_user t_judge 给两张表设置外键约束查询内容 SQL多表查询 多...

网友评论

      本文标题:SQL连表查询

      本文链接:https://www.haomeiwen.com/subject/jtjgqqtx.html