1.建立測試表
mysql> select * from t1;
+------+--------+
| id | kemu |
+------+--------+
| 1 | yuwen |
| 2 | shuxue |
| 3 | yingyu |
+------+--------+
3 rows in set (0.00 sec)
mysql> select * from t2;
+------+-------+
| id | score |
+------+-------+
| 4 | 80 |
| 2 | 90 |
| 3 | 100 |
+------+-------+
3 rows in set (0.00 sec)
2.left join
顧名思義,就是“左連接配接”,表1左連接配接表2,以左為主,表示以表1為主,關聯上表2的資料,查出來的結果顯示左邊的所有資料,然後右邊顯示的是和左邊有交集部分的資料。如下:
mysql> select * from t1 left join t2 on t1.id=t2.id;
+------+--------+------+-------+
| id | kemu | id | score |
+------+--------+------+-------+
| 2 | shuxue | 2 | 90 |
| 3 | yingyu | 3 | 100 |
| 1 | yuwen | NULL | NULL |
+------+--------+------+-------+
3 rows in set (0.00 sec)
3.right join
“右連接配接”,表1右連接配接表2,以右為主,表示以表2為主,關聯查詢表1的資料,查出表2所有資料以及表1和表2有交集的資料,如下:
mysql> select * from t2 left join t1 on t2.id=t1.id;
+------+-------+------+--------+
| id | score | id | kemu |
+------+-------+------+--------+
| 2 | 90 | 2 | shuxue |
| 3 | 100 | 3 | yingyu |
| 4 | 80 | NULL | NULL |
+------+-------+------+--------+
3 rows in set (0.00 sec)
4.join
join,其實就是“inner join”,為了簡寫才寫成join,兩個是表示一個的,内連接配接,表示以兩個表的交集為主,查出來是兩個表有交集的部分,其餘沒有關聯就不額外顯示出來,這個用的情況也是挺多的,如下
mysql> select * from t1 join t2 on t1.id=t2.id;
+------+--------+------+-------+
| id | kemu | id | score |
+------+--------+------+-------+
| 2 | shuxue | 2 | 90 |
| 3 | yingyu | 3 | 100 |
+------+--------+------+-------+
2 rows in set (0.00 sec)