轉(zhuǎn)自:http://hi.baidu.com/jikeyshi/blog/item/a898002468ec322cd50742ee.html
Sqlserver與access數(shù)據(jù)庫sql語法十大差異
做ASP時(shí),最常用的數(shù)據(jù)庫即Sqlserver與Access數(shù)據(jù)庫莫屬了!
但使用會(huì)經(jīng)常發(fā)現(xiàn)很多SQL執(zhí)行的問題。這里整理出之間的差異,做個(gè)十大差異的總結(jié)。
ACCESS結(jié)構(gòu)簡單容易處理,而且也能滿足多數(shù)的網(wǎng)站程序要求,也是初學(xué)者的試牛刀。
ACCESS是小型數(shù)據(jù)庫,既然是小型就有他根本的局限性:
1)、數(shù)據(jù)庫過大,一般ACCESS數(shù)據(jù)庫達(dá)到50M左右的時(shí)候性能會(huì)急劇下降!
2)、網(wǎng)站訪問頻繁,經(jīng)常超過100人的在線時(shí),處理速度會(huì)有影響!
3)、記錄數(shù)過多,一般記錄數(shù)達(dá)到10萬條左右的時(shí)候性能就會(huì)急劇下降!
微軟公司為了與ACCESS高低搭配的一種高端方案:改用了Sqlserver,但語法會(huì)有一些差異。
1、select,update語句區(qū)別
select,update對于單表操作時(shí)基本一致。
但多表操作時(shí)update語句的區(qū)別ACCESS與SQLSERVER中的UPDATE語句會(huì)有差別:
SQLSERVER中更新多表的UPDATE語句:
UPDATE Table1 SET a.Name = b.Name FROM Table1 a, Table2 b WHERE a.ID = b.ID;
ACCESS中同樣功能的SQL語句:
UPDATE Table1 a, Table2 b SET a.Name = b.Name WHERE a.ID = b.ID;
比較得出:ACCESS中的UPDATE語句沒有FROM子句,所有引用的表都列在UPDATE關(guān)鍵字后,這點(diǎn)同mysql;
2、delete語句
SQLSERVER中:DELETE from Table1 WHERE ID > 1;
Access中:DELETE * from Table1 WHERE ID > 1;
比較得出:SQLSERVER中,即只要把select語句里的select與delete的操作語法一致的,不需要*;
3、as后面的計(jì)算字段區(qū)別
SQLSERVER中:SELECT a.sum(num) as sum_num, sum(num)*num as all_num; 即
Access中: SELECT a,sum(num) as sum_num, sum_num*num as all_num; 即
比較得出:
SQLSERVER中:不可以把AS后的字段當(dāng)作一個(gè)數(shù)據(jù)庫字段參與計(jì)算。
Access中: 可以把AS后的字段當(dāng)作一個(gè)數(shù)據(jù)庫字段參與計(jì)算。
4、「.」與「!」的差異
SQLSERVER中:SELECT Table1.a AS Table1a, Table2.b AS Table2b FROM Table1, Table2;
Access中: SELECT Table1!a AS Table1a, Table2!b AS Table2b FROM Table1, Table2;
比較得出:
「!」使用的場合很少,在ACCESS中也是可以使用「.」的,但不要吧省略AS;
5、日期分隔符號
SQLSERVER中:單引號(’)
Access中:井號(#)
6、Boolean所表示的常量
SQLSERVER中:整數(shù):1(真)、0(假)
Access中:True、False;On、Off;Yes、No;整數(shù):-1(真)、0(假)。
7、字符串連接
SQLSERVER中:加號(+)
Access中:和號(&)
8、通配符
SQLSERVER中:
百分號(%)與零個(gè)或更多字符匹配。
下劃線(_)與單個(gè)字符匹配。
上插入符(^)意味著不在列表中。
沒有與英鎊符(#)對應(yīng)的字符。
Access中: 星號(*)與零個(gè)或更多字符匹配。
問號(?)與單個(gè)字符匹配。
嘆號(!)意味著不在列表中。
英鎊符(#)意味著單個(gè)數(shù)字。
9、DROP INDEX
SQLSERVER中:Drop Index <表名>.<索引名>
Access中:Drop Index <索引名> ON <表名>
10、表添加標(biāo)識列
SQLSERVER中:alter table <表名> add <列名> bigint identity(1,1) not null