引:SQL Server、Microsoft Access都是微軟的產品。前者用於中型企業級應用,後者是小型資料庫的代表,初學者易於掌握。在開發一般資訊系統時,尤其是單機版,大都採用Access。雖然SQL Server也有個人桌面版,但是運行時需佔用較多的系統資源。
在區域網路廣泛應用的形勢下,網路版軟體大行其道,不少軟體從單機版過渡到C/S模式的網路應用,通過SQL語句從服務端擷取資料集,將查詢結果返回給用戶端。
Access中提供查詢對象,在設計時可以採用設計檢視和SQL視圖,非常方便,SQL視圖中的SQL語句可以在SQL SERVER中使用,但是否完全可用呢?答案是否定的,表1中總結了 Microsoft Access 和 Microsoft SQL Servers 的 SQL 文法的重要區別。
表1
SQL 文法元素
Microsoft
Access
Microsoft SQL
Server
標識符
限制不超過 64 個字元。
允許使用關鍵字和特殊字元。
可以用任何字元開頭。
SQL Server 6.5:
限制不超過 30 個字元。
不允許使用關鍵字和特殊字元。
必須用字母字元開頭。
SQL Server 7.0 的標識符與 Access 完全相容。
輸出欄位
允許多個輸出欄位具有相同名稱。
在視圖中不支援多個相同輸出欄位名。
日期分隔符號
英鎊符(#)
撇號(')
Boolean 常量
True、False;On、Off;Yes、No。
整數:1(真)、0(假)
字串串連
和號(&)
加號(+)
萬用字元
星號(*)與零個或更多字元匹配。
問號(?)與單個字元匹配。
歎號(!)意味著不在列表中。
英鎊符(#)意味著單個數字。
百分比符號(%)與零個或更多字元匹配。
底線(_)與單個字元匹配。
上插入符(^)意味著不在列表中。
沒有與英鎊符(#)對應的字元。
TOP
如果有一個 ORDER BY 子句,自動包含層次。
SQL Server 6.5 不支援。
SQL Server 7.0 需要一個明確的 WITH TIES 子句。
CREATE INDEX
允許建立升序和降序索引。
允許聲明主鍵,沒有 Null 值,並且忽略 Null 值。
DROP INDEX
文法是:
Drop Index <index name> ON <table name>
文法是:
Drop Index <table name>, <index name>
DISTINCTROW
支援(允許選擇單個記錄)。
不支援。
OWNERACCESS
支援(在執行時控制許可權)。
不支援。
Table in UNION
支援(允許使用下列文法指定表:
TABLE <tablename>
不支援。
ORDER BY in Unions
支援。允許通過聯集查詢中的子句實現多種排序。
支援。允許通過語句末尾的子句實現一種排序。
TRANSFORM
支援。用於交叉資料表查詢。
不支援。
PARAMETERS
支援(在 SQL 中記錄)。
不支援。
以northwind資料庫為例,若要得到相同查詢結果,SQL語句作相應變化。
Access:
SELECT * FROM Products where productname like 'c*';
SELECT * FROM Products where productname like 'c?ang';
SQL Server:
SELECT * FROM Products WHERE productname LIKE 'c%'
SELECT * FROM Products WHERE productname LIKE 'c_ang'
在開發過程中尤其需要注意萬用字元的變化。