資料庫之戰:MSSQL Server、Oracle PL/SQL 和 MySQL
市場上資料庫種類繁多,一場“資料庫之戰”已經打響。現在正是瞭解市場上三大關係資料庫——Microsoft SQL Server、Oracle PL/SQL 和 MySQL 的區別和重要性的最佳時機。關係資料庫管理系統目前已成為行業的中堅力量,但由於可供選擇的方案眾多,很難確定選擇哪一個。
關係資料庫管理系統誕生於 20 世紀 80 年代。本文重點探討了業界三大流行 RDBMS——Microsoft SQL Server、Oracle 和 MySQL 的歷史和特性。Microsoft SQL Server 和 Oracle 是商業軟體,而 MySQL 是開源 RDBMS。

Oracle 是第一家在 20 世紀 80 年代推出商用 RDBMS 的公司。20 世紀 90 年代中期,Microsoft 推出了 SQL Server,成為 Oracle 的有力競爭對手。另一方面,MySQL 最初是作為開源軟體開發和分發的。MySQL 首次釋出於 1995 年,Windows 版本於 1998 年釋出。2008 年,它被 SUN 收購,隨後被 Oracle 收購。
語言——溝通的核心
任何 RDBMS 的核心都是用於執行查詢的語言,這就是它們的效能和實現方式受到影響的原因。儘管所有這三種資料庫管理系統都使用某種版本的結構化查詢語言 (SQL),但 Microsoft SQL Server 使用 Transact-SQL (T-SQL),它是最初由 Sybase 開發並由 Microsoft 使用的 SQL 擴充套件。而 Oracle 則使用 PL/SQL (過程語言/SQL)。
兩者都是 SQL 的不同“風格”或方言,兩種語言的語法和功能略有不同。兩種語言的主要區別在於它們如何處理變數、儲存過程和內建函式。Oracle 中的 PL/SQL 還可以將過程組合到包中,而 MS SQL Server 則無法做到這一點。PL/SQL 可能稍微複雜一些,並且可能更強大,而 T-SQL 更簡單易於實現。

另一方面,MySQL 使用 T-SQL 的精簡版本,並且還結合了與 SQL/PSM 密切相關的過程語言。但是,MySQL 的儲存程式碼物件接近 ANSI 標準,但它們又沒有 T-SQL(Microsoft 和 Sybase 對 SQL 的專有擴充套件)的廣度和深度。
事務控制
事務可以被認為是一組作為單個單元執行的操作。例如,如果使用者嘗試執行一些 SQL 查詢,則要麼全部執行,要麼都不執行。這是 Oracle 和 MS SQL Server 在事務控制方面的主要區別之一。
預設情況下,MS SQL Server 將單獨執行並提交每個命令/任務,如果出現任何錯誤,則很難或不可能回滾更改。“BEGIN TRANSACTION”命令用於正確分組語句並宣告事務的開始,並且可以在結尾使用 COMMIT 語句。此 COMMIT 語句會將更改的資料寫入磁碟,並結束事務。在事務中,ROLLBACK 將丟棄在事務塊中所做的任何更改。發出 COMMIT 後,就不可能再回滾任何內容,只能回滾到 COMMIT 命令。

而在 Oracle 中,每個新的資料庫連線都被視為一個新的事務。隨著查詢的執行和命令的發出,更改僅在資料庫記憶體中進行,並保留在快取中。在發出顯式 COMMIT 語句之前,不會提交任何內容。COMMIT 後,發出的下一個命令實際上會啟動一個新事務,並且該過程再次開始。這提供了更大的靈活性和有助於錯誤控制,因為在顯式執行 COMMIT 命令之前,不會將任何更改提交到磁碟。
對於 MySQL,事務的支援與 InnoDB 輕鬆相容。InnoDB 是 MySQL 的儲存引擎,預設情況下可在 MySQL 中使用。它提供標準的 ACID 相容事務功能以及外部索引鍵支援。
資料庫物件的組織
資料庫物件的組織也是這三種資料庫之間的一個重要區別。MS SQL Server 按資料庫名稱組織所有物件,例如表、檢視和過程。MS SQL 使用者被分配給一個登入名,該登入名被授予對特定資料庫及其物件的訪問許可權。在 Microsoft SQL Server 中,每個資料庫在伺服器上都有一個私有的、不共享的磁碟檔案。
而在 Oracle 中,所有資料庫物件都按模式分組。模式不過是一組資料庫物件的子集資料庫結構。所有資料庫物件都在所有模式和使用者之間共享。即使所有內容都是共享的,每個使用者的角色和許可權都是定義的,並且可以將其限制在某些模式和表中。
簡而言之,MySQL、Oracle 和 SQL Server 都是功能強大的 RDBMS 選項。儘管它們在“底層”的工作方式和實現方式上存在許多其他差異,但它們的使用方式大致相同。每個資料庫都可以在不同的環境中以不同的目標使用。目的可能相同,但實現方式不同。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP