2012-01-09 91 views
1

我聽說從程序到程序的SQL大多相同,但是有一些差異。我想知道Access(2007年,如果它很重要)和MS SQL Server之間是否有任何差異?我想知道,因爲我經常使用Access並希望從書中學習SQL,並且我想知道使用MS SQL Server的書是否能滿足我的目的?我正在考慮「Access 2007 Pure SQL」和「Beginning SQL Joes 2 Pros」,其中第二個使用MS SQL Server。謝謝你的幫助!Access中的SQL和MS SQL Server中的SQL

回答

6

有很多不同之處,甚至是簡單的東西,比如字符串連接操作符。 Access使用&,SQL Server使用+。 SQL就像英文。有英國英語,加拿大英語,美國英語,澳大利亞英語等...多種方言,大多數但不完全兼容。

這並不是說事物完全不兼容 - 在任何DBMS上學習SQL都有用,因爲關係數據庫的核心概念保持不變,而不管您使用的是哪個DBMS。只是你如何與他們交流,這是不同的。

+0

除了這個答案,去SQL書,並嘗試刪除像微軟一直試圖做多年的訪問。 – 2012-01-09 03:04:37

+1

實際上,'+'在Access中也是一個字符串連接運算符,它只處理與&不同的空值。 – onedaywhen 2012-01-09 09:03:36

5

MS Access使用JET SQL,而SQL Server使用Transact SQL。大多數情況下,它們非常相似。通常SQL是一種編程語言,用於管理關係數據庫管理系統中的數據。所以所有的口味都有一個共同的子集。但也有分歧。欲瞭解更多信息,請參閱Convert Microsoft Access (JET SQL) to SQL Server (T-SQL) Cheatsheet上的這篇文章。網絡上還有許多其他資源,但這應該能讓您快速瞭解一些差異。

+0

「MS Access使用JET SQL」 - Access207和Access2010不使用「JET SQL」,現在稱爲Access數據庫引擎SQL;) – onedaywhen 2012-01-09 09:07:12

+1

它顯示我有一段時間沒有使用Access! :)感謝您的糾正! – 2012-01-09 18:30:35

1

我會說Access SQL和T-SQL(SQL Server)比相似之處有更多的區別。任何相似的外觀都是由於1)兩者都基於SQL-89標準(但T-SQL和標準都已大大推進,Access不是這樣),2)SQL Server團隊嘗試過但未能使Access2000( Jet 4.0)符合入門級SQL-92標準(事實上的「最低」標準)。

以UPDATE語句爲例。在其最簡單的形式中,即涉及文字或輸入參數(標量)值,兩者大致相同。但是,使用另一個表中的值更新一個表時,最新的T-SQL語法(2008)支持使用有用專有擴展的SQL-92標量子查詢語法,SQL-99和SQL:2003標準「MERGE」語法,以及其舊的專有UODATE..FROM語法(其中should be avoided nowadays因爲它允許可能含糊不清的結果),所有這些都可以選擇使用SQL:2003公用表表達式(用於簡化SQL-92標量子查詢語法)。

對於Access你不得不利用其專有的UPDATE..FROM語法,這是不一樣的T-SQL專有UPDATE..FROM語法,但已經讓潛在的不明確的結果同樣的問題(但不能迴避這個時候!),除非query involves aggregated values in which case you cannot use SQL at all(!!)並且必須求助於客戶端(非SQL)過程代碼(因爲Access不支持過程SQL代碼,與T-SQL的另一個巨大差異)。