做項目時,最常用的資料庫即Sqlserver與Access資料庫莫屬了!但使用會經常發現很多SQL執行的問題。這裡整理出之間的差異,做個十大差異的總結。
ACCESS結構簡單容易處理,而且也能滿足多數的網站程式要求,也是初學者的試牛刀。 ACCESS是小型資料庫,既然是小型就有他根本的局限性:
1)、資料庫過大,一般ACCESS資料庫達到50M左右的時候效能會急劇下降!
2)、網站訪問頻繁,經常超過100人的線上時,處理速度會有影響!
3)、記錄數過多,一般記錄數達到10萬條左右的時候效能就會急劇下降!
微軟公司為了與ACCESS高低搭配的一種高端方案:改用了Sqlserver,但文法會有一些差異。
1、select,update語句區別
select,update對於單表操作時基本一致。 但多表操作時update語句的區別ACCESS與SQLSERVER中的UPDATE語句會有差別:
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關鍵字後,這點同mysql;
2、delete語句
SQLSERVER中:DELETE from Table1 WHERE ID > 1;
Access中:DELETE * from Table1 WHERE ID > 1;
比較得出:SQLSERVER中,即只要把select語句裡的select與delete的操作文法一致的,不需要*;
3、as後面的計算欄位區別
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後的欄位當作一個資料庫欄位參與計算。
Access中: 可以把AS後的欄位當作一個資料庫欄位參與計算。
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中:整數:1(真)、0(假)
Access中:True、False;On、Off;Yes、No;整數:-1(真)、0(假)。
7、字串串連
SQLSERVER中:加號(+)
Access中:和號(&)
8、萬用字元
SQLSERVER中:
百分比符號(%)與零個或更多字元匹配。
底線(_)與單個字元匹配。
上插入符(^)意味著不在列表中。
沒有與英鎊符(#)對應的字元。
Access中:
星號(*)與零個或更多字元匹配。
問號(?)與單個字元匹配。
歎號(!)意味著不在列表中。
英鎊符(#)意味著單個數字。
9、DROP INDEX
SQLSERVER中:Drop Index <表名>.<索引名>
Access中:Drop Index <索引名> ON <表名>
10、表添加識別欄位
SQLSERVER中:alter table <表名> add <列名> bigint identity(1,1) not null