欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL語句多表聯(lián)查的實(shí)現(xiàn)方法示例

 更新時(shí)間:2022年04月15日 16:25:02   作者:雜亂無章-Jessues  
多表聯(lián)合檢索可以通過連接運(yùn)算來完成,而連接運(yùn)算又可以通過廣義笛卡爾積后再進(jìn),下面這篇文章主要給大家介紹了關(guān)于SQL語句多表聯(lián)查實(shí)現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

最近面試實(shí)習(xí)生,發(fā)現(xiàn)一般來說,公司喜歡通過一些 SQL 語句來考察你對(duì)數(shù)據(jù)庫的使用熟不熟悉。所以我來總結(jié)一下我在面試中遇到多表聯(lián)查是怎么聯(lián)查的。

三表聯(lián)查

首先來說多表聯(lián)查的一些知識(shí)點(diǎn)。

多表是指等于或者多余三個(gè)表以上的數(shù)據(jù)庫查詢。多表聯(lián)查的類型有:

  • 內(nèi)連接:join,inner join
  • 外連接:left join,left outer join,right join,right outer join,union
  • 交叉連接:cross join

解釋一下,外連接是指將兩個(gè)表進(jìn)行合并,如果有不相同的列,那么另外一個(gè)表將顯示 null。而內(nèi)連接是指內(nèi)連接查詢操作列出與連接條件匹配的數(shù)據(jù)行,它使用比較運(yùn)算符比較被連接列的列值。也就是說,運(yùn)算符可以是 =,也可以是 >、>=、<=、<、!>、!<和<>。

內(nèi)連接

假如我們有兩個(gè)表

student.table
id name clsId
1 ?tjc ? ?1
2 ?zhangsan ? ?2
3 李四 ? ?3
4 ?劉五 ? ?4
5 ?黃六 ? ?5
class.table
clsId clsName
1 ? ? ? ?軟件1班
2 ? ? ? ?軟件2班
3 ? ? ? ?軟件3班
4 ? ? ? ?軟件4班

為了查詢上面兩個(gè)表,我們可以使用兩種查詢語句:

select * from student as s,class as as c where s.clsId = class.clsId
select * from student as s inner join class as c on s.clsId = class.clsId

兩種結(jié)果都是:

id name clsId clsId clsName

1  tjc    1        1        軟件1班

2  zhangsan    2        2        軟件2班

3 李四    3        3        軟件3班

4  劉五    4        4        軟件4班

外連接

外連接跟內(nèi)連接不同之處,如果查詢的表中,如果通過關(guān)聯(lián)標(biāo)示符中,一個(gè)表的數(shù)據(jù)而另外一個(gè)表沒有響應(yīng)的數(shù)據(jù)項(xiàng),那么就顯示 null。

左連接

查詢 SQL 語句為:

select * from student as s left join class as c on s.clsId = c.clsId 

以左表為基準(zhǔn),如果右表沒有相應(yīng)的數(shù)據(jù)項(xiàng),那么右表顯示為 null。

右連接

select * from student as s right join class as c on s.clsId = c.clsId 

以右表為基準(zhǔn),如果左表沒有相應(yīng)的數(shù)據(jù)項(xiàng),那么左表顯示為 null。

全連接

select * from student as s full outer join class c on s.clsId = c.clsId 

完整外部聯(lián)接返回左表和右表中的所有行。當(dāng)某行在另一個(gè)表中沒有匹配行時(shí),則另一個(gè)表的選擇列表列包含空值。如果表之間有匹配行,則整個(gè)結(jié)果集行包含基表的數(shù)據(jù)值。

交叉連接

交叉聯(lián)接返回左表中的所有行,左表中的每一行與右表中的所有行組合。交叉聯(lián)接也稱作笛卡爾積。

select * from student as s cross join class as c order by s.id

附:多表聯(lián)合查詢訓(xùn)練

示例:求既學(xué)過“001”號(hào)課又學(xué)過 “002”號(hào)課的所有學(xué)生的學(xué)號(hào)

Select S1.S# From SC S1, SC S2
Where S1.S# = S2.S# and S1.C#=‘001'
and S2.C#=‘002 ;

示例:求“001”號(hào)課成績(jī)比“002”號(hào)課成績(jī)高的所有學(xué)生的學(xué)號(hào)

