Sql-Standard

頂級數據庫供應商的 SQL (DML-) 方言之間有何不同?

  • May 29, 2015

是否曾使用過至少兩種頂級數據庫產品(例如 Oracle、SQL Server、Informix、Sybase、DB2、Teradata)在 SQL 方面進行過擴展工作的人是否知道數據庫供應商的 SQL 方言彼此之間有多麼不同。由於我來自 Oracle 背景,因此我特別感興趣

  • 分析函式
  • 示範條款
  • 分層查詢(start with .. connect by想到)
  • 任何其他超出正常的功能 ( select x, y from a, b where...)

問題可能歸結為這些特徵是否以及在何種程度上受 ansi 標準的監管。

實際上,我想知道是否有“經驗法則”表明我是否(以及如何)可以採用在一個數據庫上執行的 SQL DML 語句並讓它在另一個數據庫上執行。

ANSI是一個創建自願標準的私人非營利組織。因此,它實際上並沒有監管任何東西。遵循公認的標准通常對公司有利,這就是為什麼許多數據庫公司遵循 SQL 的 ANSI 標準。當然,隨著每家公司尋求使他們的產品與眾不同,他們將開發超出標準的附加功能。

來自w3schools

儘管 SQL 是 ANSI(美國國家標準協會)標準,但 SQL 語言有許多不同的版本。

但是,為了符合 ANSI 標準,它們都以類似的方式至少支持主要命令(例如 SELECT、UPDATE、DELETE、INSERT、WHERE)。

注意:除了 SQL 標準之外,大多數 SQL 數據庫程序還有自己的專有擴展!

在您列出的更專業的領域中,SQL 方言之間的差異太大,無法將問題簡化為“經驗法則”。在這些情況下,您可能應該為每個數據庫轉換整個語句。通過這樣做,可以利用每個數據庫可以提供的特殊功能為每個平台優化每個語句。將 SQL 寫入最低公分母 (ANSI) 可能會簡化遷移,但會以性能為代價。

SQL Dialects Reference對 SQL 變體進行了一些有用的比較。有關更多資訊,我建議您搜尋您正在切換的特定方言,如下所示:

   differences between mysql and oracle sql

引用自:https://dba.stackexchange.com/questions/1014