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

摘要:Mysql 和Oracle,別再傻傻分不清。

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

本質區別:

  • Oracle數據庫是一個對象關係數據庫管理系統(收費)
  • MySQL是一個開源的關係數據庫管理系統(免費)

數據庫的安全性:

  • mysql使用三個參數來驗證用戶,即用戶名,密碼和位置
  • Oracle使用了更多的安全功能,如用戶名,密碼,配置文件,本地身份驗證,外部身份驗證,高級安全加強功能等

權限

MySQL的權限系統是經過繼承造成的分層結構。權限授於高層時,其餘低層隱式繼承被授於的權限,固然低層也可改寫這些權限。sql

按受權範圍不一樣,MySQL有如下種受權方式:數據庫

一、全局;segmentfault

二、基於每一個主機;安全

三、基於表;服務器

四、基於表列。字體

每一級在數據庫中都有一個受權表。當進行權限檢查時,MySQL從高到低檢查每一張表,低範圍受權優先於高範圍受權。spa

與Oracle不一樣,MySQL沒有角色的概念。也就是說,若是對一組用戶授於一樣的權限,須要對每個用戶分別受權。設計

模式遷移

模式包含表、視圖、索引、用戶、約束、存儲過程、觸發器和其餘數據庫相關的概念。多數關係型數據庫都有類似的概念。3d

包含內容以下:

  1. 模式對象的類似性;
  2. 模式對象的名稱;
  3. 表設計時的關注點;
  4. 多數據庫整合;
  5. MySQL模式整合的關注點。

模式對象的類似性

就模式對象,Oracle和MySQL存儲諸多的類似,但也有一些不一樣

模式對象的名稱

Oracle是大小寫不敏感的,而且模式對象是以在寫時行存儲。在Oracle的世界中,列、索引、存儲過程、觸發器以及列別名都是大小寫不敏感,而且在全部平臺都是如此。MySQL是大小寫敏感的,如數據庫相對的存儲路徑、表對應的文件都是如此

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

表設計的關注點

一、字符數據的類型;

二、列默認值。

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()

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

相關文章
相關標籤/搜索