SQL两表/多表关联查询--JOIN语句

这篇具有很好参考价值的文章主要介绍了SQL两表/多表关联查询--JOIN语句。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、基础概念

SQL中的关联是通过JOIN关键字实现的,JOIN关键字有几种类型,包括INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN等。

二、INNER JOIN详解

INNER JOIN是最常用的关联方式之一,它返回 两个表中共同存在的数据行

其语法格式如下:

SELECT 
    column1, column2, ...
FROM 
    table1
INNER JOIN 
    table2
ON 
    table1.column_name = table2.column_name;

下面是一个实际的例子:

SELECT 
    customer.name, orders.order_date
FROM 
    customer
INNER JOIN 
    orders
ON 
    customer.id = orders.customer_id;

以上代码可以得到一个结果集,其中包含了客户的姓名和他们所下的订单的日期。

三、LEFT JOIN详解

LEFT JOIN也是一种常用的关联方式,它 返回 左表中的所有数据行 右表中与其匹配的数据行

其语法格式如下:

SELECT 
    column1, column2, ...
FROM 
    table1
LEFT JOIN 
    table2
ON 
    table1.column_name = table2.column_name;

下面是一个实际的例子:

SELECT 
    customer.name, orders.order_date
FROM 
    customer
LEFT JOIN 
    orders
ON 
    customer.id = orders.customer_id;

以上代码可以得到一个结果集,其中包含了客户的姓名和他们所下的订单的日期,如果某个客户没有下订单,它的订单日期将会被赋为NULL。

四、RIGHT JOIN详解

RIGHT JOIN与LEFT JOIN类似,只不过返回的是 右表中的所有数据行 左表中与其匹配的数据行

其语法格式如下:

SELECT 
    column1, column2, ...
FROM 
    table1
RIGHT JOIN 
    table2
ON 
    table1.column_name = table2.column_name;

下面是一个实际的例子:

SELECT 
    customer.name, orders.order_date
FROM 
    customer
RIGHT JOIN 
    orders
ON 
    customer.id = orders.customer_id;

以上代码可以得到一个结果集,其中包含了订单的日期和下订单的客户姓名,如果某个订单没有对应的客户,它的客户姓名将会被赋为NULL。

五、FULL OUTER JOIN详解

FULL OUTER JOIN则返回 左表 和 右表中的所有数据行无论是否匹配

其语法格式如下:

SELECT 
    column1, column2, ...
FROM 
    table1
FULL OUTER JOIN 
    table2
ON 
    table1.column_name = table2.column_name;

下面是一个实际的例子:

SELECT 
    customer.name, orders.order_date
FROM 
    customer
FULL OUTER JOIN 
    orders
ON 
    customer.id = orders.customer_id;

以上代码可以得到一个结果集,其中包含了所有客户和他们所下的订单的日期,如果某个客户没有下订单,它的订单日期将会被赋为NULL,同样地,如果某个订单没有对应的客户,它的客户姓名将会被赋为NULL。

六、注意事项

关联查询可能会导致性能问题,需要合理利用索引优化手段。

参考:SQL两表关联查询详解_笔记大全_设计学院

           MySQL_多表查询_关联查询语法讲解_哔哩哔哩_bilibili 文章来源地址https://www.toymoban.com/news/detail-800718.html

到了这里,关于SQL两表/多表关联查询--JOIN语句的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL语句详解四-DQL(数据查询语言-多表查询二)

    接下来需要用到的表 查询语法 注意:多表查询要 消除无用的数据 内连接查询 隐式内连接 使用 where 条件消除无用数据 标准格式 示例代码 查询所有员工信息和对应的部门信息 查询员工表的名称、性别,部门表的名称 显示内连接 语法 示例代码 查询所有员工信息和对应的部

    2024年01月19日
    浏览(49)
  • 若依框架的startPage( )函数怎么自动关联查询SQL语句?

    使用JAVA语言的若依框架的时候,发现只要使用了startPage()函数, 并不需要前端传递分页的数据,也不需要注解,就能完成分页功能。预判他应该是使用类似拦截器的机制,但还是感觉很神奇,感觉知道个大概不过瘾,还是要更细致的了解才能满足,就想研究一下并记录下来。

    2024年02月08日
    浏览(39)
  • 两表查询常用SQL

    1、两个表:table_a和table_b,求两表的交集,:INNER JOIN SELECT a.*,b.* FROM table_a AS a INNER JOIN table_b AS b ON a.id=b.id; 2、两个表:table_a和table_b,table_a为主表,关联查询table_b,table_b有数据就显示,没有数据就显示null,:LEFT JOIN SELECT a.*,b.* FROM table_a AS a LEFT JOIN table_b A

    2024年02月03日
    浏览(37)
  • 业务数据LEFT JOIN 多表查询慢--优化操作

    首先你会想到,给表加索引,那么mysql会给主键自动建立索引吗? 会的,当然会。 在我们查询的业务表操作的时候,表业务数据庞大起来的时候,以及left join多的时候,甚至多表关联到几十张表的时候,查询是慢到不行。 这时候,只需要给表join查询的字段,及表结构,进行索

    2024年02月02日
    浏览(42)
  • MySQL的多表关联查询

    多表关联查询是使用一条SQL语句,将关联的多张表的数据查询出来。 交叉查询就是将多张表的数据没有条件地连接在一起进行展示。 1.1.1 语法 使用交叉查询类别和商品 通过查询结果可以看到,交叉查询其实是一种错误的做法,在查询到的结果集中有大量的错误数据,称交叉

    2024年02月14日
    浏览(40)
  • MySQL多表查询内连接外连接详解,join、left join、right join、full join的使用

    目录 1、多表查询概览 1.1、分类 1.2、外连接的分类 1.3、常用的SQL语法标准 2、内外联接案例 2.1、初始化表 2.2、内连接 2.3、外连接案例 2.4、全连接案例 2.5、union和union all 2.6、实现MySQL全连接 2.7、内外连接面试基础 2.8、SQL99多表查询新特性 1.1、分类 可以根据3个角度进行分类

    2024年02月05日
    浏览(64)
  • Elasticsearch之join关联查询

    目录 一、join总述 1、关系类比 2、使用限制 3、性能问题 二、Mapping 1、举例说明  2、mapping释义 三、插入数据 1、插入父文档 2、插入子文档 四、关联查询 1、has_parent查询(父查子) 3、has_child查询(子查父) 目录 一、join总述 1、关系类比 2、使用限制 3、性能问题 二、Mapp

    2024年02月03日
    浏览(39)
  • HIVE 3 使用 MR 引擎多表关联 (JOIN) 导致丢数的问题复现、问题根源及解决方案 (附代码)

    本文意图解决 HIVE 3 版本中使用 MR 作为运算引擎进行 JOIN 操作时导致的丢数情况。 Apache Hive 在 2.3 版本后宣布放弃维护 MapReduce 作为底层执行引擎,并转而使用 Tez 作为默认的查询引擎。但是由于 Tez 在大作业量和高并发时的严重性能问题,导致许多任务不得不继续使用 MapRe

    2024年02月13日
    浏览(36)
  • MySQL多表关联查询练习题

    1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) ); 创建score表。SQL代码如下: CREATE TABLE score ( id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT , stu_id INT(10) NOT NULL , c_name VARCHAR(20) , grad

    2024年01月17日
    浏览(47)
  • Elasticsearch 之 join 关联查询及使用场景

    在Elasticsearch这样的分布式系统中执行类似SQL的join连接是代价是比较大的,然而,Elasticsearch却给我们提供了基于水平扩展的两种连接形式 。这句话摘自Elasticsearch官网,从“然而”来看,说明某些场景某些情况下我们还是可以使用的 在关系型数据库中,以MySQL为例,尤其B端类

    2024年02月06日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包