access採用sql語句與SQL Server採用sql語句的區別
Access中提供查詢對象,在設計時可以採用設計檢視和SQL視圖,非常方便,SQL視圖中的SQL語句可以在SQL SERVER中使用,但是否完全可用呢?答案是否定的,表中總結了 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'