小編給大家分享一下數(shù)據(jù)庫(kù)從mssql遷移MySQL的操作方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
成都創(chuàng)新互聯(lián)于2013年開(kāi)始,先為肥東等服務(wù)建站,肥東等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為肥東企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
作為系統(tǒng)開(kāi)發(fā)最常見(jiàn)的兩種后臺(tái)數(shù)據(jù)庫(kù),名字上都有著細(xì)微的差別,所以在實(shí)際的使用上,也是不一樣的,今天針對(duì)這部分,帶大家走進(jìn)了解這部分內(nèi)容。
支持?jǐn)?shù)據(jù)類型的差別
1、MySQL支持enum、set類型,MSSQL不支持。 2、MySQL不支持nchar、nvarchar、ntext類型。 3、MySQL的遞增字段類型是AUTO_INCREMENT,而MSSQL是identity(1,1)。 4、MySQL不支持默認(rèn)值為當(dāng)前時(shí)間的datetime類型(MSSQL很容易做到),在MySQL里面 是用timestamp類型。 5、MySQL支持無(wú)符號(hào)型的整數(shù),理論上比不支持無(wú)符號(hào)型的MSSQL多出一倍的最大數(shù)存儲(chǔ)。 6、MySQL不支持在MSSQL里面使用非常方便的varchar(max)類型,這個(gè)類型在MSSQL里面既可做一般數(shù)據(jù)存儲(chǔ),也可以做blob數(shù)據(jù)存儲(chǔ)。
常見(jiàn)符號(hào)的差別
1、MSSQL識(shí)別符是[],[type]表示他區(qū)別于關(guān)鍵字,但是MySQL卻是 `,也就是按鍵1左邊的那個(gè)符號(hào)。 2、MSSQL默認(rèn)到處表創(chuàng)建語(yǔ)句的默認(rèn)值表示是((0)),而在MySQL里面是不允許帶兩括號(hào)。 3、MSSQL定義變量一定要用@開(kāi)頭,而MySQL沒(méi)這種要求。 4、MSSQL每條語(yǔ)句結(jié)束可以用“;”、GO或什么都不要,MySQL的每句結(jié)束要用“;”。 5、MySQL的輸出參數(shù)out對(duì)應(yīng)SQLServer的output,且MySQL的out要放在變量的前面,MSSQL的output放在變量后面。
常用函數(shù)差別
1、MSSQL支持getdate()方法獲取當(dāng)前時(shí)間日期,但是MySQL里面可以分日期類型和時(shí)間類型,獲取當(dāng)前日期是current_date (),當(dāng)前完整時(shí)間是 now()函數(shù)。
2、MySQL的ifnull()函數(shù)對(duì)應(yīng)MSSQL的isnull()函數(shù)。
3、MySQL的uuid()對(duì)應(yīng)MSSQL的GUID()。
4、MySQL字符串連接用concat()函數(shù),MSSQL只需要用“+”加號(hào)。
SQLServer中 set @str=?select * from ?+?tablename?+…+… 、 MySQL中 str=concat(?select * from?, ?tablecname?,…,…)
5、MySQL的Execute對(duì)應(yīng)MSSQL的exec。
6、MySQL存儲(chǔ)過(guò)程中沒(méi)有return函數(shù)。
SQL語(yǔ)句語(yǔ)法常見(jiàn)差別
1、MSSQL不支持replace into 語(yǔ)句,但從SQLServer 2008開(kāi)始支持merge語(yǔ)法。
2、MySQL支持:
insert into table1 set t1 = ??, t2 = ?? ;
MSSQL不支持這樣寫(xiě)。
3、MySQL支持:
insert into tabl1 values (1,1), (1,1), (1,1), (1,1), (1,1), (1,1), (1,1);
SQLServer 2008之后也開(kāi)始支持。
4、MSSQL里面檢查是否有這個(gè)表再刪除,需要這樣:
if exists (select * from dbo.sysobjects where id = object_id(N'表名') and OBJECTPROPERTY(id,N'IsUserTable')=1)
但是在MySQL里面只需要DROP TABLE IF EXISTS 表名
5、MySQL創(chuàng)建非聚集索引只需要在創(chuàng)建表的時(shí)候指定為key就行,比如:
KEY xxx (fid,xxx)
在MSSQL里面必須要:
create unique nonclustered index index_xxx on dbo.xxx (field1 asc,field2 asc);
6、MySQL的If語(yǔ)句與MSSQL有較大區(qū)別,MySQL寫(xiě)法如下:
If (條件) Then 語(yǔ)句 end If; If (條件) Then 語(yǔ)句 Else 語(yǔ)句 End If; If (條件) Then 語(yǔ)句 Elseif (注意不能寫(xiě)成 Else if ) 語(yǔ)句 Elseif … End If;
7、從SQL語(yǔ)句中獲取字段值到變量寫(xiě)法不同。
MSSQL寫(xiě)法:
select @a=count() from 表名; MySQL寫(xiě)法: select count() from 表名 into @a;
8、MySQL中沒(méi)有top關(guān)鍵字,需要用limit代替且放在后面。
表創(chuàng)建相關(guān)
1、MySQL需要為表指定存儲(chǔ)類型。
2、MySQL在創(chuàng)建表時(shí)要為每個(gè)表指定一個(gè)存儲(chǔ)引擎類型,而MS SQL只支持一種存儲(chǔ)引擎。
3、MySQL的一個(gè)表的總共字段長(zhǎng)度不超過(guò)65XXX。
性能及管理工具
1、同樣的負(fù)載壓力,MySQL要消耗更少的CPU和內(nèi)存,MSSQL的確是很耗資源。
2、MySQL的管理管理使用收費(fèi)的第三方工具諸如Navicat尚可,MSSQL提供的管理工具免費(fèi)而且功能非常強(qiáng)大。
以上是數(shù)據(jù)庫(kù)從mssql遷移mysql的操作方法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!