首页 > 数据库 >软件测试|教你学会SQL LEFT JOIN的使用

软件测试|教你学会SQL LEFT JOIN的使用

时间:2023-10-11 18:22:04浏览次数:38  
标签:customer Customers JOIN 连接 SQL 软件测试 Orders LEFT

在这里插入图片描述

简介

当我们在处理关系型数据库时,常常需要从多个表中获取数据,并且可能存在某些表之间没有完全匹配的记录。在这种情况下,LEFT JOIN 操作可以派上用场。本文将详细介绍 LEFT JOIN 的概念、语法和用法,以及一些实际应用示例。

LEFT JOIN 的概念

LEFT JOIN 是一种 SQL 操作,它通过连接两个表,并返回左表中的所有行以及符合连接条件的右表中的匹配行。如果右表中没有匹配的行,则返回 NULL 值。

LEFT JOIN 的结果是一个新的表,其中包含了左表中的所有行以及符合连接条件的右表中的行。通过 LEFT JOIN,我们可以获取到左表中的所有数据,并与右表中的匹配数据进行连接,以便进行更全面和深入的数据分析。

LEFT JOIN 的语法

LEFT JOIN 的语法如下所示:

SELECT 列名
FROM 表1
LEFT JOIN 表2
ON 表1.列 = 表2.列;

在这个语法中,我们使用 SELECT 语句来选择需要返回的列。FROM 关键字后面跟着需要连接的第一个表的名称。然后使用 LEFT JOIN 关键字连接第一个表和第二个表。ON 关键字后面指定连接条件,即用于比较两个表中相同列的列名。

LEFT JOIN 的用法示例

为了更好地理解LEFT JOIN的用法,我们将通过一个示例来演示。假设我们有两个表:CustomersOrdersCustomers 表包含了客户信息,而 Orders 表包含了订单信息。这两个表可以通过一个共同的列customer_id进行连接。

Customers 表结构如下:

customer_id  |  customer_name  |  email
---------------------------------------
1            |  John Doe       |  [email protected]
2            |  Jane Smith     |  [email protected]
3            |  Mike Johnson   |  [email protected]

Orders 表结构如下:

order_id  |  order_date  |  total_amount  |  customer_id
------------------------------------------------------
1         |  2022-01-01  |  100.00        |  1
2         |  2022-02-01  |  200.00        |  2
3         |  2022-03-01  |  150.00        |  1

现在,我们想要获取每个客户的订单信息,包括客户名称、订单日期和订单总金额。由于不是每个客户都有订单,我们可以使用 LEFT JOIN 来保留左表(即 Customers 表)中的所有数据,并将右表(即 Orders 表)中的匹配数据进行连接。

下面是一个使用 LEFT JOIN 的 SQL 查询示例:

SELECT Customers.customer_name, Orders.order_date, Orders.total_amount
FROM Customers
LEFT JOIN Orders
ON Customers.customer_id = Orders.customer_id;

这个查询将返回以下结果:

customer_name  |  order_date   |  total_amount
---------------------------------------------
John Doe       |  2022-01-01   |  100.00
Jane Smith     |  2022-02-01   |  200.00
John Doe       |  2022-03-01   |  150.00
Mike Johnson   |  NULL         |  NULL

可以看到,通过 LEFT JOIN,我们成功地将CustomersOrders 两个表连接在一起,并获取到了每个客户的订单信息。同时,由于Mike Johnson没有订单,所以在结果中显示为 NULL。

LEFT JOIN 的其他应用

除了上述示例中的基本用法外,LEFT JOIN 还可以与其他 SQL 操作一起使用,以满足更复杂的需求。以下是 LEFT JOIN 的一些其他常见应用:

  • 多个表的连接:可以使用多个 LEFT JOIN 操作将三个或更多的表连接在一起。

  • 自连接:当一个表包含与自身相关的信息时,可以使用 LEFT JOIN 将表与自身连接起来。

  • 子查询的连接:可以将 LEFT JOIN 与子查询结合使用,以在连接操作中使用子查询的结果。

  • 条件过滤:可以在 LEFT JOIN 中使用 WHERE 子句对连接后的数据进行条件过滤。

这些应用只是 LEFT JOIN 的一部分,它们展示了 LEFT JOIN 在 SQL 查询中的强大功能和灵活性。

结论

