Mysql连表查询(内连接、外连接)

来源:互联网 发布:pump it相似 编辑:程序博客网 时间:2024/05/28 15:32

创建用于测试的表格并插入数据

-- 创建两张表格并分别插入数据CREATE TABLE IF NOT EXISTS left_table(id INT auto_increment,age INT,NAME VARCHAR(20),PRIMARY KEY(id))ENGINE=INNODB DEFAULT CHARSET=utf8 auto_increment=1;INSERT INTO left_table(`age`,`NAME`)VALUES(25,'小明');INSERT INTO left_table(`age`,`NAME`)VALUES(15,'小红');INSERT INTO left_table(`age`,`NAME`)VALUES(35,'小吕');INSERT INTO left_table(`age`,`NAME`)VALUES(45,'大绿');CREATE TABLE IF NOT EXISTS right_table(id INT PRIMARY KEY auto_increment,age INT,name VARCHAR(20))ENGINE=INNODB default charset=utf8 auto_increment=1;INSERT INTO right_table(`age`,`NAME`)VALUES(29,'高兴');INSERT INTO right_table(`age`,`NAME`)VALUES(25,'快乐');INSERT INTO right_table(`age`,`NAME`)VALUES(39,'开心');INSERT INTO right_table(`age`,`NAME`)VALUES(45,'喜悦');

left_table
right_table

左连接(左外连接)

左连接也叫左外连接
语法如下

SELECT L.*,R.*FROM LEFT_TABLE L(WHERE ...)LEFT (OUTER) JOINRIGHT_TABLE R(WHERE ...)ON ...

对示例量表进行操作

SELECT L.*,r.*FROM left_table LLEFT OUTER JOINright_table ron L.age=r.age;

结果这里写图片描述
可知:

  • 左连接以左边的表格为基准
  • 当右边的表格满足on条件时,加入;不满足的补空值null。

右连接(右外连接)

语法如下

SELECT L.*,R.*FROM LEFT_TABLE L(WHERE ...)RIGHT (OUTER) JOINRIGHT_TABLE R(WHERE ...)ON ...

示例

SELECT L.*,r.*FROM left_table LRIGHT JOINright_table ron L.age=r.age;

结果
这里写图片描述

  • 右连接以右边的表格为基准
  • 当左边的表格满足on条件时,加入;不满足的补空值null。

内连接

语法如下

SELECT L.*,R.*FROM LEFT_TABLE L(WHERE ...)[INNER] JOINRIGHT_TABLE R(WHERE ...)ON ...

示例

SELECT L.*,r.*FROM left_table L JOINright_table ron L.age=r.age;

结果
这里写图片描述

  • 去两者相同的结果
    从结果看来和 where 语句完全一样
SELECT L.*,r.*FROM left_table L ,right_table rWHERE L.age=r.age;

MySQL没有全连接

如果想要实现全连接的功能,可采用
左连接 union 右连接
此处是union,关于union与union all的区别,参考:http://blog.csdn.net/qq_36743482/article/details/75021848

SELECT L.*,r.*FROM left_table L left JOINright_table ron L.age=r.ageUNIONSELECT L.*,r.*FROM left_table L RIGHT JOINright_table ron L.age=r.age

这里写图片描述

阅读全文
0 0
原创粉丝点击