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)
閱讀更多 JAVA凌晨四點半 的文章