2009-02-26 22 views
1

我讀過,雖然SQL是爲了標準化,但它是用不同的數據庫實現的。我只用過數據庫的MySQL。PHP使用哪些數據庫共享相同(或大部分)的SQL語法?

我想知道的是其他數據庫共享相同的語法?我現在正在使用PDO,並且我想設置一個標誌來允許用戶指定他們想要使用的數據庫。

我想知道哪些是可以處理大多數(如果不是全部的話)我的一般MySQL查詢的'安全'數據庫。主要選擇,插入,更新,刪除,刪除。

謝謝

回答

3

這樣的ANSI SQL有幾個修訂。

所有主要的數據庫引擎(即OracleMS SQLPostgreSQLMySQL)應該(應該)在理論上支持SQL-92

這包括你所提到的一切:SELECTINSERTUPDATEDROPDELETE,只要你不使用複雜的條款和他們在一起。

在實踐中:

  1. 並非所有的數據庫都支持全套SQL-92

    編寫跨平臺SQL即使在SQL-92中也需要大量的測試。

  2. SQL中的平臺無關性在您插入1001st行並需要優化查詢時結束。

    如果您瀏覽略高於StackOverflow問題標記SQL,你會看到,大多數人說「幫我優化這個查詢」,大多數的回答說:「利用這個平臺相關的黑客

1

你會發現某些數據庫存儲數據類型的方式不同,例如,mysql將布爾值存儲爲1和0,postgres將它們存儲爲't'和'f'。

只要你的數據庫類意識到需要轉換數據,你應該沒問題,可能96.3482%的日常CRUD會很好地工作。

即使您創建直接調用PDO的數據庫類,您以後也可以添加一些用於數據轉換或查詢修改的邏輯。您可以使用數據庫抽象層ADOdb(它得到了什麼植物所渴望的)

我建議確保您的客戶實際上給一個關於他們需要你花費大量的時間開發功能,你可能不需要之前運行的數據庫廢話。

+0

不知道爲什麼這是downvoted ...似乎相當合理的迴應。 – 2009-02-26 23:10:25

0

在所有RDBMS中,標準化的SQL92幾乎是相同的。不同點在於,標準沒有定義,例如LIMIT或日期時間處理函數,當然還有過程語言。 對於PHP常用的數據庫:在MySQL,SQLite和PostgreSQL之間並不難。 Oracle,Sybase和DB/2並不會那麼容易。

相關問題