美文网首页MySQL
MySQL 表连接

MySQL 表连接

作者: RicherYY | 来源:发表于2020-04-13 21:30 被阅读0次

内连接

MySQL中INNER JOIN表示一个表中的一行数据和另一个表中的数据进行匹配。简单来说就是想查两个表的数据,如果不用内连接的话查出的数据会有重复。产生笛卡儿积,所以要使用内连接。

用法

假设查询两个表的时候t1和t2

SELECT 
    column_list
FROM 
    t1
INNER JOIN t2 ON join_condition;

例子

数据库的ER图

[图片上传失败...(image-dcfd3c-1586784611965)]

  • 查询products表中的productCodeproductName列的值。
  • 查询productlines表产品线的描述textDescription列的值.
SELECT 
    t1.productCode, 
    t1.productName, 
    t2.textDescription
FROM
    products t1
        INNER JOIN
    productlines t2 ON t1.productline = t2.productline;

查询结果

[图片上传失败...(image-441d5f-1586784611966)]

补充

USING

由于两个表的连接列是使用相同一个列:productline,因此可以使用以下语法

SELECT 
    productCode, 
    productName, 
    textDescription
FROM
    products
        INNER JOIN
    productlines USING (productline);

结果一样


联表查询

SELECT 
   t1.productCode, 
   t1.productName, 
   t2.textDescription
FROM
    products t1,
    productlines t2
WHERE
t1.productline = t2.productline;

结果一样

左连接 LEFT JOIN

左连接就是两个表或者多个表以上的数据,进行对比。左表和右表不匹配时值可以为空

用法

SELECT 
    t1.c1, 
    t1.c2, 
    t2.c1, 
    t2.c2
FROM
    t1
        LEFT JOIN
    t2 ON t1.c1 = t2.c1;

例子

两个表的ER 图如下所示

[图片上传失败...(image-b3d9fe-1586784611966)]

  • 订单(orders)表中的每个订单必须属于客户(customers)表中的客户。
  • 客户(customers)表中的每个客户在订单(orders)表中可以有零个或多个订单。
SELECT
 c.customerNumber,
 c.customerName,
 o.orderNumber,
 o.status
FROM
 customers c
LEFT JOIN orders o ON c.customerNumber = o.customerNumber;

结果

[图片上传失败...(image-4b6227-1586784611966)]

可以看到结果集中有的客户订单号为NULL也就是说有,有的客户根本没有买过任何东西,没有任何订单。

补充

USING

SELECT
 c.customerNumber,
 customerName,
 orderNumber,
 status
FROM
 customers c
LEFT JOIN orders USING (customerNumber);

结果一样

使用MySQL LEFT JOIN子句来查找不匹配的行

当您想要找到右表中与不匹配的左表中的行时,LEFT JOIN子句非常有用。要查询两个表之间的不匹配行,可以向SELECT语句添加一个WHERE子句,以仅查询右表中的列值包含NULL值的行。

例如,要查找没有下过订单的所有客户,请使用以下查询:

SELECT 
    c.customerNumber, 
    c.customerName, 
    o.orderNumber, 
    o.status
FROM
    customers c
        LEFT JOIN
    orders o ON c.customerNumber = o.customerNumber
WHERE
    orderNumber IS NULL;

结果

[图片上传失败...(image-74a095-1586784611966)]

相关文章

  • MySQL+关联(下)

    飞谷云 MySQL 第3讲 MySQL+表连接(下) 一、MySQL+表连接(下) 1、内连接(inner joi...

  • MySQL 临时表

    临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。 使用PHP脚本来创建MySQL临时表...

  • Mysql 语句

    Mysql 语句 Mysql 语句以考察各种常用连接为重点 几种常见连接 内连接(INNER JOIN):两个表都...

  • MySQL 基本内容

    MySQL的基础 MySQL 数据类型 SQL mode 多表查询代价高一张表——>两个表——>需要连接连接 需要...

  • mysq临时表

    MySQL 临时表 MySQL 临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接...

  • Mysql的连接

    Mysql内连接=等值连接就相当于求两个表的相同处表1 表2 内连接语法 实例 left join on以左表为主...

  • mysql表连接

    当同时要现实多张表中的数据库时,可以会用表连接来完成这样的需求。从大类上分,表连接分为内连接和外连接,他们的区别主...

  • mysql表连接

    MySQL连接两张表的方法 1、内连接 select Name,Rating from movie m,ratin...

  • MySQL 表连接

    内连接 MySQL中INNER JOIN表示一个表中的一行数据和另一个表中的数据进行匹配。简单来说就是想查两个表的...

  • MySQL 相关问题

    一.MySQL远程连接 有时候在进行MySQL远程连接时,需要开启远程访问权限。可以通过查询mysql.user表...

网友评论

    本文标题:MySQL 表连接

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