Rumah pangkalan data SQL 理解sql语句的内连接、左外连接、右外连接

理解sql语句的内连接、左外连接、右外连接

Jan 15, 2021 am 10:20 AM

理解sql语句的内连接、左外连接、右外连接

推荐( 免费):SQL教程

大家在初学数据库时,对DQL中的连接查询是否有些疑惑,不知道什么时候什么场景下该用那种连接查询?
在这里插入图片描述
不要着急,接下来由我来给大家介绍一下,本人对内连接、左外连接、右外连接的特点和应用场景的理解,供大家参考。

以下的代码演示均基于name表和country表展开。
name表

id name
1 西施
2 杨玉环
3 貂蝉
4 王昭君
5 赵飞燕

country表

id country A_ID
1 春秋时期越国人 1
2 唐代蒲州永乐人 2
3 东汉末年山西忻州人 3
4 西汉时期南郡秭归人 4
5 战国时期 6

注 :
1)b表A_ID与a表a_id 存在关系
2)连接查询是要使用关联条件去除不匹配数据否则会出现笛卡尔积

1) 内连接

语法:	select  要查询的字段 from 表名1 inner join 表名2 on 表1.字段 = 表2.字段;
	inner join 可简写为 逗号,
内连接特点:
	只会保留完全符合on后条件的数据
应用场景:
	如果两张表有外键关系可以使用内链接,因为通过内链接每一条只能返回单条记录
Salin selepas log masuk
select * from name n inner join country c on n.id = c.N_ID;
Salin selepas log masuk
id name id country N_ID
1 西施 1 春秋时期越国人 1
2 杨玉环 2 唐代蒲州永乐人 2
3 貂蝉 3 东汉末年山西忻州人 3
4 王昭君 4 西汉时期南郡秭归人 4

2)左外连接

语法:	select 要查询的字段 from 表1 left outer join 表2 on 表1.字段 = 表2.字段;
	outer 可省略
左外连接特点:
	以左表为主,会保留左表中不符合on后条件的数据
应用场景:
	只有部分记录可以从表2中查到,但表1想要显示所有记录,就可以和表2通过左外连接查询。
Salin selepas log masuk
select * from name n left join country c on n.id=c.N_ID;
Salin selepas log masuk
id name id country N_ID
1 西施 1 春秋时期越国人 1
2 杨玉环 2 唐代蒲州永乐人 2
3 貂蝉 3 东汉末年山西忻州人 3
4 王昭君 4 西汉时期南郡秭归人 4
5 赵飞燕 null null null

3) 右外连接

语法:	select * from 表1 right outer join 表2 on 表1.字段 = 表2.字段;
	outer 可省略
右外连接特点:
	以右表为主,会保留右表中不符合on后条件的数据
应用场景:
	和左外连接相反
	只有部分记录可以从表1中查询到,但表2想要显示所有记录, 就可以和表1通过右外连接查询。
Salin selepas log masuk
select * from name n right join country c on n.id=c.N_ID;
Salin selepas log masuk
id name id country N_ID
1 西施 1 春秋时期越国人 1
2 杨玉环 2 唐代蒲州永乐人 2
3 貂蝉 3 东汉末年山西忻州人 3
4 王昭君 4 西汉时期南郡秭归人 4
null null 5 战国时期 6

4) 完全链接

语法:	select * from 表1 full join 表2 on 表1.字段 = 表2.字段;完全连接特点:
	会保留表1和表2的全部数据
Salin selepas log masuk
select * from name n full join country c on n.id=c.N_ID;
Salin selepas log masuk
id name id country N_ID
1 西施 1 春秋时期越国人 1
2 杨玉环 2 唐代蒲州永乐人 2
3 貂蝉 3 东汉末年山西忻州人 3
4 王昭君 4 西汉时期南郡秭归人 4
5 赵飞燕 null null null
null null 5 战国时期 6

注意:该语法在MySql中不适用
好的,本人介绍完毕,不知道有没有帮助到各位呢?
如果有什么不对,还请各位指出哦~
在这里插入图片描述

更多相关知识敬请关注sql栏目~

