古詩詞大全網 - 四字成語 - SQL SERVER 中存儲過程和函數的區別

SQL SERVER 中存儲過程和函數的區別

壹、多數指令是相同的,包括創建和修正存儲過程的指令。二、很多細微的指令有不同,具體如下(不僅):1mysql支持enum,和set類型,sqlserver不支持2mysql不支持nchar,nvarchar,ntext類型3mysql的遞增語句是AUTO_INCREMENT,而mssql是identity(1,1)MYSQL:createtablebasic(idintkeyauto_increment,namevarchar(20));MSSQL:createtablebasic(idintidentity(1,1),namevarchar(20))4msms默認到處表創建語句的默認值表示是((0)),而在mysql裏面是不允許帶兩括號的5mysql需要為表指定存儲類型6mssql識別符是[],[type]表示他區別於關鍵字(可選用來包含表名、字段名),但是mysql卻是`(重音符,也就是按鍵1左邊的那個符號)7mssql支持getdate()方法獲取當前時間日期,但是mysql裏面可以分日期類型和時間類型,獲取當前日期是cur_date(),當前完整時間是now()函數8mssql不支持replaceinto語句,但是在最新的sql20008裏面,也支持merge語法9mysql支持insertintotable1sett1=‘’,t2=‘’,但是mssql不支持這樣寫10mysql插入多行支持這樣寫insertintotabl1values(1,1),(1,1),(1,1),(1,1),(1,1),(1,1),(1,1)MSSQL不支持11mssql不支持limit語句,是非常遺憾的,只能用top取代limt0,N,row_number()over()函數取代limitN,M12mysql在創建表時要為每個表指定壹個存儲引擎類型,而mssql只支持壹種存儲引擎13mysql不支持默認值為當前時間的datetime類型(mssql很容易做到),在mysql裏面是用timestamp類型14mssql裏面檢查是否有這個表再刪除,需要這樣:ifexists(select*fromdbo.sysobjectswhereid=object_id(N'uc_newpm')andOBJECTPROPERTY(id,N'IsUserTable')=1)但是在mysql裏面只需要DROPTABLEIFEXISTScdb_forums;15mysql支持無符號型的整數,那麽比不支持無符號型的mssql就能多出壹倍的最大數存儲16mysql不支持在mssql裏面使用非常方便的varchar(max)類型,這個類型在mssql裏面既可做壹般數據存儲,也可以做blob數據存儲17mysql創建非聚集索引只需要在創建表的時候指定為key就行,比如:KEYdisplayorder(fid,displayorder)在mssql裏面必須要:createuniquenonclusteredindexindex_uc_protectedmembers_username_appidondbo.uc_protectedmembers(usernameasc,appidasc)18mysqltext字段類型不允許有默認值19mysql的壹個表的總***字段長度不超過65XXX。20壹個很表面的區別就是mysql的安裝特別簡單,而且文件大小才110M(非安裝版),相比微軟這個龐然大物,安裝進度來說簡直就是..21mysql的管理工具有幾個比較好的,mysql_front,和官方那個套件,不過都沒有SSMS的使用方便,這是mysql很大的壹個缺點。22mysql的存儲過程只是出現在最新的版本中,穩定性和性能可能不如mssql。23同樣的負載壓力,mysql要消耗更少的CPU和內存,mssql的確是很耗資源。24php連接mysql和mssql的方式都差不多,只需要將函數的mysql替換成mssql即可。25mysql支持date,time,year類型,mssql到2008才支持date和time。26變量賦值MYsql:變量賦值SELECT@min_price:=MIN(price),@max_price:=MAX(price)FROMshopMSsql:變量賦值SELECT@min_price=MIN(price),@max_price=MAX(price)FROMshop三、總的來說,如果是簡單的存儲過程代碼,要修改,不會太難。如果是復雜的系統,要移植會很難很難。