mysql之inner join,left join,right join详解

上传人:第*** 文档编号:32691186 上传时间:2018-02-12 格式:DOC 页数:5 大小:31.50KB
返回 下载 相关 举报
mysql之inner join,left join,right join详解_第1页
第1页 / 共5页
mysql之inner join,left join,right join详解_第2页
第2页 / 共5页
mysql之inner join,left join,right join详解_第3页
第3页 / 共5页
mysql之inner join,left join,right join详解_第4页
第4页 / 共5页
mysql之inner join,left join,right join详解_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《mysql之inner join,left join,right join详解》由会员分享,可在线阅读,更多相关《mysql之inner join,left join,right join详解(5页珍藏版)》请在金锄头文库上搜索。

1、Mysql 之 inner join,left join,right join 详解文章分类: PHP 编程首先借用官方的解释下:inner join(等值连接):只返回两个表中联结字段相等的行;left join(左联接):返回包括左表中的所有记录和右表中联结字段相等的记录;right join(右联接) :返回包括右表中的所有记录和左表中联结字段相等的记录。比如我们有 xs、cj 两个表xs 表 cj 表- -id name id score1 张三 1 962 李四 2 803 86Sql 代码 SELECT * FROM xs INNER JOIN cj ON xs.id = cj.i

2、d 返回-id name id score1 张三 1 962 李四 2 80-Sql 代码 SELECT * FROM xs LEFT JOIN cj ON xs.id = cj.id 返回-id name id score1 张三 1 962 李四 2 80-Sql 代码 SELECT * FROM xs RIGHT JOIN cj ON xs.id = cj.id 返回id name id score1 张三 1 962 李四 2 80NULL NULL 3 86其中还有 inner join 还有另外一种写法,两者是等价的,都是等值连接Sql 代码 SELECT * FROM xs,c

3、j WHERE xs.id = cj.id mysql 多表连接查询 inner join, left join , right join ,full join ,cross join关键字: mysql inner join left join right join full join cross joininner join,full outer join,left join,right jion内部连接 inner join 两表都满足的组合full outer 全连 两表相同的组合在一起,A 表有,B 表没有的数据(显示为 null),同样 B表有A 表没有的显示为(null)A 表

4、left join B 表 左连,以 A 表为基础,A 表的全部数据,B 表有的组合。没有的为 nullA 表 right join B 表 右连,以 B 表为基础,B 表的全部数据,A 表的有的组合。没有的为null查询分析器中执行:-建表 table1,table2:create table table1(id int,name varchar(10)create table table2(id int,score int)insert into table1 select 1,leeinsert into table1 select 2,zhanginsert into table1 s

5、elect 4,wanginsert into table2 select 1,90insert into table2 select 2,100insert into table2 select 3,70如表-table1|table2|-idname|idscore|1lee|190|2zhang|2100|4wang|370|-以下均在查询分析器中执行一、外连接1.概念:包括左向外联接、右向外联接或完整外部联接2.左连接:left join 或 left outer join(1)左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表

6、的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null)。(2)sql 语句select * from table1 left join table2 on table1.id=table2.id-结果-idnameidscore-1lee1902zhang21004wangNULLNULL-注释:包含 table1的所有子句,根据指定条件返回 table2相应的字段,不符合的以 null 显示3.右连接:right join 或 right outer join(1)右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为

7、左表返回空值。(2)sql 语句select * from table1 right join table2 on table1.id=table2.id-结果-idnameidscore-1lee1902zhang2100NULLNULL370-注释:包含 table2的所有子句,根据指定条件返回 table1相应的字段,不符合的以 null 显示4.完整外部联接:full join 或 full outer join(1)完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。(2)sql 语

8、句select * from table1 full join table2 on table1.id=table2.id-结果-idnameidscore-1lee1902zhang21004wangNULLNULLNULLNULL370-注释:返回左右连接的和(见上左、右连接)二、内连接1.概念:内联接是用比较运算符比较要联接列的值的联接2.内连接:join 或 inner join3.sql 语句select * from table1 join table2 on table1.id=table2.id-结果-idnameidscore-1lee1902zhang2100-注释:只返回

9、符合条件的 table1和 table2的列4.等价(与下列执行效果相同)A:select a.*,b.* from table1 a,table2 b where a.id=b.idB:select * from table1 cross join table2 where table1.id=table2.id (注:cross join 后加条件只能用 where,不能用 on)三、交叉连接(完全)1.概念:没有 WHERE 子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。 (table1和 table2交叉连接产生3*3=9条记录)2.交叉连接:cross join (不带条件 where.)3.sql 语句select * from table1 cross join table2-结果-idnameidscore-1lee1902zhang1904wang1901lee21002zhang21004wang21001lee3702zhang3704wang370-注释:返回3*3=9条记录,即笛卡尔积4.等价(与下列执行效果相同)A:select * from table1,table2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号