第38期Java面試題:oracle和MySQL的區別、Mysql的InnoDb簡述

1、oracle和MySQL的區別

Mysql屬於中小型數據庫,開源免費。Oracle屬於大型數據庫,收費。

使用上面:

1、mysql主鍵支持自增長,而oracle不支持,只能通過序列和觸發器聯合使用達到自增效果。

2、mysql中可以使用雙引號和單引號包起字符串,而oracle中只能使用單引號。

3、mysql和oralce分頁寫法不一樣

4、blob字段插入方式不一樣。Oracle需要先插入empty_blob 然後再update.

5、Oracle和mysql的函數有些差異,語法有些差別。

2、簡述Mysql的InnoDb

數據庫的存儲引擎是對錶進行某種設置,存儲引擎決定該表的數據存儲方式、數據更新方式、數據查詢性能以及是否支持索引、事務處理性能等。MySQL常用的幾種引擎有:MyISAM、InnoDB、MEMORY、CSV、BLACKHOLE、ARCHIVE、PERFORMANCE_SCHEMA、Merge等

InnoDb引擎:

優點:

1、提供事物支持。

2、提供系統崩潰修復能力。

3、支持多版本併發控制(即MVCC Multi-Version Concurrency Control)的行級鎖,由於鎖粒度小,寫操作和更新操作併發高、速度快。適合更新頻繁的表。

4、支持自增長列。

5、支持外鍵。

6、適合於大容量數據庫系統,支持自動災難恢復。

3、刪除重複數據只保留一條。

1)刪除表中多餘的重複記錄,重複記錄是根據單個字段(Id)來判斷,只留有rowid最小的記錄

DELETE from 表 WHERE (id) IN ( SELECT id FROM 表 GROUP BY id HAVING COUNT(id) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM 表 GROUP BY id HAVING COUNT(*) > 1);

2)刪除表中多餘的重複記錄(多個字段),只留有rowid最小的記錄

delete from 表 a where (a.Id,a.seq) in (select Id,seq from 表 group by Id,seq having count(*) > 1) and rowid not in (select min(rowid) from 表 group by Id,seq having count(*)>1)

第38期Java面試題:oracle和MySQL的區別、Mysql的InnoDb簡述


分享到:


相關文章: