`
zhengdl126
  • 浏览: 2542756 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

MySQL联表查询详解/超详细mysql left join,right join,inner join用法分析比较

阅读更多

一般以小的表为基准

------------------------

 

 

超详细mysql left join,right join,inner join用法分析

下面是例子分析
表A记录如下:
aID aNum
1 a20050111
2 a20050112
3 a20050113
4 a20050114
5 a20050115

表B记录如下:
bID bName
1 2006032401
2 2006032402
3 2006032403
4 2006032404
8 2006032408

创建这两个表SQL语句如下:
CREATE TABLE a
aID int( 1 ) AUTO_INCREMENT PRIMARY KEY ,
aNum char( 20 )
)
CREATE TABLE b(
bID int( 1 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
bName char( 20 )
)

INSERT INTO a
VALUES ( 1, ‘a20050111′ ) , ( 2, ‘a20050112′ ) , ( 3, ‘a20050113′ ) , ( 4, ‘a20050114′ ) , ( 5, ‘a20050115′ ) ;

INSERT INTO b
VALUES ( 1, ‘ 2006032401′ ) , ( 2, ’2006032402′ ) , ( 3, ’2006032403′ ) , ( 4, ’2006032404′ ) , ( 8, ’2006032408′ ) ;

实验如下:
1.left join(左联接)

sql语句如下:
SELECT * FROM a
LEFT JOIN b
ON a.aID =b.bID

结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
5 a20050115 NULL NULL
(所影响的行数为 5 行)

结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.

2.right join(右联接)

sql语句如下:
SELECT * FROM a
RIGHT JOING b
ON a.aID = b.bID

结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
NULL NULL 8 2006032408
(所影响的行数为 5 行)

结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.

3.inner join(相等联接或内联接)

sql语句如下:
SELECT * FROM a
INNER JOIN b
ON a.aID =b.bID

等同于以下SQL句:
SELECT *
FROM a,b
WHERE a.aID = b.bID

结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404

结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
LEFT JOIN操作用于在任何的 FROM 子句中,

组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即
使在第二个(右边)表中并没有相符值的记录。

语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2
说明:table1, table2参数用于指定要将记录组合的表的名称。
field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的
名称。
compopr 参数指定关系比较运算符:”=”, “<”, “>”, “<=”, “>=” 或 “<>”。
如果在 INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误。

分享到:
评论

相关推荐

    Mysql之innerjoin,leftjoin,rightjoin详解.pdf

    Mysql 之 inner join、left join、right join 详解 Mysql 中的连接查询是指从多个表中检索数据,并将它们组合成一个结果集。inner join、left join 和 right join 是 Mysql 中三种最常用的连接查询方式。 inner ...

    MySQL中的JOIN详解及sql实战

    本文详细介绍了MySQL中的JOIN操作,包括INNER JOIN、LEFT JOIN以及如何使用ON条件过滤和笛卡尔积的概念。通过具体的表结构示例和实战SQL语句,我们展示了JOIN的各种应用场景。此外,我们还提供了一些扩展内容,比如...

    SQL联合查询inner join、outer join和cross join的区别详解

    在SQL查询中,联合查询是将两个或多个表格的数据结合在一起的一种方法,主要涉及三种类型的联合:INNER JOIN、OUTER JOIN(包括LEFT JOIN、RIGHT JOIN和FULL JOIN)以及CROSS JOIN。理解这些概念对于数据库开发人员...

    mysql所有的查询语句详解

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,尤其在Web开发中,与Java服务器页面(JSP)结合使用时,它的查询语句是数据交互的核心。在本篇中,我们将深入探讨MySQL在JSP中的所有主要查询语句,以及如何在...

    mysql 多表联接查询练习

    ### MySQL多表联接查询详解 #### 一、引言 在实际的数据库操作中,我们经常需要从多个表中获取数据,这时就需要用到多表联接查询。本篇文章将通过具体的练习案例来深入讲解MySQL中的多表联接查询技巧,特别是内联...

    mysql 参考手册(详解关键字的功能和涉及到的问题)

    有多种类型的JOIN,如INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN,它们在不同的场景下有着不同的应用。 “涉及到的问题”可能涵盖了很多方面,包括但不限于: 1. **并发问题**:在多用户环境中,事务处理和...

    mysql多条件查询

    ### MySQL多条件查询详解 #### 一、引言 MySQL是一种广泛使用的开源关系数据库管理系统,在数据管理和查询方面具有强大的功能。本文将详细介绍MySQL中的多条件查询技术,包括子查询、多表查询等重要知识点,旨在...

    MYSQL单表及多表查询基础

    ### MySQL单表及多表查询基础知识点解析 #### 一、实验目的与环境 本实验旨在通过实际操作加深对MySQL数据库的基本操作理解,包括增、删、改、查等核心功能。具体而言,将通过一系列具体的查询语句来掌握如何进行单...

    MySQL多表查询(四).pdf

    ### MySQL多表查询详解 #### 一、多表关系与设计原则 在数据库设计中,为了反映业务逻辑的真实情况,通常需要定义不同表之间的关系。这些关系主要包括:一对多(或多对一)、多对多以及一对一。 - **一对多(多对...

    mysql基础知识详解,完整ppt

    6. **查询进阶**:这部分可能涵盖JOIN操作(如INNER JOIN、LEFT JOIN、RIGHT JOIN)、子查询、聚合函数(COUNT、SUM、AVG、MAX、MIN)和GROUP BY语句,用于复杂的数据分析。 7. **视图和存储过程**:视图是虚拟的表...

    Mysql中Join的使用实例详解

    本章节主要讲解了在MySQL中使用JOIN进行多表查询的方法,特别是LEFT JOIN和JOIN(通常指的是INNER JOIN)的区别。LEFT JOIN返回左表格的所有记录,即使在右表格中没有匹配的记录,而未匹配的记录的字段值将显示为...

    MySQL多表查询实例详解【链接查询、子查询等】

    此外,还有其他类型的链接查询,如`LEFT JOIN`、`RIGHT JOIN`和`FULL OUTER JOIN`,它们分别用于获取左表、右表或两表的所有数据,即使在另一表中没有匹配的记录。例如,`LEFT JOIN`可以用于获取所有部门及其对应的...

    MySql实现跨表查询的方法详解

    在MySQL数据库中,跨表查询是处理多个相关表数据的关键技术。这允许我们从不同的表中获取并结合信息,以满足复杂的数据需求。本篇文章将深入探讨如何在MySQL中实现跨表查询,以及如何利用共享的字段来关联数据。 ...

    Mysql联表update数据的示例详解

    MySQL中的联表更新操作是一种高效的数据管理技巧,它允许你在单个UPDATE语句中同时更新两个或更多相关联的表。这种技术特别适用于那些需要基于其他表中的信息来修改数据的情况。本文将深入探讨MySQL UPDATE JOIN语法...

    详解Mysql多表联合查询效率分析及优化

    3. **避免全表扫描**:使用`EXPLAIN`关键字分析查询计划,检查是否发生全表扫描。如果可能,使用索引覆盖或选择性更高的列作为连接条件。 4. **限制结果集**:通过添加`LIMIT`子句限制返回的记录数量,特别是用于...

    MySQL多表查询详解下

    本篇文章将详细讲解MySQL的多表查询,特别是1999年的SQL标准语法。 首先,多表查询的核心是连接(JOIN)操作。根据连接类型,我们可以将它们分为四类:内连接(INNER JOIN)、左外连接(LEFT [OUTER] JOIN)、右外...

    PHP5与MYSQL5 WEB开发详解DATABASE1

    4. SQL查询进阶:JOIN操作(INNER JOIN, LEFT JOIN, RIGHT JOIN等)用于联接多个表,子查询用于嵌套查询,聚合函数(COUNT, SUM, AVG, MAX, MIN)用于统计分析。 三、PHP5与MySQL5结合 1. PDO(PHP Data Objects)...

    MySQL入门学习命令详解

    - **联接查询**:INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN等用于合并两个或多个表的数据。 - **子查询**:在SELECT或WHERE子句中嵌套查询,以获取满足特定条件的数据。 8. **视图**:视图是虚拟表,...

    MYSQL基础 超级详细

    10. 链接查询:使用`JOIN`合并多个表的数据,如`INNER JOIN`, `LEFT JOIN`, `RIGHT JOIN`, `FULL OUTER JOIN`。 五、数据库及表的修改和删除 1. 删除数据库:使用`DROP DATABASE`命令,如`DROP DATABASE mydb;` 2. ...

Global site tag (gtag.js) - Google Analytics