MySQL (内、左、右)连接查询
- 一、MySQL内连接查询
- 内连接的语法结构
- 实例操作
- 二、MySQL左连接查询
- 左连接的语法结构
- 实例操作
- 三、MySQL右连接查询
- 右连接的语法结构
- 实例操作
一、MySQL内连接查询
内连接的语法结构
SELECT column ( 要查询的字段) FROM table1(需要做连接查询的表名)INNER JOIN (内连接)table2 ON 连接条件
注:
1)join:用于根据两个或多个表中的列之间的关系,从这些表中查询数据
2)用于查询两张或多张表中同时符合某种条件的数据记录
3)语法中使用 INNER JOIN关键字连接多张表,并使用ON设置连接条件
4)是系统默认的表连接方式,可以省略INNER关键字
5)多表支持连续使用INNERJOIN,建议不超过三个表
6)ON后面的条件恒等与1,即为真,不然会报错
7)ON后面如果连接条件是字段时,字段的类型一定要一样
实例操作
- 有下面两张表,表名和内容如下:
第一张表:
mysql> select * from stu;
+----+---------+-------+------+------+
| id | name | score | hoby | dizi |
+----+---------+-------+------+------+
| 1 | tianxia | 78.00 | 2 | nj |
| 2 | diyi | 89.00 | 1 | nj |
| 3 | wode | 55.00 | 1 | NULL |
| 4 | tade | 57.00 | 3 | NULL |
| 5 | nida | 66.00 | 1 | nj |
| 6 | liushou | 55.00 | 3 | |
| 7 | xiaoer | 69.00 | 10 | bj |
| 8 | dage | 78.00 | 8 | tj |
+----+---------+-------+------+------+
第二张表:
mysql> select * from hob;
+----+-----------+
| id | hoby |
+----+-----------+
| 1 | 篮球 |
| 2 | 足球 |
| 3 | 乒乓球 |
| 4 | 羽毛球 |
| 5 | 台球 |
| 6 | 网球 |
+----+-----------+
6 rows in set (0.00 sec)
- 通过内连接将两表的hoby字段连接查询
得到的结果如下:
mysql> select a.id,a.name,b.hooby from stu as a inner join hob as b on a.hoby=b.id;
+----+---------+-----------+
| id | name | hooby |
+----+---------+-----------+
| 1 | tianxia | 足球 |
| 2 | diyi | 篮球 |
| 3 | wode | 篮球 |
| 4 | tade | 乒乓球 |
| 5 | nida | 篮球 |
| 6 | liushou | 乒乓球 |
+----+---------+-----------+
6 rows in set (0.00 sec)
二、MySQL左连接查询
左连接的语法结构
SELECT column ( 要查询的字段) FROM table1(需要做连接查询的表名)LEFT JOIN (左连接)table2 ON 连接条件
注:
1)假设有A、B两张表,左连接查询即 A表在左不动,B表在右滑动,A表与B表通过一个条件来关联记录,B表去匹配A表。
2)用于查询一张表的全部内容与另一张表符合条件的记录,即匹配左表中所有记录及右表中符合条件的记录
3)语法中使用 LEFT JOIN关键字连接表,并使用ON设置连接条件
4)未匹配到的字段默认用NULL补充
实例操作
- 通过左连接将两表的hoby字段连接查询
得到结果如下:
mysql> select a.id,a.name,b.hooby from stu as a left join hob as b on a.hoby=b.id;
+----+---------+-----------+
| id | name | hooby |
+----+---------+-----------+
| 2 | diyi | 篮球 |
| 3 | wode | 篮球 |
| 5 | nida | 篮球 |
| 1 | tianxia | 足球 |
| 4 | tade | 乒乓球 |
| 6 | liushou | 乒乓球 |
| 7 | xiaoer | NULL |
| 8 | dage | NULL |
+----+---------+-----------+
8 rows in set (0.00 sec)
三、MySQL右连接查询
右连接的语法结构
SELECT column ( 要查询的字段) FROM table1(需要做连接查询的表名)RIGHT JOIN (左连接)table2 ON 连接条件
注:
1)语法中使用 RIGHT JOIN关键字连接表,并使用ON设置连接条件
2)用于查询一张表的全部内容与另一张表符合条件的记录,即匹配右表中所有记录及左表中符合条件的记录
3)未匹配到的字段默认用NULL补充
实例操作
- 通过左连接将两表的hoby字段连接查询
mysql> select a.id,a.name,b.hooby from stu as a right join hob as b on a.hoby=b.id;
+------+---------+-----------+
| id | name | hooby |
+------+---------+-----------+
| 1 | tianxia | 足球 |
| 2 | diyi | 篮球 |
| 3 | wode | 篮球 |
| 4 | tade | 乒乓球 |
| 5 | nida | 篮球 |
| 6 | liushou | 乒乓球 |
| NULL | NULL | 羽毛球 |
| NULL | NULL | 台球 |
| NULL | NULL | 网球 |
+------+---------+-----------+
9 rows in set (0.00 sec)