Per rispondere alla domanda "v'è alcuna preferenza/differenza":
Sì, ci sono tante preferenze quanti sono i pareri, ma attenzione le cui preferenze si adotta.
Come best practice, è consigliabile scrivere SQL portatile se non richiede alcuno sforzo aggiuntivo.
Per il vostro campione specifico, è altrettanto facile scrivere una query portatile:
select OrderId as "Order Id" from Orders
che scrivere un non-portatile uno:
select OrderId as [Order Id] from Orders
Non è giustificabile di scrivere SQL non standard quando esiste una forma portatile equivalente con lo stesso numero di sequenze di tasti.
La proliferazione di [] per l'escaping è dovuta a strumenti come SQL Server Management Studio e ai creatori di query di MS Access, che sfuggono pigramente a tutto. Potrebbe non accadere mai a uno sviluppatore che spende la sua carriera in SQL Server, ma le parentesi hanno causato un sacco di spese nel corso degli anni porting di applicazioni Access e SQL Server su altre piattaforme di database. Lo stesso vale per gli strumenti Oracle che citano tutto. Gli sviluppatori inesperti vedono il DDL come esempi e quindi procedono a utilizzare lo stesso stile quando scrivono a mano. È un ciclo difficile da interrompere fino a quando gli strumenti non migliorano e noi chiediamo di meglio. In Oracle, la citazione, combinata con l'involucro misto, genera database sensibili al maiuscolo/minuscolo. Ho visto progetti in cui le persone citavano ogni identificatore nel database e avevo la sensazione di trovarmi in The Land of The Lost, dove gli sviluppatori si erano evoluti su un'isola senza documentazione o articoli di best practice.
Se si scrive il DDL, dall'inizio, con identificatori legali normalizzati (utilizzare OrderId o order_Id anziché [Order Id], non si preoccupa della parola chiave mitica che potrebbe richiedere caratteri di escape; ti informo quando hai utilizzato una parola riservata. Posso contare su un dito le volte in cui abbiamo aggiornato un'app da una versione di SQL Server a un'altra e ho avuto un'interruzione dovuta a nuove parole riservate.
Questo è spesso oggetto di accesi dibattiti, quindi se ci pensate in un altro modo:
I programmatori C# non sfuggono tutte le loro variabili con @, anche se è le ragazza per farlo. Sarebbe considerata una pratica strana e sarebbe oggetto di ridicolo su StackOverflow. La fuga dovrebbe essere per i casi limite. Ma gli stessi sviluppatori che scrivono gli identificatori C# conformi non si preoccupano di sfuggire a ogni singolo identificatore nel loro SQL, scrivendo un "codice" SQL terribilmente brutto e non portatile. Come consulente, ho incontrato più di un programmatore di SQL Server che onestamente pensava [] fosse necessaria la sintassi. Non incolpo degli sviluppatori, do la colpa agli strumenti.
Che dialetto? MSSQL? – Andrey