、mysql與oracle都是關(guān)系型數(shù)據(jù)庫,Oracle是大型數(shù)據(jù)庫,而MySQL是中小型數(shù)據(jù)庫。但是MySQL是開源的,但是Oracle是收費的,而且比較貴。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-651239.html
?
1
2
mysql默認端口:3306,默認用戶:root
oracle默認端口:1521,默認用戶:system
2、Oracle的內(nèi)存占有量非常大,而mysql非常小,mysql安裝后差不多一兩百兆,而oracle則有3G左右,且使用的時候oracle占用特別大的內(nèi)存空間和其他機器性能。
?
1
2
mysql登錄:mysql -hip -u用戶名 -p密碼 -P端口號 -D數(shù)據(jù)庫名(h:host、u:user、p:password)
oracle登錄:sqlplus user_name/password@ip:port/instance_name;(可以把IP地址,端口號,實例名寫在一個TNS文件中取一個別名,登陸的時候輸入這個別名就行)
oracle支持大并發(fā),大訪問量,是OLTP最好的工具。
?
3、數(shù)據(jù)庫的層次結(jié)構(gòu):
?
1
2
mysql:默認用戶是root,用戶下可以創(chuàng)建好多數(shù)據(jù)庫,每個數(shù)據(jù)庫下還有好多表,一般情況下都是使用默認用戶,不會創(chuàng)建多個用戶;
oracle:創(chuàng)建一個數(shù)據(jù)庫,數(shù)據(jù)庫下有好多用戶:sys、system、scott等,不同用戶下有好多表,一般情況下只創(chuàng)建一個數(shù)據(jù)庫用。
4、數(shù)據(jù)庫中表字段類型:
?
1
2
mysql:int、float、double等數(shù)值型,varchar、char字符型,date、datetime、time、year、timestamp等日期型。
oracle:number(數(shù)值型),varchar2、varchar、char(字符型),date(日期型)等…
其中char(2)這樣定義,這個單位在oracle中2代表兩個字節(jié),mysql中代表兩個字符。
?
其中varchar在mysql中,必須給長度例如varchar(10)不然插入的時候出錯。
?
5、主鍵
?
1
MySQL支持主鍵自增長,指定主鍵為auto increment,插入時會自動增長。Oracle主鍵一般使用序列。
6、引號處理:
?
1
MySQL字符串可以使用雙引號包起來,而Oracle只可以單引號
7、分頁:
?
1
MySQL分頁用limit關(guān)鍵字,而Oracle使用rownum字段表明位置,而且只能使用小于,不能使用大于。
8、對事物提交:
?
1
2
mysql默認是自動提交,可以修改為手動提交。
oracle默認不自動提交,需要手動提交,需要在寫commit指令或點擊commit按鈕。
9、事務(wù)隔離級別:
?
1
2
3
4
mysql是repeatable read的隔離級別,而oracle是read commited的隔離級別;
同時二者都支持serializable串行化事務(wù)隔離級別,可以實現(xiàn)最高級別的讀一致性。每個session提交后其它session才能看到提交的更改;
oracle通過在undo表空間中構(gòu)造多版本數(shù)據(jù)塊來實現(xiàn)讀一致性,每個session查詢時,如果對應(yīng)的數(shù)據(jù)塊發(fā)生變化,oracle會在undo空間中為這個session構(gòu)造它查詢時的舊的數(shù)據(jù)塊;
mysql沒有類似oracle的構(gòu)造多版本數(shù)據(jù)的機制,只支持read commited的隔離級別,一個session讀取數(shù)據(jù)時,其他session不能更改數(shù)據(jù),但可以在表最后插入數(shù)據(jù),session更新數(shù)據(jù)時,要加上排它鎖,其他session無法訪問數(shù)據(jù)。
10、并發(fā)性:
?
1
2
mysql以表級鎖為主,對資源鎖定的粒度很大,如果一個session對一個表加鎖時間過長,會讓其他session無法更新此表中的數(shù)據(jù)。雖然Innodb引擎表可以用行級鎖,但這個行級鎖的機制依賴于表的索引,如果表沒有索引,<br>或者sql語句沒有使用索引,那么仍然使用表級鎖;
oracle使用行級鎖,對資源鎖定的粒度要小很多,只是鎖定sql需要的資源,并且加鎖是在數(shù)據(jù)庫中的數(shù)據(jù)行上,不依賴于索引,所以oracle對并發(fā)性的支持要好很多。
11、邏輯備份:
?
1
2
mysql邏輯備份時要鎖定數(shù)據(jù),才能保證備份的數(shù)據(jù)是一致的,影響業(yè)務(wù)正常的dml使用。
oracle邏輯備份時不鎖定數(shù)據(jù),且備份的數(shù)據(jù)是一致的。
12、判斷真假:
?
1
MySQL中0、1判斷真假,Oracle中true false
13、區(qū)分大小寫:
?
1
2
MySQL在windows環(huán)境下大小寫不敏感 在unix,linux環(huán)境下區(qū)分大小寫。
Oracle不區(qū)分
14、日期轉(zhuǎn)換:
?
1
2
mysql中日期轉(zhuǎn)換用dateformat()函數(shù);
oracle用to_date()與to_char()兩個函數(shù)。文章來源:http://www.zghlxwxcb.cn/news/detail-651239.html
?
到了這里,關(guān)于Mysql 和Oracle的區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!