LEFT JOIN 是一种常用的 SQL 操作,用于将多个表连接在一起,并返回左表中的所有行以及符合连接条件的右表中的行。通过 LEFT JOIN,我们可以获取到左表中的所有数据,并与右表中的匹配数据进行连接。本文详细介绍了 LEFT JOIN 的概念、语法和用法,并提供了一个示例来说明 LEFT JOIN 的实际应用。掌握 LEFT JOIN 的用法将有助于您在处理关系型数据库时进行更全面和灵活的数据查询和分析。

获取更多技术资料,请点击!

标签:customer,Customers,JOIN,连接,SQL,软件测试,Orders,LEFT
From: https://www.cnblogs.com/hogwarts/p/17757885.html

相关文章

  • 2023_10_11_MYSQL_DAY_03_笔记_下
    2023_10_11_MYSQL_DAY_03_笔记_下#截断表的作用是把原来的表摧毁,重新创建一个结构和原来一模一样的新表,语法如下:TRUNCATETABLEtable;#TRUNCATE和DELETE区别#1、TRUNCATE是DDL命令,使用ROLLBACK不可以回滚。而DELETE是DML命令,使用ROLLBACK可以回滚。#2、DELETE可以通过指定......
  • ADO.NET读取MySQL数据库的三种方式:DataReader、DataSet、DataView
    https://blog.csdn.net/lilongsy/article/details/127351421ADO.NET读取MySQL数据库有多种方式:DataReader、DataSet、DataView。Command对象的ExecuteScalar方法查询数据库获取某个单个值,但是如果获取多行、多列可以用ExcecuteReader,ExcecuteReader返回一个DataReader的数据流对......
  • sql server导入表的一些函数使用
    truncatetableJC_BMDA;insertintoJC_BMDA(bh,mc,qdmc,pym,ty)selectright('0'+rtrim(convert(varchar(5),id)),2)bh,bz,'jnx',upper(dbo.fGG_GetPY(bz)),0from(selectROW_NUMBER()over(orderbyxh)asid,*from(selectconvert(int,......
  • MySQL连接数超出最大值报错及修改
    报错:createconnectionSQLException,url:jdbc:mysql://xx.xxx.x.xx:6306/hksk-cloud-mes?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai,errorCode1040,s......
  • C++ - 连接mysql数据库
    1.准备工作1.1把libmysql.dll和libmysql.lib文件复制到工程目录下首先,我们要找到刚刚开始下载的MySQL数据库的安装目录,打开目录,并且将libmysql.dll文件和libmysql.lib文件复制到工程目录下~我安装MySQL的路径:E:\mysql-5.7.42-winx64\lib把libmysql.dll文件和l......
  • C++ - 操作mysql数据库
    操作数据库的案例#include<stdio.h>#include<stdlib.h>#include<mysql.h>//固定不变的MYSQLmysql;//一个数据库结构体MYSQL_RES*res;//一个结果集结构体MYSQL_ROWrow;//char**二维数据,存放一条条记录voidconnect();//连接数据库voidinsert();//插入......
  • Microsoft SQL Server导出数据为sql文件以及sql文件的执行
    一.MicrosoftSQLServer导出数据为sql文件1.在数据库上右击选择“任务”/“生成脚本” 2.在选择对象对话框中选择你要导出的实例 3.在“高级脚本编写选项”的“常规”的“编写脚本的数据类型”设置为“架构和数据/仅限数据/仅限架构” 4.单机下一步完成 二.sql文件的......
  • MySQL优化
    1.性能优化:1.1表结构优化(下述建议针对数据量巨大,每一点空间都需要节省的情况,当然在设计初期能考虑到以下建议最好)A:字段设计优化1.1.1整数类型:  1.对于整数int类型,数据量较大的情况下建议区分tinyint,int,bigint,三者所占据的空间有很大的......
  • 动态sql
    if <selectid="getEmpById"parameterType="emp"resultType="emp">  select* fromemp   <where>   <iftest="ename!=nullandename!=''">   ename=#{ename}  </if>  <if......
  • 解决PowerDesigner 16 Generate Datebase For Sql2005/2008 对象名sysproperties无效
    解决PowerDesigner16GenerateDatebaseForSql2005/2008对象名sysproperties无效的问题在PowerDesigner16中生成的sql语句,在执行的时候报错:对象名sysproperties无效的错误;造成此问题的原因是由于Sql2005、2008删除了系统表sysproperties而改用sys.extended_proper......