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)

猜你喜欢

转载自blog.csdn.net/wulimingde/article/details/109134307
今日推荐