MySQL支持多種多表查詢(xún)方式,表查包括內連接(INNER JOIN)、詢(xún)方左連(lian)接(LEFT JOIN)(′ω`)、表查右連接(RI??GHT JOIN)和全連接(FULL JOIN),詢(xún)方以及交叉連接(CRO(╥_╥)Sヽ(′▽?zhuān)?ノS JOIN)等。表查
MySQL多表查詢(xún)的詢(xún)方方法有哪些
在MyS??Q??L數據庫中,我們經(jīng)常需要從多個(gè)表中獲取數據,表查為了實(shí)現這個(gè)目的詢(xún)方,MySQL提供了(le)多種多表查詢(xún)的表查方法,本文將介紹這?些方法(???),詢(xún)方并通過(guò)示例來(lái)說(shuō)明它們的表查使用。
1、詢(xún)方內連接(INNER JOIN)
內連接是表查最常用的多表查詢(xún)方法,它返回兩個(gè)表中滿(mǎn)足連接條件的詢(xún)方記錄,在內連接中,表查只有當兩個(gè)表中的記錄滿(mǎn)足連接條件時(shí),才會(huì )將它們組合在一起。
示例:
假設我們有兩個(gè)表,一個(gè)是學(xué)生表(students),另一個(gè)是成績(jì)表(scores)。
學(xué)生表(students):??
id | name |
| 1 | 張三 |
| 2 | 李四 |
| 3 | 王五 |
成績(jì)表(scor(′?_?`)es):
| id | student_id | subject | score |
| 1 | 1 | 語(yǔ)文 | 80 |
| 2 | 1 | 數學(xué) | 90 |
| 3 | 2 | 語(yǔ)文 | 85 |
| 4 | 2 | 數學(xué) | 95 |
我們可以使用內連接查詢(xún)每個(gè)學(xué)生的姓名和他們的數學(xué)成績(jì):
SELECT students.name, sc┐(′?`)┌ores.scoreFROM studentsINNER JOIN scores ON students.id = scores.student_idWHERE scores.subject = '數學(xué)';
結果:
| name | score |
| 張三 | 90 |
| 李四 | 95 |
2、左連接(LEFT JOIN)
左連接返回左表中的所有記錄,以及右表中滿(mǎn)足連接條件的記錄,如果右表中沒(méi)有滿(mǎn)足條件的記錄,則結果集中對應(ying)的字段將為NULL。
示例:
我(wo)們可以使用左連接查詢(xún)所有(???)學(xué)生的姓名和他們的語(yǔ)文成績(jì)(如果有的話(huà)):
SELECT students.name, scores.scoreFROM studentsLEFT JOIN scores ON students.id = scores.student_idWHERE scores.subject = '語(yǔ)文';
結果:
na?me | score |
| 張三 | 80 |
| 李四 | 85 |
| 王五 | NULL |
3、右連接(RIGHT JOIN)
右連接與左連接相反,它返回右表中的所有記錄,以及左表中滿(mǎn)足連接條件(????)的記錄,如果左表中沒(méi)有滿(mǎn)足條件的記錄,則結果集中對應的字段將為NULL。
4、全連接(FULL JOIN)
5、交叉連接(CROSS JOIN)
交叉連接返回兩個(gè)表的笛卡爾積,即每個(gè)表中的每條記錄都與另??一個(gè)表中的每條記錄組(???)合,這種方法通常不常用,因為它會(huì )產(chǎn)生大量的結果集。??
相關(guān)問(wèn)(wen)題與解答
1、什么是內連接?
答:內連接是最常(chang)用的多(O_O)表查詢(xún)方法,它返回兩個(gè)表中滿(mǎn)足連接條件的記錄,在內連接中,??只有當兩個(gè)表中的記錄滿(mǎn)足連接條件時(shí),才會(huì )將它(ta)們組合在一起。
2、左連接和右連接有什么(me)區別?
3、全連接的作用是什么?
答:全連接返回兩個(gè)表中滿(mǎn)足連接條件的記錄,以及左表和右表中沒(méi)有滿(mǎn)足條件的記錄,┐(′д`)┌如果沒(méi)有滿(mǎn)足條件的記錄,則結果集(ji)中對應的字段將為NULL。
4、什么是交叉連接?
答(′ω`):交叉連接返回兩個(gè)表的笛卡爾積,即每個(gè)表中的每??條記錄都與另一個(gè)表中的??每條記錄組合,這種方法通常不常用,因為它會(huì )產(chǎn)生大量的結果集。