Mysql與Oracle 的對比 |
|||
區別點 |
Mysql |
Oracle |
|
數據類型 |
CHAR:定長字符串,適合主鍵 VARCHAR:變長字符串 FLOAT, 數值型 DOUBLE, 數值型 DATE , 日期型 INT 整型
|
字符類型 char 定長字符類型 varchar可變長的字符類型 varchar2 可變長的字符類型 二進制大對象 BLOB 主要用來存儲圖片,音頻,視頻.... 文本大對象 CLO主要用來存放大文本 Date 數字類型 number
|
|
主鍵自動增長 |
Auto_increment 主鍵必須是整型才可以自增長 如creat TABLE t1 (tid INT (10) PRIMARY KEY auto_increment, tname varchar (10),tage int(2)); |
Oracle 中給主鍵設置自增長,先設序列,在設置觸發器. |
|
單引號的處理 |
MYSQL里可以用雙引號包起字符串, |
ORACLE里只可以用單引號包起字符串。在插入和修改字符串前必須做單引號的替換:把所有出現的一個單引號替換成兩個單引號 |
|
分頁 |
limit是mysql的語法 |
Oracle 中用rownum .取前n條數據,oracle中用rownum < m; 1:其中m-1 等於要取的條數 2:rownum 只能有 < ,<= ,沒有 > 3: 如m為6,則取得是前5條數據。
|
|
日期字段 |
MYSQL日期字段分DATE和TIME兩種 |
ORACLE日期字段只有DATE,包含年月日時分秒信息 |
|
空字符的處理 |
MYSQL的非空字段也有空的內容 如:name != ""這樣在mysql下不會報錯 |
ORACLE里定義了非空字段就不容許有空的內容 。 如果為NULL或空字符,需要把它改成一個空格的字符串。如:在oracle下的要換成name is not null |
|
Sql語句group by |
Mysql不要求group by 后的字段 一定要出現在select 后面。 |
oracle中sql 的group by 后的字段 一定要出現在select 后面 |
|
開源項目 |
MySQL是開源的項目 |
付費 |
|
SQL語法的不同 |
MySQL較為靈活 |
Oracle較為嚴格 |
|
事務 |
事務的提交 |
MySQL默認是自動提交
|
Oracle默認不自動提交,需要用戶手動提交
|
事務隔離級別 |
MySQL是可重復讀
|
讀已提交 |
|
對事務的支持 |
MySQL在innodb存儲引擎的行級鎖的情況下才可支持事務 |
Oracle則完全支持事務
|
|
保存數據的持久性 |
MySQL是在數據庫更新或者重啟,則會丟失數據 |
Oracle把提交的sql操作線寫入了在線聯機日志文件中,保持到了磁盤上,可以隨時恢復 |
|
用戶權限 |
放在mysql 自己的mysql 庫中 |
oracle 的權限是跟着表空間走的 |