【MySQL知识点】内连接、左连接、右连接

目前有2个表:users表和scores表,它们的数据如下:

mysql> SELECT * FROM users;
+----+----------+
| id | username |
+----+----------+
| 1  | xiaoming |
| 2  | awen     |
| 3  | kate     |
| 4  | lily     |
+----+----------+
4 rows in set (0.00 sec)
 
mysql> SELECT * FROM scores;
+---------+-------+
| user_id | score |
+---------+-------+
| 2       |    80 |
| 3       |    70 |
| 4       |   100 |
| 5       |    60 |
+---------+-------+
4 rows in set (0.00 sec)

可见, id为1的xiaoming在scores中没有对应的记录,同样,user_id为5的score在users中没有对应的记录。

1、内连接, 从下面的SQL查询可见,2个表中在另一个表中没有对应记录的记录都没有出现。

mysql> SELECT * FROM users INNER JOIN scores ON users.id = scores.user_id;
+----+----------+---------+-------+
| id | username | user_id | score |
+----+----------+---------+-------+
| 2  | awen     | 2       |    80 |
| 3  | kate     | 3       |    70 |
| 4  | lily     | 4       |   100 |
+----+----------+---------+-------+
3 rows in set (0.00 sec)

2、左连接, 从下面的SQL查询可见,JOIN左边的表中所有记录都有出现,id为1的没有对应的score记录的记录也有出现, 并且缺少的右表字段的数据全部补NULL。

mysql> SELECT * FROM users LEFT JOIN scores ON users.id = scores.user_id;
+----+----------+---------+-------+
| id | username | user_id | score |
+----+----------+---------+-------+
| 1  | xiaoming | NULL    |  NULL |
| 2  | awen     | 2       |    80 |
| 3  | kate     | 3       |    70 |
| 4  | lily     | 4       |   100 |
+----+----------+---------+-------+
4 rows in set (0.00 sec)

3、右连接, 从下面的SQL查询可见,JOIN右边的表中所有记录都有出现,user_d为5的没有对应的user记录的记录也有出现, 并且缺少的左表字段的数据全部补NULL。

mysql> SELECT * FROM users RIGHT JOIN scores ON users.id = scores.user_id;
+------+----------+---------+-------+
| id   | username | user_id | score |
+------+----------+---------+-------+
| 2    | awen     | 2       |    80 |
| 3    | kate     | 3       |    70 |
| 4    | lily     | 4       |   100 |
| NULL | NULL     | 5       |    60 |
+------+----------+---------+-------+
4 rows in set (0.00 sec)

综上所述,

a. 内连接,显示两个表中有联系的的全部数据。

b. 左连接, 显示左表的全部数据,右表中和左表没有联系的记录不出现。

c. 右连接,显示右表的全部数据,左表中和右表没有联系的记录不出现。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值