Atas ialah kandungan terperinci 理解sql语句的内连接、左外连接、右外连接. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah jenis pembahagian data yang berbeza dalam SQL (mendatar, menegak)? Apakah jenis pembahagian data yang berbeza dalam SQL (mendatar, menegak)? Mar 13, 2025 pm 02:01 PM

Artikel ini membincangkan pembahagian data mendatar dan menegak dalam SQL, yang memberi tumpuan kepada kesannya terhadap prestasi dan skalabilitas. Ia membandingkan manfaat dan pertimbangan untuk memilih di antara mereka.

Bagaimanakah saya menggunakan fungsi agregat dalam SQL untuk meringkaskan data (SUM, AVG, Count, Min, Max)? Bagaimanakah saya menggunakan fungsi agregat dalam SQL untuk meringkaskan data (SUM, AVG, Count, Min, Max)? Mar 13, 2025 pm 01:50 PM

Artikel ini menerangkan cara menggunakan fungsi agregat SQL (SUM, AVG, Count, Min, Max) untuk meringkaskan data, memperincikan kegunaan dan perbezaannya, dan bagaimana menggabungkannya dalam pertanyaan.

Apakah risiko keselamatan menggunakan SQL dinamik dan bagaimana saya dapat mengurangkannya? Apakah risiko keselamatan menggunakan SQL dinamik dan bagaimana saya dapat mengurangkannya? Mar 13, 2025 pm 01:59 PM

Artikel ini membincangkan risiko keselamatan SQL dinamik, yang memberi tumpuan kepada suntikan SQL, dan menyediakan strategi mitigasi seperti menggunakan pertanyaan parameter dan pengesahan input.

Apakah tahap pengasingan urus niaga yang berlainan dalam SQL (baca yang tidak komited, baca bacaan yang komited, berulang, bersiri)? Apakah tahap pengasingan urus niaga yang berlainan dalam SQL (baca yang tidak komited, baca bacaan yang komited, berulang, bersiri)? Mar 13, 2025 pm 01:56 PM

Artikel ini membincangkan Tahap Pengasingan Transaksi SQL: Baca tidak komited, baca bacaan yang komited, berulang, dan bersiri. Ia mengkaji kesan mereka terhadap konsistensi dan prestasi data, dengan menyatakan bahawa pengasingan yang lebih tinggi memastikan konsistensi yang lebih besar tetapi MA

Apakah sifat asid transaksi dalam SQL? Apakah sifat asid transaksi dalam SQL? Mar 13, 2025 pm 01:54 PM

Artikel ini membincangkan sifat asid (atomik, konsistensi, pengasingan, ketahanan) dalam urus niaga SQL, penting untuk mengekalkan integriti data dan kebolehpercayaan.

Bagaimanakah saya mematuhi Peraturan Privasi Data (GDPR, CCPA) menggunakan SQL? Bagaimanakah saya mematuhi Peraturan Privasi Data (GDPR, CCPA) menggunakan SQL? Mar 18, 2025 am 11:22 AM

Artikel membincangkan menggunakan SQL untuk pematuhan GDPR dan CCPA, yang memberi tumpuan kepada pengabaian data, permintaan akses, dan penghapusan automatik data yang sudah lapuk. (159 aksara)

Bagaimanakah saya mengamankan pangkalan data SQL saya terhadap kelemahan biasa seperti suntikan SQL? Bagaimanakah saya mengamankan pangkalan data SQL saya terhadap kelemahan biasa seperti suntikan SQL? Mar 18, 2025 am 11:18 AM

Artikel ini membincangkan mendapatkan pangkalan data SQL terhadap kelemahan seperti suntikan SQL, menekankan pernyataan yang disediakan, pengesahan input, dan kemas kini tetap.

Bagaimanakah saya melaksanakan pembahagian data dalam SQL untuk prestasi dan skalabiliti? Bagaimanakah saya melaksanakan pembahagian data dalam SQL untuk prestasi dan skalabiliti? Mar 18, 2025 am 11:14 AM

Artikel membincangkan pelaksanaan pembahagian data dalam SQL untuk prestasi dan skalabiliti yang lebih baik, kaedah perincian, amalan terbaik, dan alat pemantauan.

See all articles