Qual é o uso dos colchetes em declarações sql?

Eu observei que o Visual Studio 2008 está colocando colchetes ao redor dos nomes das colunas no sql. Os suportes oferecem alguma vantagem? Quando eu dou o código T-SQL, nunca me incomodei com eles.

Exemplo: Visual Studio: SELECT [column1], [column2] etc …

Meu próprio caminho: SELECT column1, column2 etc …

Os colchetes são necessários se você usar palavras-chave ou caracteres especiais nos nomes ou identificadores das colunas. Você poderia nomear uma coluna [First Name] (com um espaço) – mas você precisaria usar parênteses toda vez que se referisse a essa coluna.

As ferramentas mais recentes as adicionam em todos os lugares, apenas por precaução ou por motivos de consistência.

Eles são úteis se suas colunas tiverem os mesmos nomes que as palavras-chave SQL ou tiverem espaços nelas.

Exemplo:

 create table test ( id int, user varchar(20) ) 

Ah não! Sintaxe incorreta perto da palavra-chave ‘usuário’. Mas isso:

 create table test ( id int, [user] varchar(20) ) 

Funciona bem.

Eles são úteis se você (por algum motivo) usar nomes de colunas com determinados caracteres, por exemplo.

 Select First Name From People 

não funcionaria, mas colocar colchetes ao redor do nome da coluna funcionaria

 Select [First Name] From People 

Em suma, é uma forma de declarar explicitamente um nome de object; coluna, tabela, database, usuário ou servidor.

Os nomes das colunas podem conter caracteres e palavras reservadas que confundirão o mecanismo de execução da consulta, portanto, colocar colchetes ao redor deles sempre impede que isso aconteça. Mais fácil do que verificar um problema e, em seguida, lidar com isso, eu acho.

Os colchetes podem ser usados ​​quando os nomes das colunas são palavras reservadas.

Se você estiver programaticamente gerando a instrução SQL a partir de uma coleção de nomes de coluna que você não controla, evite problemas usando sempre os colchetes.

Além disso, alguns bancos de dados do SharePoint contêm hífens em seus nomes. Usando colchetes em instruções SQL permitem que os nomes sejam analisados ​​corretamente.

Acredito que os adiciona lá para consistência … eles só são necessários quando você tem um espaço ou caractere especial no nome da coluna, mas é mais limpo apenas incluí-los o tempo todo quando o IDE gera SQL.

Independentemente de seguir uma convenção de nomenclatura que evite o uso de palavras reservadas, a Microsoft adiciona novas palavras reservadas. O uso de colchetes permite que seu código seja atualizado para uma nova versão do SQL Server, sem precisar primeiro editar as palavras recém-reservadas da Microsoft fora do seu código de cliente. Essa edição pode ser uma preocupação significativa. Isso pode fazer com que seu projeto seja prematuramente aposentado …

Os colchetes também podem ser úteis quando você deseja replace tudo em um script. Se o lote contiver uma variável denominada @String e uma coluna denominada [String], você poderá renomear a coluna para [NewString], sem renomear @String para @NewString.

Durante as eras escuras do SQL nos anos 90, era uma boa prática, já que os projetistas de SQL estavam tentando adicionar cada palavra no dictionary como palavra-chave para uma avalanche interminável de novos resources e eles chamavam de rascunho SQL3.

Por isso, mantém a compatibilidade.

E eu achei que tem outro efeito colateral legal, isso ajuda muito quando você usa grep em revisões de código e refatoração.