首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

關係代數運算對應 SQL 語法完整對照表

     編輯:關於SqlServer

關係代數與 SQL 的對應關係

關係代數是關聯式資料庫的理論基礎,SQL 則是其商業化實作。理解兩者對應,有助於撰寫更精確、高效的查詢。

1. 集合運算

關係代數SQL 關鍵字說明範例
並集 (R ∪ S)UNION合併兩結果集,移除重複列SELECT * FROM R UNION SELECT * FROM S
並集保留重複UNION ALL合併且保留重複,效能較佳SELECT * FROM R UNION ALL SELECT * FROM S
交集 (R ∩ S)INTERSECT僅保留兩結果集皆有的列SELECT * FROM R INTERSECT SELECT * FROM S
差集 (R - S)EXCEPT (SQL Server)
MINUS (Oracle)
在 R 中但不在 S 中的列SELECT * FROM R EXCEPT SELECT * FROM S

前提:兩關聯結構必須相容(屬性數、順序、資料型別相同)。

2. 刪除部分關聯運算

關係代數SQL 對應說明
選擇 (σcondition(R))WHERE condition依條件篩選資料列(水平切割)
投影 (πattributes(R))SELECT attr1, attr2 ...只保留指定欄位(垂直切割),自動去重

3. 合併兩關聯元組運算

關係代數SQL 對應說明
笛卡兒積 (R × S)CROSS JOIN 或 FROM R, S兩表所有列組合,極少直接使用
自然連接 (R ⋈ S)NATURAL JOIN 或 INNER JOIN ... USING同名欄位自動等值連接
Theta 連接INNER JOIN ... ON condition自訂連接條件
外部連接LEFT/RIGHT/FULL OUTER JOIN保留單邊無對應列

4. 改名運算 (ρ)

SQL 使用別名:SELECT a.col1 FROM TableA AS a 或 SELECT col1 AS new_name FROM TableA。

5. 進階:除法運算 (÷)

SQL 無直接關鍵字,常用 NOT EXISTS 雙重否定模擬:「找出修過『所有』必修課的學生」。

SELECT s.StudentID
FROM Students s
WHERE NOT EXISTS (
    SELECT c.CourseID FROM RequiredCourses c
    EXCEPT
    SELECT sc.CourseID FROM StudentCourses sc WHERE sc.StudentID = s.StudentID
);

視覺化輔助

並集 Venn 圖 交集 Venn 圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved