`
dogliwei
  • 浏览: 424 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

MySQL联表查询详解

 
阅读更多

主要讲解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多表联合查询效率分析及优化

    主要介绍了Mysql多表联合查询效率分析及优化,需要的朋友可以参考下

    Mysql联表update数据的示例详解

    在MySQL中,可以在 UPDATE语句 中使用JOIN子句执行跨表更新。MySQL UPDATE JOIN的语法如下: UPDATE T1, T2, [INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1 SET T1.C2 = T2.C2, T2.C3 = expr WHERE condition 更...

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

    代码如下: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基本查询、连接查询、子查询、正则表达查询

    4、多表上联合查询 5、子查询 6、合并查询结果 7、为表和字段取别名 8、使用正则表达式查询 什么是查询? 怎么查的? 数据的准备如下: create table STUDENT( STU_ID int primary KEY, STU_NAME char(10

    mysql连接查询、联合查询、子查询原理与用法实例详解

    本文实例讲述了mysql连接查询、联合查询、子查询原理与用法。分享给大家供大家参考,具体如下: 本文内容: 连接查询 联合查询 子查询 from子查询 where子查询 exists子查询 首发日期:2018-04-11 连接查询...

    图文详解MySQL中两表关联的连接表如何创建索引

    通过图文给大家介绍了关于MySQL中两表关联的连接表如何创建索引的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

    mysql优化方法详解

    1、选择最合适的字段属性 2、尽量把字段设置为NOT NULL 3、使用连接(JOIN)来代替子查询(Sub-Queries) 4、使用联合(UNION)来代替手动创建的临时表 5、事务 6、使用外键 7、锁定表 8、使用索引 9、优化sql的查询语句

    mysql中or是否走索引详解

    NULL 博文链接:https://bugyun.iteye.com/blog/2242094

    Mysql面试过关!(详解:索引+常用引擎+常见问题+sql调优)

    3.1 在联合索引的场景下,查询条件不满足最左匹配原则 3.2 索引列参与了运算,会导致全表扫描,索引失效(除主键索引外) 3.3 模糊查询时(like语句),模糊匹配的占位符位于条件的首部 3.4 索引列参使用了函数 3.5 ...

    MySQL组合索引与最左匹配原则详解

    之前在网上看到过很多关于mysql联合索引最左前缀匹配的文章,自以为就了解了其原理,最近面试时和面试官交流,发现遗漏了些东西,这里自己整理一下这方面的内容。 什么时候创建组合索引? 当我们的where查询存在多个...

    mySQL count多个表的数据实例详解

    通过实例给大家介绍了mySQL中count多个表的数据,也就是多个表如何联合查询,文中通过项目中遇到的一个问题进行分析和实现,给出了详细的示例代码,相信对大家的理解和学习很有帮助,有需要的朋友们下面来一起看看吧...

    五、MySQL联合查询学习笔记(详解)

    应用场景:要查询的结果来自多个表,且多个表之间没有直接的连接关系,但查询的信息相同 特点: 1、要求多条查询语句的查询列数相同 2、要求多条查询语句的查询的每一列的类型和顺序是一致的 3、union关键字默认会...

    MySQL详解视频.zip

    MySql内部组件详解 连接器详解 分析器详解 优化器详解 执行器详解 BinLog详解 数据删除恢复 o深入理解MySql索引底层数据结构与算法 数据结构角度 B+树索引 o索引查找步骤 o联合索引 Hash索引...

    微信小程序云函数使用mysql数据库过程详解

    小程序云开发的功能是越来越强大了,现在小程序云开发可以直接借助云函数来链接mysql数据,操作mysql数据库了,今天就来给大家讲一讲如何使用小程序云开发的云函数来操作mysql数据库。 首先要明确一点,就是小程序云...

    Mysql中Join的使用实例详解

    你可以在SELECT, UPDATE 和 DELETE 语句中使用Mysql 的 join 来联合多表查询。 以下我们将演示MySQL LEFT JOIN 和 JOIN 的使用的不同之处。 在命令提示符中使用JOIN 我们在RUNOOB数据库中有两张表 tcount_tbl 和 ...

    MongoDB多表关联查询操作实例详解

    首先,我们回忆一下,MySQL多表关联查询的语句: student表: calss表: 通过student的classId关联进行查询学生名称,班级的数据: SELECT student.name,student.age,class.name FROM student,class WHERE student...

    mysql 索引详细介绍

    mysql 索引详解: 在mysql 中,索引可以分为两种类型 hash索引和 btree索引。  什么情况下可以用到B树索引?  1.全值匹配索引  比如: orderID=”123”  2.匹配最左前缀索引查询  比如:在userid 和 date字段上...

    mysql delete limit 使用方法详解

    mysql delete limit优点: ...此子句只在与LIMIT联用是才起作用。例如,以下子句用于查找与WHERE子句对应的行,使用timestamp_column进行分类,并删除第一(最旧的)行: DELETE FROM somelog WHERE user

Global site tag (gtag.js) - Google Analytics