99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2018-10-19 閱讀量: 1147
Oracle與MySQL的SQL語(yǔ)句的主要區(qū)別

1.創(chuàng)建表(同)
create?table?tableName(
columnName1?int,
columnName2?int
)


2.刪除表(異)
MySQL:
drop?table?if?exists?tableName

Oracle:
drop?table?tableName
注:Oracle沒(méi)有if?exists關(guān)鍵字,也沒(méi)用類似if?exists的SQL語(yǔ)法。


3.添加列(異)
MySQL:
A.?alter?table?tableName?add?column?columnName1?int;
B.?alter?table?tableName?add?column?columnName1?int,?add?column?columnName2?int;
注:其中關(guān)鍵字column可有可無(wú)。

Oracle:
A.?alter?table?tableName?add?columnName1?int;
B.?alter?table?tableName?add?(columnName1?int);
C.?alter?table?tableName?add?(columnName1?int,?columnName2?int);?
注:對(duì)于A,只有添加單列的時(shí)候才可使用,對(duì)于添加多列時(shí)需要使用C,不能像MySQL那樣重復(fù)使用add?column關(guān)鍵字。


4.刪除列(異)
MySQL:
A.?alter?table?tableName?drop?column?columnName1
B.?alter?table?tableName?drop?column?columnName1,?drop?column?columnName2
注:其中關(guān)鍵字column可有可無(wú)。

Oracle:
A.?alter?table?tableName?drop?column?columnName2
B.?alter?table?tableName?drop?(columnName1)
C.?alter?table?tableName?drop?(columnName1,columnName2)
注:對(duì)于A,只有刪除單列的時(shí)候才可使用,對(duì)于刪除多列時(shí)需要使用C,不能像MySQL那樣重復(fù)使用drop?column關(guān)鍵字。


5.?修改列名(異)
MySQL:
alter?table?tableName?change?column?columnNameOld?columnNameNew?columnType;

Oracle:
alter?table?tableName?rename?column?columnNameOld?to?columnNameNew;


6.修改列類型(說(shuō)明)
Oracle中,在列有數(shù)據(jù)的時(shí)候,無(wú)法修改列類型;沒(méi)有數(shù)據(jù)時(shí)可以。
MySQL中,無(wú)論列是否有數(shù)據(jù)都可以修改列類型。
但是當(dāng)有數(shù)據(jù)是,直接修改列類型都可能對(duì)數(shù)據(jù)造成丟失等,所以一般需要結(jié)合具體的業(yè)務(wù)來(lái)對(duì)列數(shù)據(jù)做處理后,再修改列類型類型。所以修改列的類型并非使用SQL語(yǔ)句進(jìn)行一步到位的修改,而是通過(guò)以下流程:
A.?添加臨時(shí)列
B.?將需要更改的列的值經(jīng)過(guò)類型轉(zhuǎn)換的驗(yàn)證后,賦值給臨時(shí)列
C.?刪除原有列
D.?將臨時(shí)列的列名修改為原有列列名

7.索引
在整個(gè)數(shù)據(jù)庫(kù)內(nèi),MySQL的索引可以同名,也就是說(shuō)MySQL的索引是表級(jí)別的;但是Oracle索引不可以同名,也就是說(shuō)Oracle的索引是數(shù)據(jù)庫(kù)級(jí)別的。

8.?創(chuàng)建索引(同)
create?index?indexName?on?tableName?(columnName);


9.?刪除索引(異)
MySQL:
alter?table?tableName?drop?index?indexName

Oracle:
drop?index?indexName


10.?查詢表的索引(異)
MySQL:
show?index?from?tableName

Oracle:
select?index_name,?table_name,?column_name?from?user_ind_columns?where?table_name='?tableName?'?

11.?空字符串問(wèn)題

Oracle中空字符串''就是null(也就是說(shuō),只有null,沒(méi)有空字符),而MySQL是區(qū)分null和''的。

對(duì)于使用語(yǔ)句:select * from table1 where user_name <> ''來(lái)查詢列user_name不為空(不為null且不為空字符)時(shí),Oracle會(huì)查不出任何結(jié)果,而MySQL可以正常運(yùn)行。這里MySQL之所以可以得到正確結(jié)果,還因?yàn)楸容^符號(hào)<>會(huì)先將列為null的內(nèi)容進(jìn)行過(guò)濾,然后再比較內(nèi)容是否為空字符串。

這就要求一方面,以后在編寫(xiě)代碼的時(shí)候,盡量保證不會(huì)往數(shù)據(jù)庫(kù)插入空字符串''這樣的值,要么保持有數(shù)據(jù),要么保持為null。另外,對(duì)于MySQL中已經(jīng)同時(shí)存在Null和''時(shí),所有判斷是否為null或者''的地方改為判斷列的長(zhǎng)度是否為0。

0.0000
1
關(guān)注作者
收藏
評(píng)論(0)

發(fā)表評(píng)論

暫無(wú)數(shù)據(jù)
推薦帖子