Oracle和MySQL的區別

我就吃最后一口發表於2024-05-21

剛進公司接觸到了Oracle,記錄一下他們的區別,面試的時候也有問到過,而且上來就是千萬級別的資料調優,嘻嘻,我只是一個3年java。題外話,甚至有一些公司會問我java跟C、python的區別,以及具體區別的例子,然後我如果回答上來了,他們會告訴我,這邊只做後端而且只用java,笑嘻了

就本人最近的使用和了解,整理了一下:

基本區別、大小寫敏感、事務、時間日期、分頁、常用欄位型別

基本區別

資料庫型別:

Oracle是物件關聯式資料庫管理系統(ORDBMS => 基於物件模型,儲存資料及其方法,資料儲存在物件中,用於儲存複雜的資料)

MySQL是開源的關聯式資料庫管理系統(RDBMS => 基於關係模型, 儲存資料,資料儲存在實體裡面,用於處理比較簡單的資料)

預設埠和使用者名稱:

Oracle預設埠:1521 預設使用者:system
MySQL預設埠:3306 預設使用者:root

安全:

Oracle使用了許多安全功能(本地身份驗證,外部身份驗證,高階安全增強等)

MySQL使用三個引數來驗證使用者,即使用者名稱,密碼和位置

效能:

MySQL在讀取和寫入方面效能通常比Oracle高

併發:

Oracle支援大併發訪問量,是OLTP(聯機事務處理 => 事務性非常高的系統,一般都是高可用的線上系統。比如銀行、電商)最好的工具

MySQL併發小,面對大訪問量可以做分表分庫最佳化

臨時表:

Oracle預設所有會話內可見(可設定當前會話內或事務內可見),建立後需要顯式刪除。

MySQL只在當前會話可見,一旦會話關閉就自動刪除。

大小寫敏感

Oracle預設是大寫,在雙引號""下,大小寫敏感

MySQL預設是小寫,大小寫不敏感

事務

Oracle預設不自動提交,需要使用者手動提交

提交命令:

BEGIN:事務塊開始的標誌(要麼全部執行成功,要麼全部失敗回滾)
COMMIT:提交事務(對資料庫的修改是可見的)
ROLLBACK:取消尚未提交的事務,將資料庫恢復到事務開始之前的狀態
SAVEPOINT:在事務中建立一個儲存點,在事務執行過程中可以回滾到該儲存點
SET TRANSACTION:設定事務的屬性(事務的隔離級別、讀寫許可權等)

MySQL中innoDB支援事務,預設自動提交(關閉事務提交命令 => set AutoCommit = 0)

提交命令:

START TRANSACTION:開始事務

COMMIT:手動提交

時間日期

Oracle使用 DATE 資料型別來儲存日期和時間

# 獲取當前DATE
SELECT SYSDATE
# 格式 'yyyy-mm-dd hh24:mi:ss' 
SELECT TO_CHAR(createDate, 'yyyy-mm-dd hh24:mi:ss') FROM tableName;

MySQL日期和時間通常使用 DATE,DATETIME,TIMESTAMP 資料型別儲存

# 獲取當前時間戳 
select unix_timestamp() 
# 獲取當前日期 格式 'YYYY-MM-DD'
select date(now())
# 獲取當前日期時間,格式 'YYYY-MM-DD hh:mm:ss' 
select now()

分頁

Oracle

# rownum從1開始
select * from
(select rownum rn, t.* from (select * from tableName order by id desc) t )
where rn>=1 and rn<=5;

MySQL

# 從第0條開始,取5條資料
select * from tableName order by id desc limit 0,5

常用欄位型別

Oracle MySQL
數字 NUMBER int、bigint、decimal
字串 CHAR、NCHAR、VARCHAR2、NVARCHAR2 char、varchar
日期 DATE date、time、datetime、timestamp

相關文章