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

SQL 兩表連接寫法大PK:ANSI-86 舊語法 vs ANSI-92 標準語法

     編輯:關於SqlServer

關於兩表連接,常見兩種寫法:

-- 寫法 1:舊式 WHERE 連接(ANSI SQL-86)
select A.c1, A.c2, B.c1, B.c2
from table1 A, table2 B
where A.id = B.id

-- 寫法 2:標準 JOIN 連接(ANSI SQL-92)
select A.c1, A.c2, B.c1, B.c2
from table1 A join table2 B
on A.id = B.id

哪種更好?現代開發提倡哪種?

標準演進的歷史脈絡

  • ANSI SQL-86:早期 Oracle、DB2、Informix 等支援的舊標準,使用逗號分隔表、WHERE 子句指定連接條件。
  • ANSI SQL-92:引入 INNER JOIN、LEFT JOIN 等顯式連接語法,屬「過渡級」標準。Oracle 8i 仍不支援,直到 9i 才完整實現;SQL Server、Sybase 較早支援。
  • 關鍵點:ANSI 標準分四級(入門、過渡、中級、完整),資料庫通常只需符合入門級。INNER/LEFT JOIN 屬過渡級,並非強制。

性能與風險權衡

  • 性能完全一樣:優化器生成的執行計畫無差異。
  • 可維護性:ANSI-92 語法(寫法 2)結構清晰,連接條件與篩選條件分離,不易出錯,推薦用於新專案。
  • 跨平台遷移風險:若涉及多種資料庫平台整合,舊式寫法(寫法 1)在雙表場景下相容性更安全,因為所有主流資料庫都支援 ANSI-86。

總結建議

  • 追求優雅、易維護、不易出錯 → 首選 ANSI-92 JOIN 語法。
  • 需考慮異構資料庫遷移/整合風險 → 雙表場景可用舊式 WHERE 連接。
  • 隨著 ANSI 標準持續修訂(遞歸、對象、陣列、XML 等特性陸續實現),現代資料庫對標準語法支援度越來越高。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved