|
導(dǎo)讀數(shù)據(jù)庫,簡而言之可視為電子化的文件柜——存儲(chǔ)電子文件的處所,用戶可以對(duì)文件中的數(shù)據(jù)進(jìn)行新增、截取、更新、刪除等操作。所謂“數(shù)據(jù)庫”是以一定方式儲(chǔ)存在一起、能與多個(gè)用戶共享、具有盡可能小的冗余度、與應(yīng)... 數(shù)據(jù)庫,簡而言之可視為電子化的文件柜——存儲(chǔ)電子文件的處所,用戶可以對(duì)文件中的數(shù)據(jù)進(jìn)行新增、截取、更新、刪除等操作。所謂“數(shù)據(jù)庫”是以一定方式儲(chǔ)存在一起、能與多個(gè)用戶共享、具有盡可能小的冗余度、與應(yīng)用程序彼此獨(dú)立的數(shù)據(jù)集合。 在軟件開發(fā)過程中經(jīng)常會(huì)遇到數(shù)據(jù)庫升遷的問題,原因比較多,如acsess訪問速度比sql server慢、刪除數(shù)據(jù)記錄后access會(huì)留下空檔,文件越來越大(也可用壓縮修復(fù)的方式減小文件大小,但太麻煩),訪問速度越來越慢,甚至?xí)䲠?shù)據(jù)庫損壞,損壞得比較輕的可以找第三方工具來修復(fù),便嚴(yán)重時(shí)會(huì)導(dǎo)致數(shù)據(jù)庫無法修復(fù),或修復(fù)后數(shù)據(jù)記錄會(huì)損壞。所以我們大有必要升遷我們現(xiàn)有的Access數(shù)據(jù)庫到SQL Server;現(xiàn)談?wù)劰P者在升遷時(shí)的做法及注意事項(xiàng) 1,對(duì)于日期字段字段 access表示為:#1981-28-12# SQLSERVER2000表示為:''1981-02-12'' 2,SQL語句區(qū)別,select ,update 在對(duì)單表操作時(shí)都差不多, 但多表操作時(shí)update語句的區(qū)別ACCESS與SQLSERVER中的UPDATE語句對(duì)比: SQLSERVER中更新多表的UPDATE語句: UPDATE Tab1 SET a.Name = b.Name FROM Tab1 a,Tab2 b WHERE a.ID = b.ID; 同樣功能的SQL語句在ACCESS中應(yīng)該是 UPDATE Tab1 a,Tab2 b SET a.Name = b.Name WHERE a.ID = b.ID; 即:ACCESS中的UPDATE語句沒有FROM子句,所有引用的表都列在UPDATE關(guān)鍵字后. 更新單表時(shí):都為: UPDATE table1 set ab='12',cd=444 where .... 3,delete語句 access中刪除時(shí)用:delete * from table1 where a>2 即只要把select 語句里的select 換成delete就可以了。 sqlserve 中則為: delete from table1 where a>2 即沒有*號(hào) 4,as 后面的計(jì)算字段區(qū)別 access中可以這樣:select a,sum(num) as kc_num,kc_num*num as all_kc_num 即可以把AS后的字段當(dāng)作一個(gè)數(shù)據(jù)庫字段參與計(jì)算。 sqlserver 中則為:select a,sum(num) as kc_num,sum(num)*num as all_kc_num 即不可以把AS后的字段當(dāng)作一個(gè)數(shù)據(jù)庫字段參與計(jì)算。 5,[.]與[!]的區(qū)別 access中多表聯(lián)合查詢時(shí):select tab1!a as tab1a,tab2!b tab2b from tab1,tab2 ,中間的AS可以不要。 sqlserve 中則:select tab1.a as tab1a,tab2.b tab2b from tab1,tab2 ,中間的AS可以不要。 6,聯(lián)合查詢時(shí), access中多表聯(lián)合查詢:'select a,b from( select a,b from tab1 where a>3 union select c,d from tab2 ) group by a,b sqlserve 中則'select a,b from( select a,b from tab1 where a>3 union select c,d from tab2 ) tmptable group by a,b即要加一個(gè)虛的表tmptable,表名任意。--- 7,access升級(jí)到sqlserver時(shí), 可以用sqlserver的數(shù)據(jù)導(dǎo)入工具導(dǎo)入數(shù)據(jù),但要做必要的處理。 access中的自動(dòng)編號(hào),不會(huì)自動(dòng)轉(zhuǎn)換SQL中的自動(dòng)編號(hào),只能轉(zhuǎn)換為int型,要把它手工改成標(biāo)識(shí)字段,種子為1,把所有導(dǎo)入被sqlserver轉(zhuǎn)化成的以n開頭的字段類型的n去掉,如nvarchar->varchar.把需要有秒類型的日期字段改成datatime類型(SQL會(huì)把所有的日期開轉(zhuǎn)化成smalldatetime型) 8,true與1=1 access用where true表示條件為真, sqlserver用where 1=1表示條件為真 9,判斷字段值為空的區(qū)別 普通空: Access和sql server一樣 where code is null 或 where code is nol null 條件空: Access:iif([num] is null,0,[num]) 或 iif([num] is null,[num1],[num]) SQLServer: isnull([num],0) 或 isnull([num],[num1]) 10,SQL語句取子串的區(qū)別 access:MID(字段,n1,[n2]),LEFT(字段,n),RIGHT(字段,n) 如:select left(cs1,4)+'-'+cs2 as cs3 SQLServer: SUBSTRING(expression, start, length) 如:select substring(cs1, 1, 2) + substring(cs1, 4, 2) + '-' + cs2 as cs3 附:如何發(fā)布基于ADO+SQL SERVER的應(yīng)用 很多朋友在問如何發(fā)布基于ADO+SQL SERVER的應(yīng)用程序,筆者作了測試,如下: Win98訪問xp或2K的SQL SERVER 2000服務(wù)器,不用任何SQL的DLL文件,只要保證98能與其它工作組里的機(jī)子正常通信(能訪問另外一臺(tái)機(jī)子里的共享文件),這一步是保證98安裝了這三個(gè)協(xié)議,TCP/IP,SPX/IPX,NETBEUIDG三個(gè)協(xié)議, 我的測試環(huán)境是,98se+xp,98se只安裝了必要的驅(qū)動(dòng)程序,其它的程序一個(gè)也沒有裝(專門裝來測試這個(gè)的) 全新的路由器不僅讓你更穩(wěn)定快速地連接無線網(wǎng)絡(luò),更可以讓家中的智能設(shè)備連接在一起。 |
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!