Qual é o uso dos colchetes [] nas instruções sql?

163

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

Exemplo:

Estúdio visual:

SELECT [column1], [column2] etc...

Meu próprio caminho:

SELECT column1, column2 etc...
Paulj
fonte
É bom que o SQL com código de mão nunca precise de colchetes; sua convenção de nomenclatura de banco de dados deve excluir nomes que precisam de colchetes.
Christian Oudard 9/09/08
A resposta relacionada discute a configuração QUOTED_IDENTIFIER: stackoverflow.com/questions/19657101/…
Jared Beck
8
Devo acrescentar que os colchetes são uma peculiaridade da Microsoft. O SQL Standard, na verdade, usa aspas duplas ( "), que a Microsoft também oferece suporte. Se a Microsoft sentisse a necessidade de delimitar tudo, seria melhor usar as aspas duplas padrão. Mas eu acho que teria feito isso muito fácil para a porta para outro DBMS, e isso nunca vai fazer ...
Manngo

Respostas:

181

Os colchetes são necessários se você usar palavras-chave ou caracteres especiais nos nomes ou identificadores da coluna. Você pode nomear uma coluna [First Name](com um espaço) - mas precisará usar colchetes toda vez que consultar essa coluna.

As ferramentas mais recentes os adicionam a qualquer lugar, apenas por precaução ou por consistência.

Michael Haren
fonte
3
esse é o único objetivo dos colchetes?
1
@mehow, parece que sim, mas eu não tenho uma referência indicando isso explicitamente.
22913 Michael Haren
2
Q relacionado: stackoverflow.com/questions/9917196/…
Michael Haren
2
O sql também usa colchetes no operador like de uma consulta select para limitar os resultados usando expressões regulares. codeproject.com/Articles/33941/SQL-LIKE-Operator
Jens Frandsen
2
Você também pode definir um nome de coluna chamado, selectmas select select from mytablegera um erro select [select] from mytable, tornando-o uma consulta válida. Qualquer que seja a palavra colorida no seu estúdio de gerenciamento SQL, deve estar entre colchetes se você quiser usá-las como nomes de colunas / tabelas / sp / etc. No MySQL, aspas simples angulares `` `` seriam o equivalente a isso.
Barry Guvenkaya
59

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

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.

Blorgbeard está fora
fonte
@Blordbeard é algo específico para o Microsoft SQL Server ou colchetes também funcionam da mesma forma para Oracle, mySQL, PostgreSQL etc.?
user3700562
4
Os colchetes não são SQL padrão, não sabemos quais caracteres todos os mecanismos de banco de dados usam. Por exemplo: O MySQL usa backticks: stackoverflow.com/questions/2889871/…
Blorgbeard saiu em
12

Eles são úteis se você estiver (por algum motivo) usando 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 maneira de declarar explicitamente o nome de um objeto; coluna, tabela, banco de dados, usuário ou servidor.

GateKiller
fonte
6

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 o tempo todo impede que isso aconteça. Mais fácil do que procurar um problema e depois lidar com ele, eu acho.


fonte
5

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 colunas que não controla, poderá evitar problemas sempre usando os colchetes.

Torlack
fonte
5

Independentemente de seguir uma convenção de nomenclatura que evita 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 a necessidade de editar primeiro as palavras recém-reservadas da Microsoft a partir do código do cliente. Essa edição pode ser uma preocupação significativa. Isso pode fazer com que seu projeto seja desativado prematuramente ....

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

Conta
fonte
5

Durante a idade das trevas do SQL na década de 1990, era uma boa prática, pois os designers do SQL tentavam adicionar cada palavra no dicionário como palavra-chave para uma avalanche interminável de novos recursos, e eles o chamavam de rascunho do SQL3.

Por isso, mantém a compatibilidade avançada.

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

Lothar
fonte
4

Além disso, alguns bancos de dados do Sharepoint contêm hífens em seus nomes. O uso de colchetes nas instruções SQL permite que os nomes sejam analisados ​​corretamente.

HSchlarb
fonte
3

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

Jeff Donnici
fonte