理解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后条件的数据 应用场景: 如果两张表有外键关系可以使用内链接,因为通过内链接每一条只能返回单条记录
select * from name n inner join country c on n.id = c.N_ID;
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通过左外连接查询。
select * from name n left join country c on n.id=c.N_ID;
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通过右外连接查询。
select * from name n right join country c on n.id=c.N_ID;
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的全部数据
select * from name n full join country c on n.id=c.N_ID;
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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.

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.

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

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

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

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)

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

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