mysql数据库左/右 内/外连接使用方法

(1).表A和B的描述

mysql> desc A;
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id    | int(10) unsigned | NO   | PRI |         |       |
| name  | varchar(128)     | NO   |     |         |       |
+-------+------------------+------+-----+---------+-------+

mysql> desc B;
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id    | int(10) unsigned | NO   | PRI |         |       |
| score | int(10) unsigned | YES  |     | 0       |       |
+-------+------------------+------+-----+---------+-------+


(2).表A和B中的内容

mysql> select * from A ;

+----+------+
| id | name |
+----+------+
|  1 | yao  |
|  2 | yao1 |
|  3 | yao3 |
|  4 | yao4 |
+----+------+

mysql> select * from B;
+----+-------+
| id | score |
+----+-------+
|  1 |   100 |
|  2 |    90 |
|  3 |    80 |
+----+-------+

(3)左外连接

mysql> select * from A left outer join B on A.id=B.id;
+----+------+------+-------+
| id | name | id   | score |
+----+------+------+-------+
|  1 | yao  |    1 |   100 |
|  2 | yao1 |    2 |    90 |
|  3 | yao3 |    3 |    80 |
|  4 | yao4 | NULL |  NULL |
+----+------+------+-------+

(4)左连接

mysql> select * from A left join B on A.id=B.id;      
+----+------+------+-------+
| id | name | id   | score |
+----+------+------+-------+
|  1 | yao  |    1 |   100 |
|  2 | yao1 |    2 |    90 |
|  3 | yao3 |    3 |    80 |
|  4 | yao4 | NULL |  NULL |
+----+------+------+-------+

(5)右外连接

mysql> select * from A right outer join B on A.id=B.id;    
+------+------+----+-------+
| id   | name | id | score |
+------+------+----+-------+
|    1 | yao  |  1 |   100 |
|    2 | yao1 |  2 |    90 |
|    3 | yao3 |  3 |    80 |
+------+------+----+-------+

(6)右连接

mysql> select * from A right join B on A.id=B.id;      
+------+------+----+-------+
| id   | name | id | score |
+------+------+----+-------+
|    1 | yao  |  1 |   100 |
|    2 | yao1 |  2 |    90 |
|    3 | yao3 |  3 |    80 |
+------+------+----+-------+
//

1.表A的内容

mysql> select * from A;
+----+------+
| id | name |
+----+------+
|  1 | yao  |
|  2 | yao1 |
|  3 | yao3 |
|  4 | yao4 |
+----+------+

2.表B的内容

mysql> select * from B;
+----+-------+
| id | score |
+----+-------+
|  1 |   100 |
|  2 |    90 |
|  3 |    80 |
|  5 |    70 |
+----+-------+

3.内连接

mysql> select * from A inner join B on A.id=B.id;    
+----+------+----+-------+
| id | name | id | score |
+----+------+----+-------+
|  1 | yao  |  1 |   100 |
|  2 | yao1 |  2 |    90 |
|  3 | yao3 |  3 |    80 |
+----+------+----+-------+

4.左边接

mysql> select * from A left join B on A.id=B.id;
+----+------+------+-------+
| id | name | id   | score |
+----+------+------+-------+
|  1 | yao  |    1 |   100 |
|  2 | yao1 |    2 |    90 |
|  3 | yao3 |    3 |    80 |
|  4 | yao4 | NULL |  NULL |
+----+------+------+-------+

5.左外连接

mysql> select * from A left outer join  B on A.id=B.id;
+----+------+------+-------+
| id | name | id   | score |
+----+------+------+-------+
|  1 | yao  |    1 |   100 |
|  2 | yao1 |    2 |    90 |
|  3 | yao3 |    3 |    80 |
|  4 | yao4 | NULL |  NULL |
+----+------+------+-------+


6.右连接

mysql> select * from A right join B on A.id=B.id;
+------+------+----+-------+
| id   | name | id | score |
+------+------+----+-------+
|    1 | yao  |  1 |   100 |
|    2 | yao1 |  2 |    90 |
|    3 | yao3 |  3 |    80 |
| NULL | NULL |  5 |    70 |
+------+------+----+-------+


7.右外连接

mysql> select * from A right outer join B on A.id=B.id;
+------+------+----+-------+
| id   | name | id | score |
+------+------+----+-------+
|    1 | yao  |  1 |   100 |
|    2 | yao1 |  2 |    90 |
|    3 | yao3 |  3 |    80 |
| NULL | NULL |  5 |    70 |
+------+------+----+-------+


8.交叉连接

mysql> select * from A corss join B;
+----+------+----+-------+
| id | name | id | score |
+----+------+----+-------+
|  1 | yao  |  1 |   100 |
|  2 | yao1 |  1 |   100 |
|  3 | yao3 |  1 |   100 |
|  4 | yao4 |  1 |   100 |
|  1 | yao  |  2 |    90 |
|  2 | yao1 |  2 |    90 |
|  3 | yao3 |  2 |    90 |
|  4 | yao4 |  2 |    90 |
|  1 | yao  |  3 |    80 |
|  2 | yao1 |  3 |    80 |
|  3 | yao3 |  3 |    80 |
|  4 | yao4 |  3 |    80 |
|  1 | yao  |  5 |    70 |
|  2 | yao1 |  5 |    70 |
|  3 | yao3 |  5 |    70 |
|  4 | yao4 |  5 |    70 |
+----+------+----+-------+


总结

1.内连接结果集中只保留on条件匹配上的记录.

2.外连接保留左/右表中所有记录,不匹配的记录补NULL

3.左连接与左外连接无区别;右连接与右外连接无区别


ps:实验没有验证到的地方或者有误的地方欢迎大家拍砖

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值