美文网首页
第8章 多表数据查询

第8章 多表数据查询

作者: 上书房_张强 | 来源:发表于2017-05-31 00:23 被阅读139次

8.1 并集

8.1.1 UNION

UNION用于合并多个结果集,并去掉重复的行。
对于订单表,为了避免该表保存过多的数据使得表的性能下降,在项目中,通常使用分区表的方式,将不同时间范围的数据保存到对应分区表中。如以下SOMaster和SOMaster_201705表的数据:
SOMaster表:

SOMaster_201705表:

通过数据可以看到,两张表的数据,前三条的数据是一样的。
SQL语句:

查询结果如下:

可以看到,使用UINON将两个结果集连起来之后,重复的数据被过滤了。

8.1.2 UNION ALL

UNION用于合并多个结果集,但不会去掉重复的行。
如果将上述语句修改如下:

查询结果如下:

可以看到,这个重复的数据没有被过滤,而是全部显示出来了。

8.2 笛卡尔积

笛卡尔积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。
假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。

8.3 等连接(INNER JOIN)

等连接就是将两张表中,能匹配得到的数据显示出来,匹配不到的数据不显示。
语法:

SELECT
`字段1`,
`字段2`,
`字段3`,
……
`字段4`,
FROM 表1 表1别名
INNER JOIN 表2 表2别名
ON表1别名.连接字段 =表2别名.连接字段

示例:
客户信息表数据:

订单信息表数据:

从两张表的数据可以看出,订单表中没有客户编号为2的订单信息,对于客户编号为6的订单信息,该客户编号在客户表中不存在。

SQL语句:

查询数据:

由此可见,INNER JOIN是将连接条件的在两张表都有的数据显示出了,如果存在任意一条数据在其中一张表中不存在,则不会在查询结果中显示出来。

8.4 左连接(LEFT JOIN)

左连接,是指将左边的表作为主表,在用两张表的连接字段相关联,之后,只要是按照左边的表为标准能够连接到的右边表的数据就显示出来,否则不显示出来。
简言之就是,左连接会将左边表的数据都显示出来,但右边表的数据,只有能够关联上的数据才显示,关联不上的数据不会显示。

语法:

SELECT
`字段1`,
`字段2`,
`字段3`,
……
`字段4`,
FROM 表1 表1别名
LEFT JOIN 表2 表2别名
ON表1别名.连接字段 =表2别名.连接字段

示例:
同样是上面的客户信息表和订单信息表的数据,按照下面的SQL语句查询后,结果则有所不同。

结果如下:

可以看到,订单表中客户编号为6的订单数据也显示出来了,只是对应的客户名称为NULL,那是因为在客户信息表中,没有编号为6的客户,所有客户名称为NULL。

8.5 右连接(RIGHT JOIN)

右连接与左连接相反,是指将右边的表作为主表,在用两张表的连接字段相关联,之后,只要是按照右边的表为标准能够连接到的左边表的数据就显示出来,否则不显示出来。
但这个连接方式不常用。
语法:

SELECT
`字段1`,
`字段2`,
`字段3`,
……
`字段4`,
FROM 表1 表1别名
RIGHT JOIN 表2 表2别名
ON表1别名.连接字段 =表2别名.连接字段

示例:
仍然还是上面的客户信息表和订单信息表的数据,按照下面的SQL语句查询后,结果则有所不同。

查询结果如下:

可以看到,虽然客户编号为2的客户在订单表中没有订单信息,但还是现实出来了,只是没有订单的相关数据。

相关文章

  • arango增删改查

    arango实践 插入数据 修改数据 插入数据 查询数据 复杂查询 多表查询

  • MySQL-7:多表查询

    今日内容 1.多表查询 2.事务 3.DCL 多表查询: 查询语法: 数据准备(数据库表以及数据的创建): #...

  • 数据库之增删改查

    增加数据(插入) 修改数据 删除数据 查找数据 基础数据 高级查询 多表查询 准备三个表 多表查询 将学生表和班级...

  • arango的AQL

    arango实践 插入数据模板 修改数据模板 插入数据 查询数据 复杂查询 多表查询 图查询

  • mysql---多表查询

    判断数据表中的分数是否及格: 多表联合查询---左连接 统计个数 嵌套查询: 多表查询:

  • 56、【数据库技术】【MySQL】多表查询

    1、多表查询概述 多表查询,即查询时候的数据来源不再只有一张表。 多表查询在关系型数据库的基础理论中是有一些理论基...

  • MySql : 三、 多表查询和事务

    前言 本篇主要介绍了数据库中多表查询以及事务相关的知识。 目录 一、多表查询二、子查询三、事务 一、多表查询 1....

  • SQL语句常用命令整理---多表查询

    多表查詢之关连查询 多表数据连接查询,简称连接查询。本篇我们来一同学习多表连接查询的相关用法,主要內容有: 内连接...

  • mysql基础之多表查询和外键约束

    什么是多表查询 从多张表中联合查询出数据 为什么要使用多表查询 需要查询多张表中的数据,通过一张表查询是不完整的 ...

  • 2018-08-16

    1,多表查询的思路 /*多表查询思路 1,分析题目涉及那些表; 2,如果数据来自多张表,就要使用多表查询 找到两个...

网友评论

      本文标题:第8章 多表数据查询

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