实例讲解Mysql中各种Join的作用

原创 2015年11月20日 11:11:44

实例讲解Mysql中各种Join的作用

Mysql4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率的连接(JOIN).. 替代。
Mysql中有左连接(left join)、右连接(right join)和内连接(inner join或者cross join),今天我用一个实例来说明各自的作用:

首先,建立两个实例数据库:
表a:

CREATE TABLE `a` (
 `id` int(4) unsigned NOT NULL auto_increment,
 `name` varchar(20)  default NULL ,
 `password` varchar(20)  default NULL ,
 PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

表b:

CREATE TABLE `b` (
 `id` int(4) unsigned NOT NULL auto_increment,
 `name` varchar(20) default NULL,
 `sex` varchar(20) default NULL ,
 `province` varchar(30) default NULL,
 PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

先往表里插入几条测试数据

insert into a(`name`,`password`) values('aa','111111');
insert into b(`name`,`sex`,`province`) values('aa','0','河南');
insert into a(`name`,`password`) values('bb','123456');
insert into b(`name`,`sex`,`province`) values('cc','0','河南');
insert into a(`name`,`password`) values('cc','123456');
insert into b(`name`,`sex`,`province`) values('gg','0','河南');

先来看左联结
left join:
select * from a left join b on a.name=b.name
结果为:
这里写图片描述

再来看右联结
right join:
select * from a right join b on a.name=b.name;
结果为:
这里写图片描述

再来看内联结
inner join:
select * from a inner join b on a.name=b.name;
结果为:
这里写图片描述

从上面的结果可以看出,用left join的时候,left join操作符左侧表里的信息都会被查询出来,右侧表里没有的记录会填空(NULL).right join亦然;inner join的时候则只有条件合适的才会显示出来

版权声明:本文为博主原创文章,未经博主允许不得转载。

mysql的几种join

之前学习mysql的时候对于老师说的左连接,右连接…之类的概念一直不清楚,模模糊糊的。工作之后理解这些名词一概念,现在把它记录一下。也希望能够帮助对于mysql中join不太清晰的朋友。这样可以根据自...
  • u012410733
  • u012410733
  • 2017年03月19日 14:49
  • 1770

MYSQL 的几种join连接方式

一、关于JOIN语法【内容来自于mysql手册】 MySQL支持以下JOIN语法。这些语法用于SELECT语句的 table_references 部分和多表DELETE和UPDATE语句: tabl...
  • zhengwish
  • zhengwish
  • 2016年04月27日 15:30
  • 11352

Mysql的七种join

对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Codin...
  • github_36379934
  • github_36379934
  • 2017年02月06日 21:35
  • 1199

mysql 中LEFT JOIN基本用法实例

/*SQL 中LEFT JOIN的含义是__,如果 tbl_user记录了学生的姓名(name)和学号(ID), tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考...
  • lifushan123
  • lifushan123
  • 2015年04月05日 01:25
  • 821

php关联表合并成临时表— left join 用法详解

给个通俗的解释吧.  例表a  aid adate  1 a1  2 a2  3 a3  表b  bid bdate  1 b1  2 b2  4 b4  两个表a,b相连接,要...
  • k8080880
  • k8080880
  • 2011年09月28日 22:15
  • 10008

MySQL中各种join

(本文中SQL语句均在Mysql v5.1中验证) 注0:在实验中,MySQL v5.1不支持full outer join,下文中全外连接部分SQL输出的结果是本人根据其含义自行输出的。 连...
  • gerogeya
  • gerogeya
  • 2012年11月05日 01:01
  • 195

mysql中join后on、where的区别

可能只看这两个关键字看不出任何的问题。那我们使用实际的例子来说到底有没有差异。      例如存在两张表A,B表数据如下:  语句一 Sql代码 select  ...
  • LXB15959168136
  • LXB15959168136
  • 2016年11月20日 21:29
  • 6172

MySQL JOIN (inner 和 left 的区别)

MySQL JOIN 的分类 inner join(内连接):取得两个表中存在连接匹配关系的记录 left join (左连接):以左表为基准(取左表所有记录),右表匹配向左表 right join...
  • u013402772
  • u013402772
  • 2016年04月27日 17:34
  • 1224

mysql数据库join、left join与right join 的区别

首先是join  Sql代码   select vend_name ,prod_price,prod_name from products join vendors on vendors.v...
  • leyangjun
  • leyangjun
  • 2013年10月17日 13:10
  • 1362

mysql中join的四种连接

MySQL是通过Join语句把两个或多个表连接起来,而生成的新表可以被当成表来使用,也可以保存起来。Join语句的含义是把两张表的属性通过它们的值组合在一起. 1. 内连接 表A与表B进行内连接,...
  • jbfsdzpp
  • jbfsdzpp
  • 2015年09月13日 12:06
  • 538
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实例讲解Mysql中各种Join的作用
举报原因:
原因补充:

(最多只允许输入30个字)