一文帶你了解MySQL的左連接與右連接
左查詢(LEFT JOIN)
在MySQL中,左查詢(Left Join)是一種用于連接兩個或多個表格的查詢操作。左查詢返回左表格中的所有行,并包括與右表格中匹配的行。
左查詢是指將左邊的表作為主要表,連接右邊的表,并返回所有匹配的行。以下是左查詢的語法:
SELECT 列名 FROM 表1 LEFT JOIN 表2 ON 表1.列 = 表2.列;
- 表1 和 表2 是要連接的兩個表,其中 表1 是主要表。
- 列名 是你想要獲取的列,可以是從 表1 或者 表2 中的列,也可以是其他計算字段。
- ON 后面的條件用于指定連接的條件,它們應該是兩個表中相關(guān)列之間的相等比較。
右查詢(RIGHT JOIN)
右查詢是指將右邊的表作為主要表,連接左邊的表,并返回所有匹配的行。以下是右查詢的語法:
SELECT 列名 FROM 表1 RIGHT JOIN 表2 ON 表1.列 = 表2.列;
表2 是主要表,而 表1 是次要表。其他語法元素與左查詢非常相似。
除此之外,MySQL中還提供了INNER JOIN和OUTER JOIN等不同類型的連接,它們也可以用于實現(xiàn)類似的功能。但是在我們實際使用中,LEFT JOIN和RIGHT JOIN是最常見的連接方式,能夠滿足一般的查詢需求。
如果通過以上的簡單敘述還不是很清楚,那么我們以一個案例來詳細說明:
案例說明
下面我們通過一個案例,以學生表格和班級表格為例,演示如何使用左查詢和右查詢將學生表格和班級表格連接在一起:
學生表格,學生表格里面有學生id,姓名和班級id:
CREATE TABLE students ( student_id INT, student_name VARCHAR(50), class_id INT );
向?qū)W生表格中添加三條數(shù)據(jù):
INSERT INTO students (student_id, student_name, class_id) VALUES (1, '張三', 101), (2, '李四', 102), (3, '王五', 101);
然后創(chuàng)建班級表格:
CREATE TABLE classes ( class_id INT, class_name VARCHAR(50) );
向班級表格中添加兩條數(shù)據(jù):
INSERT INTO classes (class_id, class_name) VALUES (101, '理科班'), (103, '文科班');
接著使用左查詢進行連接:
SELECT students.student_id, students.student_name, classes.class_name FROM students LEFT JOIN classes ON students.class_id = classes.class_id;
查詢結(jié)果:
student_id | student_name | class_name
1 | 張三 | 理科班 2 | 李四 | NULL 3 | 王五 | 理科班
如上圖所示,它是我們使用左查詢連接了學生表格和班級表格。結(jié)果中包括了學生表格中的所有行,同時將與班級表格中匹配的班級信息添加到結(jié)果集中。如果沒有匹配的班級記錄,則顯示為NULL。
此外,左查詢也可以使用LEFT OUTER JOIN進行表示,兩者是等效的,只是關(guān)鍵字不同而已。
MySQL中的左查詢允許我們返回左表格中的所有行,并且包括與右表格中匹配的行。這對于需要顯示左表格的全部數(shù)據(jù)時非常有用。
同理,當我們使用右查詢的代碼實行時,會出現(xiàn)不一樣的情況:
使用右查詢進行連接:
SELECT students.student_id, students.student_name, classes.class_name FROM students RIGHT JOIN classes ON students.class_id = classes.class_id;
查詢結(jié)果:
student_id | student_name | class_name
1 | 張三 | 理科班 3 | 王五 | 理科班 NULL | NULL | 文科班
上述結(jié)果中,我們使用了右查詢連接了學生表格和班級表格。結(jié)果中包括了班級表格中的所有行,同時將與學生表格中匹配的學生信息添加到結(jié)果集中。如果沒有匹配的學生記錄,則顯示為NULL。
同時,右查詢也可以使用RIGHT OUTER JOIN進行表示,兩者是等效的,只是關(guān)鍵字不同而已。
總結(jié)來說,MySQL中的右查詢允許我們返回右表格中的所有行,并且包括與左表格中匹配的行。這對于需要顯示右表格的全部數(shù)據(jù)時非常有用。
到此這篇關(guān)于一文帶你了解MySQL的左連接與右連接的文章就介紹到這了,更多相關(guān)MySQL 左連接與右連接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL統(tǒng)計今日生成create_time的數(shù)據(jù)量的方法小結(jié)
create_time通常是一個用于表示某個實體或事件創(chuàng)建時間的字段,在數(shù)據(jù)庫設(shè)計、日志記錄或許多軟件系統(tǒng)中常見,它存儲的是一個日期或時間戳,記錄了數(shù)據(jù)首次被創(chuàng)建的具體時刻,本文介紹了MySQL統(tǒng)計今日生成create_time的數(shù)據(jù)量的方法,需要的朋友可以參考下2024-08-08show engine innodb status顯示信息不全如何解決
執(zhí)行 show engine innodb status\G 時,顯示的信息不全,DEADLOCK相關(guān)信息太多,后面的都沒了2012-11-11帶例子詳解Sql中Union和Union?ALL的區(qū)別
這篇文章主要介紹了帶例子詳解Sql中Union和Union?ALL的區(qū)別,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09win10下安裝兩個MySQL5.6.35數(shù)據(jù)庫
這篇文章主要為大家詳細介紹了win10下兩個MySQL5.6.35數(shù)據(jù)庫安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05Windows下MySQL服務(wù)無法停止和刪除的解決辦法
我在 Windows 操作系統(tǒng)上,使用解壓壓縮包的方式安裝 MySQL。遇到一點問題,下面通過本文給大家分享Windows下MySQL服務(wù)無法停止和刪除的解決辦法,需要的朋友可以參考下2017-02-02sql中with?as用法以及with-as性能調(diào)優(yōu)/with用法舉例
SQL中的WITH?AS語法是一種強大的工具,可以簡化復雜查詢的編寫,提高查詢的可讀性和維護性,這篇文章主要給大家介紹了關(guān)于sql中with?as用法以及with-as性能調(diào)優(yōu)/with用法的相關(guān)資料,需要的朋友可以參考下2024-01-01