主要讲解left join,right join,inner join的用法分析和比较。
先创建a、b两张表:
建表语句:
CREATE TABLE `a` ( `aID` int(1) NOT NULL AUTO_INCREMENT, `aNum` char(20) NOT NULL, PRIMARY KEY (`aID`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
CREATE TABLE `b` ( `bID` int(1) NOT NULL AUTO_INCREMENT, `bName` char(20) DEFAULT NULL, PRIMARY KEY (`bID`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
插入数据:
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
执行结果:
结果分析:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).B表记录不足的地方均为NULL.
2、右连接right join:
执行SQL语句:
select * from a right join b on a.aID=b.bID
执行结果:
结果分析:
仔细观察一下,就会发现,和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
执行结果:
结果分析:
很明显,这里只显示出了 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数据库中,多表查询是一项基础且至关重要的技能,特别是在处理复杂的数据关系时。本篇文章将深入探讨如何使用链接查询(JOIN)和子查询来实现多表查询,以满足不同场景下的数据检索需求。 首先,我们要理解...
MySQL 索引数据结构详解 MySQL 索引是一种特殊的数据结构,它可以帮助快速定位和检索数据。索引的主要目的便是降低树的高度,从而提高查询效率。下面我们将详细介绍 MySQL 索引的数据结构和工作原理。 索引的存储 ...
### MySQL数据库及索引详解 #### 一、MySQL简介与数据库发展 MySQL是一款非常流行的开源关系型数据库管理系统,由瑞典MySQL AB公司开发。它以其高性能、稳定性和易用性著称,广泛应用于Web应用程序和企业级系统中...
MySQL中的多表联合查询是数据库操作中常见的需求,特别是在处理复杂的数据分析和报表时。本文将深入探讨多表联合查询的效率分析以及优化策略。 首先,我们要了解多表连接的几种基本类型: 1. **笛卡尔积(Cross ...
1. MySQL 联合查询:在题目中,我们看到了两种查询方法,一种是基于子查询的方法,另一种是使用 JOIN 的方法。在 SQL 中,联接查询(JOIN)是用于从两个或更多个表中检索数据的主要方式。例如,方法一通过嵌套子查询...
MySQL中的联表更新操作是一种高效的数据管理技巧,它允许你在单个UPDATE语句中同时更新两个或更多相关联的表。这种技术特别适用于那些需要基于其他表中的信息来修改数据的情况。本文将深入探讨MySQL UPDATE JOIN语法...
MySQL 数据库索引详解 MySQL 数据库索引是一种特殊的数据库结构,可以快速查询数据库表中特定记录。索引是提高数据库性能的重要方式。 索引的概念 ---------------- 索引是表中数据的目录。如果使用索引,则扫描...
在MySQL数据库中,索引是提高查询性能的关键工具。它们允许数据库系统快速定位和检索数据,而无需遍历整个表。然而,当涉及到`OR`条件时,索引的使用和效率可能会变得复杂。本篇文章将深入探讨在MySQL中`OR`操作符...
### MySQL中的JOIN详解及SQL实战 #### 一、引言 在关系型数据库管理系统(RDBMS)中,数据往往分布在多个表中。为了获取所需的信息,常常需要将这些表组合起来,这时就会用到JOIN操作。JOIN是SQL语言中非常重要的...
代码如下:SELECT c.id, c.order_id, c.title, c.content, c.create_time, o.last_pic FROM `orders` o , `case` c WHERE c.order_id = o.order_id ORDER BY c.id DESC LIMIT... 您可能感兴趣的文章:mysql嵌套查询和联表
以上只是MySQL众多特性和功能的一部分,实际应用中还有更多复杂和高级的概念,如视图的更新、联合查询、子查询、窗口函数等。通过深入学习和实践,您可以更熟练地掌握MySQL,满足各种数据库管理需求。在“MySQL常用...
### MySQL联合修改详解 在MySQL数据库管理中,有时我们需要对两个或多个表中的数据进行同时更新,这种情况就涉及到了所谓的“联合修改”。本篇文章将基于一个具体的案例来深入探讨MySQL中联合修改的操作方法及其...
本文实例讲述了mysql连接查询、联合查询、子查询原理与用法。分享给大家供大家参考,具体如下: 本文内容: 连接查询 联合查询 子查询 from子查询 where子查询 exists子查询 首发日期:2018-04-11 连接查询...
MySQL 面试题详解 一、索引相关 1. 索引的定义和作用:索引是一种数据结构,可以帮助我们快速地进行数据的查找。索引的主要作用是帮助服务器避免排序和临时表,将随机 IO 变为顺序 IO,提高数据的检索速度。 2. ...
- 联合查询:使用UNION, UNION ALL, INTERSECT和EXCEPT操作合并多表结果。 - 复杂查询:嵌套查询,子查询,以及JOIN操作(INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN)连接多个表。 4. **聚合函数**: - ...
在MySQL中,两表关联的连接表创建索引是一个关键的操作,这直接影响到查询性能。本文将详细讨论如何为这样的连接表设计合适的索引,以及通过实际测试验证不同索引策略的效果。 首先,我们考虑一个典型的多表关联...
在处理多表join查询时,传统的关系型数据库如MySQL等通常能很好地应对,但Solr作为一个非关系型的搜索引擎,其原生功能并不支持复杂的数据关联操作。本文将围绕"基于Solr的多表join查询加速方法"这一主题,深入探讨...
在IT领域,PHP和MySQL是两个非常重要的技术,它们经常被联合使用来构建动态网站和Web应用程序。PHP是一种服务器端的脚本语言,主要用于处理HTML中的动态内容,而MySQL则是一种关系型数据库管理系统(RDBMS),用于...