Select S1.S# From SC S1, SC S2
Where S1.S# = S2.S# and S1.C#=‘001'
and S2.C#=‘002' and S1.Score > S2.Score;

總結(jié)

到此這篇關(guān)于SQL語句多表聯(lián)查實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SQL語句多表聯(lián)查內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MYSQL數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)時(shí)出現(xiàn)亂碼的解決辦法

    MYSQL數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)時(shí)出現(xiàn)亂碼的解決辦法

    我是用的最后一種方法,前面三種解決MYSQL導(dǎo)入數(shù)據(jù)亂碼的方法沒試過,東莞SEO推薦大家直接使用第四種方法處理MYSQL導(dǎo)入中文數(shù)據(jù)時(shí)的亂碼問題。
    2011-01-01
  • wamp中mysql安裝時(shí)能啟動(dòng)重啟后無法啟動(dòng)的解決辦法

    wamp中mysql安裝時(shí)能啟動(dòng)重啟后無法啟動(dòng)的解決辦法

    這篇文章主要介紹了wamp中mysql安裝時(shí)能啟動(dòng)重啟后無法啟動(dòng)的解決辦法 ,需要的朋友可以參考下
    2018-08-08
  • mysql?窗口函數(shù)?ROW_NUMBER、NTILE詳解

    mysql?窗口函數(shù)?ROW_NUMBER、NTILE詳解

    這篇文章主要介紹了mysql?窗口函數(shù)?ROW_NUMBER、NTILE,本文通過sql語句給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • MySQL觸發(fā)器概念、原理與用法詳解

    MySQL觸發(fā)器概念、原理與用法詳解

    這篇文章主要介紹了MySQL觸發(fā)器概念、原理與用法,結(jié)合實(shí)例形勢(shì)詳細(xì)分析了mysql觸發(fā)器相關(guān)概念、原理、創(chuàng)建、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-07-07
  • MySQL 發(fā)生同步延遲時(shí)Seconds_Behind_Master還為0的原因

    MySQL 發(fā)生同步延遲時(shí)Seconds_Behind_Master還為0的原因

    騰訊云數(shù)據(jù)庫 MySQL 的只讀實(shí)例出現(xiàn)了同步延遲,但是監(jiān)控的延遲時(shí)間顯示為 0,而且延遲的 binlog 距離非 0,且數(shù)值越來越大。臨時(shí)解決之后,仔細(xì)想了一想,Seconds_Behind_Master 雖然計(jì)算方式有點(diǎn)坑,但是出現(xiàn)這么“巨大”的誤差還是挺奇怪的,本文就來分析下這個(gè)問題
    2021-06-06
  • MySQL實(shí)現(xiàn)兩張表數(shù)據(jù)的同步

    MySQL實(shí)現(xiàn)兩張表數(shù)據(jù)的同步

    本文將介紹mysql 觸發(fā)器實(shí)現(xiàn)兩個(gè)表的數(shù)據(jù)同步,需要學(xué)習(xí)MySQL的童鞋可以參考。
    2016-10-10
  • 詳解 MySQL的FreeList機(jī)制

    詳解 MySQL的FreeList機(jī)制

    這篇文章主要介紹了MySQL的FreeList機(jī)制的相關(guān)資料,幫助大家更好的理解和使用MySQL 數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-11-11
  • mysql中用于數(shù)據(jù)遷移存儲(chǔ)過程分享

    mysql中用于數(shù)據(jù)遷移存儲(chǔ)過程分享

    mysql 數(shù)據(jù)遷移用的一個(gè)存儲(chǔ)過程,需要的朋友可以收藏下。
    2011-05-05
  • MySQL中通過EXPLAIN如何分析SQL的執(zhí)行計(jì)劃詳解

    MySQL中通過EXPLAIN如何分析SQL的執(zhí)行計(jì)劃詳解

    這篇文章主要給大家介紹了關(guān)于MySQL中通過EXPLAIN如何分析SQL的執(zhí)行計(jì)劃的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的安康學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • MySQL深分頁問題及三種解決方案

    MySQL深分頁問題及三種解決方案

    本文主要介紹了MySQL深分頁問題及三種解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06

最新評(píng)論