MySQL 连接代码笔记

MySQL inner join 

mysql> select * from testA;
+-------+--------+
| class | action |
+-------+--------+
|     1 | 并     |
|     2 | 交     |
|     3 | 除     |
|     4 | 选择   |
|     2 | 投影   |
+-------+--------+
5 rows in set (0.00 sec)

mysql> select * from testB;
+----+-------+---------+------------+
| id | name  | address | time       |
+----+-------+---------+------------+
|  1 | c语言 | 昨天    | 2011-09-09 |
|  2 | MySQL | 今天    | 2018-06-06 |
|  3 | C++   | 明天    | 2018-09-09 |
|  4 | GO    | 未来    | 2019-09-08 |
+----+-------+---------+------------+
4 rows in set (0.00 sec)

mysql> select testA.class, testB.address, testB.time
    -> from testA inner join testB on testA.class = testB.id;
+-------+---------+------------+
| class | address | time       |
+-------+---------+------------+
|     1 | 昨天    | 2011-09-09 |
|     2 | 今天    | 2018-06-06 |
|     2 | 今天    | 2018-06-06 |
|     3 | 明天    | 2018-09-09 |
|     4 | 未来    | 2019-09-08 |
+-------+---------+------------+
5 rows in set (0.50 sec)

//等价于

mysql> select testA.class, testB.address, testB.time
    -> from testA,testB where testA.class = testB.id;
+-------+---------+------------+
| class | address | time       |
+-------+---------+------------+
|     1 | 昨天    | 2011-09-09 |
|     2 | 今天    | 2018-06-06 |
|     2 | 今天    | 2018-06-06 |
|     3 | 明天    | 2018-09-09 |
|     4 | 未来    | 2019-09-08 |
+-------+---------+------------+
5 rows in set (0.00 sec)

MySQL left join

mysql> select * from testA;
+-------+--------+
| class | action |
+-------+--------+
|     1 | 并     |
|     2 | 交     |
|     3 | 除     |
|     4 | 选择   |
|     2 | 投影   |
+-------+--------+
5 rows in set (0.00 sec)

mysql> select * from testB;
+----+-------+---------+------------+
| id | name  | address | time       |
+----+-------+---------+------------+
|  1 | c语言 | 昨天    | 2011-09-09 |
|  2 | MySQL | 今天    | 2018-06-06 |
|  3 | C++   | 明天    | 2018-09-09 |
|  4 | GO    | 未来    | 2019-09-08 |
+----+-------+---------+------------+
4 rows in set (0.00 sec)

mysql> select testA.class, testB.address, testB.time
    -> from testA left join testB on testA.class = testB.id;
+-------+---------+------------+
| class | address | time       |
+-------+---------+------------+
|     1 | 昨天    | 2011-09-09 |
|     2 | 今天    | 2018-06-06 |
|     3 | 明天    | 2018-09-09 |
|     4 | 未来    | 2019-09-08 |
|     2 | 今天    | 2018-06-06 |
+-------+---------+------------+
5 rows in set (0.86 sec)

MySQL right join

mysql> update testA set class = 8 where action = '除';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update testA set class = 6 where action = '投影';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from testA;
+-------+--------+
| class | action |
+-------+--------+
|     1 | 并     |
|     2 | 交     |
|     8 | 除     |
|     4 | 选择   |
|     6 | 投影   |
+-------+--------+
5 rows in set (0.00 sec)

mysql> select * from testB;
+----+-------+---------+------------+
| id | name  | address | time       |
+----+-------+---------+------------+
|  1 | c语言 | 昨天    | 2011-09-09 |
|  2 | MySQL | 今天    | 2018-06-06 |
|  3 | C++   | 明天    | 2018-09-09 |
|  4 | GO    | 未来    | 2019-09-08 |
+----+-------+---------+------------+
4 rows in set (0.00 sec)

mysql> select testA.class, testB.address, testB.time
    -> from testA right join testB on testA.class = testB.id;
+-------+---------+------------+
| class | address | time       |
+-------+---------+------------+
|     1 | 昨天    | 2011-09-09 |
|     2 | 今天    | 2018-06-06 |
|  NULL | 明天    | 2018-09-09 |
|     4 | 未来    | 2019-09-08 |
+-------+---------+------------+
4 rows in set (0.00 sec)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值