內連接(INNER JOIN)

9.3.3? 內連接(INNER JOIN)

內連接也稱為等同連接,返回的結果集是兩個表中所有相匹配的數據,而舍棄不匹配的數據。也就是說,在這種查詢中,DBMS只返回來自源表中的相關的行,即查詢的結果表包含的兩源表行,必須滿足ON子句中的搜索條件。作為對照,如果在源表中的行在另一表中沒有對應(相關)的行,則該行就被過濾掉,不會包括在結果表中。內連接使用比較運算符來完成。內連接可分為兩種。

1.等值連接

使用等于號(=)比較被連接列的列值,在查詢結果中列出被連接表中的所有列,包括其中的重復列。圖9.12給出了典型的等值內連接示意圖。

?
圖9.12? 等值內連接

實例8? 使用INNER JOIN內連接查詢

從STUDENT表和TEACHER表中查詢學生姓名、所在系、所修的所有課程的課程號以及開課教師姓名。在9.3.2節已經通過WHERE子句實現了該實例,這里通過INNER JOIN內連接兩表來實現。實例代碼:

SELECT????? ?SNAME, S.DNAME, S.CNO, TNAME
FROM??? ??STUDENT AS S
INNER JOIN ?TEACHER AS T
ON ???S. CNO = T. CNO
ORDER BY??SNAME

運行結果如圖9.13所示。

?
圖9.13? 使用INNER JOIN實現的查詢結果

可以看到,通過INNER JOIN內連接兩表也得到了同樣的結果。

2.不等連接

在連接條件中,可以使用其他比較運算符,比較被連接的列的列值。這些運算符包括>、>=、<=、<、!>、!<和<>。

實例9? 使用不等連接進行查詢

查詢學生修的非本系教師開設的課程信息,包括學生學號、姓名、所在系、課程號、成績、以及開課教師的姓名信息。實例代碼:

SELECT??? ?S.SNO, SNAME, S. DNAME, S.CNO, MARK, TNAME
FROM??? ??STUDENT AS S
INNER JOIN ?TEACHER AS T
ON ???S. DNAME<> T. DNAME
AND???S. CNO =T. CNO
ORDER BY??? ?SNAME

運行結果如圖9.14所示。

?
圖9.14? 不等連接的查詢結果

說明?在默認情況下,DBMS將多表查詢按INNER JOIN來執行,除非指定OUTER JOIN。即,如果將上例中的INNER JOIN關鍵字替換為JOIN也會得到同樣的結果。


當然也可以使用WHERE子句實現上例。代碼如下。

SELECT ??S.SNO, SNAME, S. DNAME, S.CNO, MARK, TNAME
FROM ??STUDENT AS S, TEACHER AS T
WHERE??S.DNAME <> T.DNAME
AND???S.CNO = T.CNO
ORDER BY??? ?SNAME

運行結果如圖9.15所示。

當然,使用INNER JOIN也可以實現多表的內連接,但是INNER JOIN一次只能連接兩個表,要連接多表,必須進行多次連接。

?
圖9.15? 使用WHERE子句實現的不等連接

實例10? 使用INNER JOIN實現多表的內連接

根據TEACHER表、COURSE表和STUDENT表,查詢所有學生的姓名、所在系、所修課程、考試時間、課程成績及授課教師姓名。該列與9.2.3節的實例完全相同,只是在9.2.3節采用WHERE子句的方式實現,這里采用INNER JOIN內連接的方式實現,代碼如下。

SELECT ??SNAME, STUDENT.DNAME, CNAME, CTEST, MARK, TNAME
FROM ??TEACHER
INNER JOIN ?COURSE
ON? ???TEACHER.CNO = COURSE.CNO
INNER JOIN ?STUDENT
ON? ???TEACHER.CNO = STUDENT.CNO
ORDER BY??? ?SNAME

運行結果如圖9.16所示。

?
圖9.16? 使用INNER JOIN實現內連接查詢結果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273432.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273432.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273432.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

