必威电竞|足球世界杯竞猜平台

內連接
來源:互聯網

內連接,又稱作普通連接或自然連接,是一種基本的數據庫操作,用于合并來自不同表格的信息。它會從結果集中刪除所有與另一個表格中沒有匹配行的行,因此可能丟失一些信息。

SQL連接查詢分類

內連接

內連接通過比較兩個表格中指定字段的值來確定它們之間的聯系。其語法形式為:

```sql

SELECT fieldlist FROM table1 INNER JOIN table2 ON table1.column = table2.column

```

這種連接只會返回符合條件的行,其他不符合條件的行會被過濾掉。

外連接

左連接

左連接的特點在于,無論右邊表格是否有對應的匹配行,都會顯示左邊表格的所有行。其語法示例為:

```SQL

SELECT courses.cno, max(coursename), 計數(sno)

FROM courses LEFT JOIN grades ON courses.cno = grades.cno

GROUP BY courses.cno

```

右連接

右連接與左連接類似,只是角色互換,無論左邊表格是否有對應的匹配行,都會顯示右邊表格的所有行。

全連接

全連接會顯示左右兩個表格的所有行,包括沒有對應匹配行的行。其語法示例為:

```SQL

SELECT sno, name, major

FROM students FULL JOIN majors ON students.mno = majors.mno

```

自身連接

自身連接是指對同一個表格進行連接,通常需要使用別名來區分不同的實例。其語法示例為:

```sql

SELECT c1.cno, c1.coursename, c1.pno, c2.coursename

FROM courses c1, courses c2 WHERE c1.pno = C2Cno

```

交叉連接

交叉連接會產生笛卡爾積,即將第一個表格中的每一行與第二個表格中的每一行組合起來。其語法示例為:

```SQL

SELECT lastname + firstname FROM lastname CROSS JOIN firstanme

```

嵌套查詢

嵌套查詢可以通過`IN`或`EXISTS`關鍵字實現。例如,查詢某個學生的同鄉時,可以使用以下語句:

```sql

SELECT * FROM students

WHERE native IN (SELECT native FROM students WHERE name = '李山')

```

排序

SQL中的`ORDER BY`子句可用于按指定字段進行排序,默認為升序(`ASC`),也可以指定為降序(`DESC`)。例如,按平均成績排序時,可以使用以下語句:

```sql

SELECT sno, 計數(*), avg(mark) FROM grades

GROUP BY sno HAVING avg(mark) > 85

ORDER BY 3 DESC

```

注意事項

空格處理

當字段名稱包含空格時,需要用方括號`[]`將其括起來以確保正確識別。

NULL值處理

如果想要查找某個字段為空的行,可以使用`IS NULL`條件,例如:

```SQL

SELECT sno, courseno FROM grades WHERE mark IS NULL

```

ANY與ALL區別

在嵌套查詢中,`ANY`相當于邏輯運算符`OR`,而`ALL`相當于邏輯運算符`AND`。

否定查詢陷阱

在進行否定意義的查詢時,需要注意避免誤判。例如,查詢沒有選修某個課程的學生時,正確的語句應該是:

```sql

SELECT * FROM students

WHERE NOT EXISTS (SELECT * FROM grades WHERE grades.sno = students.sno AND cno = 'B2')

```

多重嵌套查詢

對于復雜的多重嵌套查詢,需要仔細分析并逐步排除不符合條件的行。例如,查詢選修了所有課程的學生時,可以使用以下語句:

```SQL

SELECT *

FROM students

WHERE NOT EXISTS (

SELECT *

FROM courses

WHERE NOT EXISTS (

SELECT *

FROM grades

WHERE sno = students.sno AND cno = courses.cno

)

)

```

實例

內連接的一個簡單例子是在兩個Excel工作簿之間建立連接。假設有一個出貨表和一個產品表,分別存儲著出貨信息和產品的詳細資料。出貨表包含日期、客戶、產品編碼和數量等字段,而產品表包含產品編碼、產品名稱和生產廠家等字段。為了將這兩個表格連接起來,我們可以使用內連接,條件為出貨表的產品編碼等于產品表的產品編碼。這樣得到的結果集將會包含出貨表和產品表中所有匹配的行,即具有相同的商品編碼的行。

參考資料 >

內連接 .簡書.2024-10-24

SQL內連接與外連接的區別.豆丁網.2024-10-24

兩通球閥 法蘭連接內螺紋連接.豆丁建筑網.2024-10-24

生活家百科家居網