三分鐘帶你分清Mysql 和Oracle之間的誤區

華為雲開發者社群發表於2020-10-31
摘要:Mysql 和Oracle,別再傻傻分不清。

mysql 和Oracle 在開發中的使用是隨處可見的,那就簡單去了解一下這倆款火的不行的資料庫。

本質區別:

  • Oracle資料庫是一個物件關聯式資料庫管理系統(收費)
  • MySQL是一個開源的關聯式資料庫管理系統(免費)

資料庫的安全性:

  • mysql使用三個引數來驗證使用者,即使用者名稱,密碼和位置
  • Oracle使用了更多的安全功能,如使用者名稱,密碼,配置檔案,本地身份驗證,外部身份驗證,高階安全增強功能等

許可權

MySQL的許可權系統是通過繼承形成的分層結構。許可權授於高層時,其他低層隱式繼承被授於的許可權,當然低層也可改寫這些許可權。

按授權範圍不同,MySQL有以下種授權方式:

1、全域性;

2、基於每個主機;

3、基於表;

4、基於表列。

每一級在資料庫中都有一個授權表。當進行許可權檢查時,MySQL從高到低檢查每一張表,低範圍授權優先於高範圍授權。

與Oracle不同,MySQL沒有角色的概念。也就是說,如果對一組使用者授於同樣的許可權,需要對每一個使用者分別授權。

模式遷移

模式包含表、檢視、索引、使用者、約束、儲存過程、觸發器和其他資料庫相關的概念。多數關係型資料庫都有相似的概念。

包含內容如下:

  1. 模式物件的相似性;
  2. 模式物件的名稱;
  3. 表設計時的關注點;
  4. 多資料庫整合;
  5. MySQL模式整合的關注點。

模式物件的相似性

就模式物件,Oracle和MySQL儲存諸多的相似,但也有一些不同

三分鐘帶你分清Mysql 和Oracle之間的誤區

模式物件的名稱

Oracle是大小寫不敏感的,並且模式物件是以在寫時行儲存。在Oracle的世界中,列、索引、儲存過程、觸發器以及列別名都是大小寫不敏感,並且在所有平臺都是如此。MySQL是大小寫敏感的,如資料庫相對的儲存路徑、表對應的檔案都是如此

當把關鍵字用引號引起來時,Oracle和MySQL都允許把這些關鍵字用於模式物件。但MySQL對於一些關鍵字,不加引號也行。

表設計的關注點

1、字元資料的型別;

2、列預設值。

3.2.3.1 字元資料型別

(1) Oracle支援4種字型型別:CHAR、NCHAR、NVARCHAR2和VARCHAR2。CHAR和NCHAR的最大長度為2000位元組,

NVARCHAR2和VARCHAR2最大長度為4000位元組。

(2)MySQL和Oracle在字元型資料儲存和讀取上存在一些不同。MySQL的字元型別,如CHAR和VARCHAR的長度小於65535位元組。Oracle支援4種字型型別:C HAR、NCHAR、NVARCHAR2和VARCHAR2。CHAR和NCHAR的最大長度為2000位元組,NVARCHAR2和VARCHAR2最大長度為4000位元組。

(3.2.3.2 列預設值)

MySQL會處理列預設值,不允許他為空,這點和Oracle不同。在Oracle中如果向表插入資料,需要對有所有不允許為NULL列的值。

多資料庫遷移

如果多個MySQL資料庫位於同一個資料庫服務上,支援遷移。

資料儲存概念

MySQL的資料庫對應於伺服器上資料目錄內的了目錄,這一資料儲存方式與多資料資料庫不同,也包括Oracle。資料庫中的表對應一個或者多個資料庫目錄下的檔案,並取表儲存時的儲存引擎。

一個Oracle資料庫包含一個或者多個表空間。表空間對應資料在磁碟上的物理儲存。表空間是從一個或者多個資料檔案開始構建的。資料檔案是檔案系統中的檔案或者原始儲存的一塊空間。

語法上的區別:

主鍵:

  • mysql一般使用自動增長型別,在建立表的時候指定表的主鍵為auto increment,主鍵就會自動增長。
  • Oracle中沒有自動增長,主鍵一般使用序列,插值時依次賦值即可

引號問題:

  • Oracle不使用雙引號,會報錯
  • mysql則對引號沒有限制

分頁查詢:

  • mysql分頁查詢使用關鍵字limit來實現
  • Oracle沒有實現分頁查詢的關鍵字,實現起來較複雜,在每個結果集中只有一個rownum欄位標明它的位置,並且只能用rownum<=某個數,不能用rownum>=某個數,因為ROWNUM是偽列,在使用時所以需要為ROWNUM取一個別名,變成邏輯列,然後來操作

資料型別:

  • mysql中的整型:int(),字串型別:varchar()
  • Oracle中的整形:number(),字串型別:varchar2()

 

點選關注,第一時間瞭解華為雲新鮮技術~

相關文章