幾個 PHP 的“魔術常量”

PHP 向它運行的任何腳本提供了大量的預定義常量。不過很多常量都是由不同的擴展庫定義的&#xff0c;只有在加載了這些擴展庫時才會出現&#xff0c;或者動態加載后&#xff0c;或者在編譯時已經包括進去了。 有八個魔術常量它們的值隨著它們在代碼中的位置改變而改變。例如 __…

外連接(OUTER JOIN)

9.3.4 外連接&#xff08;OUTER JOIN&#xff09; 不管是內連接還是帶WHERE子句的多表查詢&#xff0c;都組合自多個表&#xff0c;并生成結果表。換句話說&#xff0c;如果任何一個源表中的行在另一個源表中沒有匹配&#xff0c;DBMS將不把該行放在最后的結果表中。 而外連…

Android應用切換皮膚功能實現

原文地址&#xff1a;http://www.eoeandroid.com/thread-318159-1-1.html 現在大多數android應用都支持切換皮膚的功能。比如千千靜聽&#xff0c;墨跡天氣等等。本文介紹兩種切換皮膚的方法。1.第一種是通過安裝皮膚apk的方式。當安裝了皮膚apk包之后&#xff0c;主程序只需要…

交叉連接(CROSS JOIN)

9.3.5 交叉連接&#xff08;CROSS JOIN&#xff09; 除了在FROM子句中使用逗號間隔連接的表外&#xff0c;SQL還支持另一種被稱為交叉連接的操作&#xff0c;它們都返回被連接的兩個表所有數據行的笛卡爾積&#xff0c;返回到的數據行數等于第一個表中符合查詢條件的數據行數…

[BZOJ 1046] [HAOI2007] 上升序列 【DP】

題目鏈接&#xff1a;BZOJ - 1046 題目分析 先倒著做最長下降子序列&#xff0c;求出 f[i]&#xff0c;即以 i 為起點向后的最長上升子序列長度。 注意題目要求的是 xi 的字典序最小&#xff0c;不是數值&#xff01; 如果輸入的 l 大于最長上升子序列長度&#xff0c;輸出 Imp…

UNION運算符

9.4.2 UNION運算符 在SQL中&#xff0c;UNION運算符用于執行集合并的運算。關于UNION運算符的使用&#xff0c;這里通過實例來說明。 實例16 使用UNION運算符執行集合并的運算 在STUDENT表中&#xff0c;查詢選修了1號或者10號課程的學生的學號、姓名、所在系信息。實例代…

「OC」類的深入研究、description方法和sel

一、類的深入研究 &#xff08;一&#xff09;類的本質 類本身也是一個對象&#xff0c;是class類型的對象&#xff0c;簡稱“類對象”。 Class類型的定義&#xff1a; Typedef struct obj class *class; 類名就代表著類對象&#xff0c;每個類只有一個類對象。 利用class 創建…

UNION JOIN 連接表

9.4.5 UNION JOIN 連接表 使用UNION JOIN進行多表連接&#xff0c;與9.3節介紹的各種表的連接類型不同&#xff0c;它并不對表中的數據進行任何匹配處理&#xff0c;而只是把來自一個源表中的行與另一個源表中的行聯合起來&#xff0c;生成的結果表中包括第一個表中的所有行和…

如何從一個對話框彈出單文檔視圖

如何從一個對話框彈出單文檔視圖 分類&#xff1a; Visual C2006-06-01 20:02 9323人閱讀 評論(19) 收藏 舉報文檔initializationmfctemplatesvalidationcommand朱金燦 相信不少人進行數據庫編程都有這樣的問題&#xff0c;如何設置一個登陸框&#xff0c;通過登陸框來…

獲取網址中參數的方式

1&#xff1a; $c$_GET[c]; 獲取這種形式的參數http://127.0.0.1/?c1 2&#xff1a; example.com/class/function/ID。 id是function函數的參數&#xff0c;這樣function函數可以獲取到ID的值當作函數的參數傳遞進自己。3&#xff1a;$_GET數組是超全局變量數組&#xff0c;…

