MySQL中表的幾種連接方式
MySQL表中的連接方式其實非常簡單,這里就簡單的羅列出他們的特點。
表的連接(JOIN)可以分為內(nèi)連接(JOIN/INNER JOIN)和外連接(LEFT JOIN/RIGHT JOIN)。
首先我們看一下我們本次演示的兩個表:
mysql> SELECT * FROM student; +------+----------+------+------+ | s_id | s_name | age | c_id | +------+----------+------+------+ | 1 | xiaoming | 13 | 1 | | 2 | xiaohong | 41 | 4 | | 3 | xiaoxia | 22 | 3 | | 4 | xiaogang | 32 | 1 | | 5 | xiaoli | 41 | 2 | | 6 | wangwu | 13 | 2 | | 7 | lisi | 22 | 3 | | 8 | zhangsan | 11 | 9 | +------+----------+------+------+ 8 rows in set (0.00 sec) mysql> SELECT * FROM class; +------+---------+-------+ | c_id | c_name | count | +------+---------+-------+ | 1 | MATH | 65 | | 2 | CHINESE | 70 | | 3 | ENGLISH | 50 | | 4 | HISTORY | 30 | | 5 | BIOLOGY | 40 | +------+---------+-------+ 5 rows in set (0.00 sec)
首先,表要能連接的前提就是兩個表中有相同的可以比較的列。
1.內(nèi)連接
mysql> SELECT * FROM student INNER JOIN class ON student.c_id = class.c_id; +------+----------+------+------+------+---------+-------+ | s_id | s_name | age | c_id | c_id | c_name | count | +------+----------+------+------+------+---------+-------+ | 1 | xiaoming | 13 | 1 | 1 | MATH | 65 | | 2 | xiaohong | 41 | 4 | 4 | HISTORY | 30 | | 3 | xiaoxia | 22 | 3 | 3 | ENGLISH | 50 | | 4 | xiaogang | 32 | 1 | 1 | MATH | 65 | | 5 | xiaoli | 41 | 2 | 2 | CHINESE | 70 | | 6 | wangwu | 13 | 2 | 2 | CHINESE | 70 | | 7 | lisi | 22 | 3 | 3 | ENGLISH | 50 | +------+----------+------+------+------+---------+-------+ 7 rows in set (0.00 sec)
簡單的講,內(nèi)連接就是把兩個表中符合條件的行的所有數(shù)據(jù)一起展示出來,即如果不符合條件,即在表A中找得到但是在B中沒有(或者相反)的數(shù)據(jù)不予以顯示。
2.外連接
mysql> SELECT * FROM student LEFT JOIN class ON student.c_id = class.c_id; +------+----------+------+------+------+---------+-------+ | s_id | s_name | age | c_id | c_id | c_name | count | +------+----------+------+------+------+---------+-------+ | 1 | xiaoming | 13 | 1 | 1 | MATH | 65 | | 2 | xiaohong | 41 | 4 | 4 | HISTORY | 30 | | 3 | xiaoxia | 22 | 3 | 3 | ENGLISH | 50 | | 4 | xiaogang | 32 | 1 | 1 | MATH | 65 | | 5 | xiaoli | 41 | 2 | 2 | CHINESE | 70 | | 6 | wangwu | 13 | 2 | 2 | CHINESE | 70 | | 7 | lisi | 22 | 3 | 3 | ENGLISH | 50 | | 8 | zhangsan | 11 | 9 | NULL | NULL | NULL | +------+----------+------+------+------+---------+-------+ 8 rows in set (0.00 sec) mysql> SELECT * FROM student RIGHT JOIN class ON student.c_id = class.c_id; +------+----------+------+------+------+---------+-------+ | s_id | s_name | age | c_id | c_id | c_name | count | +------+----------+------+------+------+---------+-------+ | 1 | xiaoming | 13 | 1 | 1 | MATH | 65 | | 4 | xiaogang | 32 | 1 | 1 | MATH | 65 | | 5 | xiaoli | 41 | 2 | 2 | CHINESE | 70 | | 6 | wangwu | 13 | 2 | 2 | CHINESE | 70 | | 3 | xiaoxia | 22 | 3 | 3 | ENGLISH | 50 | | 7 | lisi | 22 | 3 | 3 | ENGLISH | 50 | | 2 | xiaohong | 41 | 4 | 4 | HISTORY | 30 | | NULL | NULL | NULL | NULL | 5 | BIOLOGY | 40 | +------+----------+------+------+------+---------+-------+ 8 rows in set (0.00 sec)
上面分別展示了外連接的兩種情況:左連接和右連接。這兩種幾乎是一樣的,唯一的區(qū)別就是左連接的主表是左邊的表,右連接的主表是右邊的表。而外連接與內(nèi)連接不同的地方就是它會將主表的所有行都予以顯示,而在主表中有,其他表中沒有的數(shù)據(jù)用NULL代替。
總結(jié)
到此這篇關(guān)于MySQL中表的幾種連接方式的文章就介紹到這了,更多相關(guān)MySQL表的連接方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
CentOS7.3下mysql 8.0.13安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了CentOS7.3下mysql 8.0.13安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-11-11
Mysql的root賬戶密碼忘記了怎么解決(百分百教會你重置!)
mysql是常用的數(shù)據(jù)庫,很多程序員在使用的過程中會出現(xiàn)root用戶密碼忘記的事情,這篇文章主要給大家介紹了關(guān)于Mysql的root賬戶密碼忘記了該怎么解決的相關(guān)資料,文中介紹的方法百分百教會你如何重置,需要的朋友可以參考下2024-05-05
Mysql使用全文索引(FullText?index)的實例代碼
使用索引時數(shù)據(jù)庫性能優(yōu)化的必備技能之一,下面這篇文章主要給大家介紹了關(guān)于Mysql使用全文索引(FullText?index)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04

