SQL в Access и SQL в MS SQL Server - PullRequest
       14

SQL в Access и SQL в MS SQL Server

1 голос
/ 09 января 2012

Я слышал, что SQL в основном один и тот же от программы к программе, но есть некоторые различия.Мне интересно, есть ли какие-либо различия в SQL между Access (2007, если это имеет значение) и MS SQL Server?Мне интересно, потому что я регулярно использую Access и хочу изучать SQL из книги, и мне интересно, подойдет ли книга, использующая MS SQL Server, для моих целей?Я рассматриваю «Access 2007 Pure SQL» и «Beginning SQL Joes 2 Pros», второй из которых использует MS SQL Server.Спасибо за любую помощь!

Ответы [ 3 ]

7 голосов
/ 09 января 2012

Существует множество различий, вплоть до простых вещей, таких как оператор конкатенации строк. Access использует &, SQL Server использует +. SQL похож на английский. Есть британский английский, канадский английский, американский английский, австралийский английский и т. Д ... Несколько диалектов, в основном, но не полностью совместимых друг с другом.

Это не означает, что все совершенно несовместимо - изучение SQL на любой СУБД полезно, потому что основные концепции реляционных баз данных остаются неизменными независимо от того, на какой СУБД вы работаете. Просто то, как вы взаимодействуете с ними, отличается.

6 голосов
/ 09 января 2012

MS Access использует JET SQL, в то время как SQL Server использует Transact SQL. По большей части они очень похожи. SQL в целом - это язык программирования, предназначенный для управления данными в системах управления реляционными базами данных. Таким образом, все ароматы имеют общее подмножество. Но есть и различия. Для получения дополнительной информации обратитесь к этой статье Преобразование Microsoft Access (JET SQL) в SQL Server (T-SQL) Cheatsheet . В Интернете есть множество других ресурсов, но это должно дать вам краткую картину некоторых различий.

1 голос
/ 09 января 2012

Я бы сказал, что 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, синтаксис MERGE стандартов SQL-99 и SQL: 2003 с полезными проприетарными расширениями, плюс его собственный проприетарный синтаксис UODATE..FROM (которого следует избегать в настоящее время , поскольку он допускает потенциально неоднозначные результаты), каждый из которых может дополнительно использовать общие табличные выражения SQL: 2003 (полезно для упрощения скалярного подзапроса SQL-92 синтаксис).

Для Access вы вынуждены использовать собственный синтаксис UPDATE..FROM, который не совпадает с синтаксисом UPDATE..FROM T-SQL, но имеет ту же проблему, что и потенциально неоднозначные результаты (но этого времени избежать нельзя! ), если только запрос не включает агрегированные значения, в этом случае вы вообще не можете использовать SQL (!!) и должны прибегать к процедурному коду на стороне клиента (не SQL) (поскольку Access не поддерживает процедурный код SQL, еще одно огромное отличие от T-SQL).

...