Чтобы ответить на вопрос «есть ли какие-то предпочтения / различия»:
Да, предпочтений столько же, сколько и мнений, но будьте осторожны, чьи предпочтения вы принимаете.
Лучше всего писать переносимый SQL, если это не требует дополнительных усилий.
Для вашего конкретного образца так же легко написать переносимый запрос ...
select OrderId as "Order Id" from Orders
... как написать непереносимый:
select OrderId as [Order Id] from Orders
Желательно не писать нестандартный SQL, когда есть эквивалентная переносимая форма с таким же количеством нажатий клавиш.
Распространение [] для экранирования связано с такими инструментами, как SQL Server Management Studio и построители запросов MS Access, которые лениво избегают всего. Это может никогда не прийти в голову разработчику, который посвятил свою карьеру SQL Server, но скобки привели к большим расходам на протяжении многих лет при переносе приложений Access и SQL Server на другие платформы баз данных. То же самое и с инструментами Oracle, которые цитируют все. Неподготовленные разработчики рассматривают DDL как примеры, а затем переходят к тому же стилю при написании от руки. Это сложный цикл, который нужно разорвать до тех пор, пока инструменты не улучшатся и мы не потребуем лучшего. В Oracle цитирование в сочетании со смешанным регистром приводит к чувствительным к регистру базам данных. Я видел проекты, в которых люди цитировали каждый идентификатор в базе данных, и у меня было ощущение, что я попал в The Land of The Lost, где разработчики развивались на острове без документации или статей о передовом опыте.
Если вы с самого начала пишете свой DDL с нормализованными допустимыми идентификаторами (используйте OrderId или order_Id вместо [Order Id], вы не беспокоитесь о мифическом ключевом слове, которому могут потребоваться escape-символы; база данных сообщит вам, когда вы Я использовал зарезервированное слово. Я могу по пальцу сосчитать, сколько раз мы когда-либо обновляли приложение с одной версии SQL Server до другой и имели какие-либо поломки из-за новых зарезервированных слов.
Это часто является предметом жарких споров, поэтому, если вы подумаете по-другому:
Программисты на C # не избегают всех своих переменных с помощью @, даже если это разрешено. Это было бы странной практикой и предметом насмешек в StackOverflow. Экранирование должно быть для крайних случаев. Но те же разработчики, которые пишут соответствующие идентификаторы C #, не возражают против экранирования каждого отдельного идентификатора в своем SQL, написав ужасно уродливый, непереносимый «код» SQL. В качестве консультанта я встречал более чем одного программиста SQL Server, который искренне считал [] обязательным синтаксисом. Я не виню разработчиков; Я виню инструменты.
person
codenheim
schedule
13.04.2014