js為下拉列表賦值

function addItemmonth() { var tOption document.createElement("Option");tOption.text "月明顯";tOption.selected true;tOption.value document.all("DropDownList3").options.length 1;document.all("DropDownList3").add(t…

[原創]html5游戲_五線譜打音符

html5手機游戲—五線譜打音符 1.[用五線譜打唱名] 2.[用唱名打五線譜] 3.[無限練習模式] 用來熟悉五線譜上音符的位置 代碼不難&#xff0c;這回注釋還是有認真寫的[只是廢代碼沒有全部刪除。。。] 效果圖&#xff1a; --- 在線地址: http://wangxinsheng.herokuapp.com/staffg…

C#文件操作基礎之File類和FileInfo類

文件和I/O流的差異&#xff1a; 文件是一些具有永久存儲及特定順序的字節組成的一個有序的、具有名稱的集合。因此對于文件&#xff0c;我們經常想到文件夾路徑&#xff0c;磁盤存儲&#xff0c;文件和文件夾名等方面。I/O流提供一種后備存儲寫入字節和從后備存儲讀取字節的方式…

poj 2051 Argus(優先隊列)

題目鏈接: http://poj.org/problem?id2051 思路分析: 優先級問題&#xff0c;使用優先隊列求解&#xff1b;當執行某個任務后&#xff0c;再增加一個任務到隊列中&#xff0c; 該任務的優先級為執行任務的時間加上其時間間隔,如此反復直到求出前K個執行任務。 代碼&#xff1a…

Mybatis 算術邏輯運算

第一種方法&#xff1a; 用了轉義字符把>和<替換掉&#xff0c;然后就沒有問題了。 SELECT * FROM test WHERE 1 1 AND start_date < CURRENT_DATE AND end_date > CURRENT_DATE 附&#xff1a;XML轉義字符 < …

c++ STL deque容器成員函數

deque是雙向隊列&#xff0c;即可以在頭部插入刪除&#xff0c;也可以在尾部插入刪除。內部并不連續&#xff0c;這一點和vector并不一樣。可能第1個元素和第2個元素的地址是不連在一起的。在使用時用it迭代器會安全一點。 這是c 98標準的&#xff0c;不是c11的。11標準新加的函…

sqlserver中判斷表或臨時表是否存在

轉自&#xff1a;http://www.cnblogs.com/yugen/archive/2010/07/25/1784749.html 1、判斷數據表是否存在 方法一&#xff1a; use yourdb;go if object_id(Ntablename,NU) is not nullprint 存在else print 不存在 例如&#xff1a;use fireweb;go if object_id(NTEMP_TBL,NU)…

Mysql數據庫正則表達式

1.基本字符的匹配 SELECT * FROM a1 WHERE name regexp 1000 #匹配名稱含有1000的所有行 SELECT * FROM a1 WHERE name regexp .000 #匹配以000結尾的所有行&#xff0c;(.正則中表示&#xff1a;匹配任意一個字符) 從中可以看到正則表達式能夠模擬LIKE使用通配符&#xff0c…

android項目 之 記事本(6)----- 加入手寫

想必大家都用過QQ的白板功能&#xff0c;里面主要有兩項&#xff0c;一個是涂鴉功能&#xff0c;事實上類似于上節的畫板功能&#xff0c;而還有一個就是手寫&#xff0c;那記事本怎么能沒有這個功能呢&#xff0c;今天就來為我們的記事本加入手寫功能。 先上圖&#xff0c;看看…

HTTP協議中常見請求方法以及一些常見錯誤代碼

GET&#xff1a; 請求指定的頁面信息&#xff0c;并返回實體主體。 HEAD&#xff1a; 只請求頁面的首部。 POST&#xff1a; 請求服務器接受所指定的文檔作為對所標識的URI的新的從屬實體。 PUT&#xff1a; 從客戶端向服務器傳送的數據取代指定的文檔的內容。 DELETE&#xff…