2008-09-09 25 views
117

Me he dado cuenta de que Visual Studio 2008 está colocando corchetes alrededor de los nombres de las columnas en sql. ¿Los corchetes ofrecen alguna ventaja? Cuando le doy el código T-SQL, nunca me he molestado con ellos.¿Cuál es el uso de los corchetes [] en sentencias sql?

Ejemplo: Visual Studio: SELECT [column1], [columna2] etc ...

mi manera: column1 SELECT, columna2 etc ...

+0

Es bueno que su código codificado a mano nunca haya necesitado paréntesis, su convención de nomenclatura de bases de datos debería excluir los nombres que necesitan paréntesis. –

+0

La respuesta relacionada analiza la configuración de QUOTED_IDENTIFIER: http://stackoverflow.com/questions/19657101/what-is-the-difference-between-square-brackets-and-single-quotes-for- aliasing-in –

+0

Podría añadir que el los corchetes son una peculiaridad de Microsoft. El estándar SQL en realidad utiliza comillas dobles ('" '), que Microsoft _also_ admite. Si Microsoft sintiera la necesidad de delimitar todo, habría sido mejor usar las comillas dobles estándar en su lugar. Pero supongo que eso habría hecho es muy fácil transferirlo a otro DBMS, y eso nunca va a funcionar ... – Manngo

Respuesta

127

Los corchetes son necesarios si utiliza palabras clave o caracteres especiales en los nombres o identificadores de las columnas. Podría nombrar una columna [First Name] (con un espacio), pero luego necesitaría usar corchetes cada vez que se refiriera a esa columna.

Las herramientas más nuevas las agregan en todas partes por si acaso o por coherencia.

+3

¿es este el único propósito de los corchetes? –

+0

@mehow, it [seem] (http://msdn.microsoft.com/en-us/library /aa224033(v=sql.80).aspx) de esa manera, pero no tengo una referencia que indique tal explícitamente. –

+1

q relacionado: http://stackoverflow.com/questions/9917196/meaning-of-square-brackets -in-ms-sql-table-designer –

5

Los soportes se pueden utilizar cuando los nombres de columna son palabras reservadas.

Si está generando programáticamente la instrucción SQL de una colección de nombres de columnas que no controla, entonces puede evitar problemas utilizando siempre los corchetes.

6

Los nombres de columna pueden contener caracteres y palabras reservadas que puedan confundir el motor de ejecución de consultas, por lo que colocar corchetes a su alrededor en todo momento evita que esto ocurra. Es más fácil que buscar un problema y luego lidiar con él, supongo.

3

Creo que los agrega allí por coherencia ... solo son necesarios cuando tienes un espacio o un carácter especial en el nombre de la columna, pero es más sencillo incluirlos todo el tiempo cuando el IDE genera SQL.

41

Son útiles si sus columnas tienen los mismos nombres que las palabras clave SQL, o tienen espacios en ellas.

Ejemplo:

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

Oh no! Sintaxis incorrecta cerca de la palabra clave 'usuario'. Pero esto :

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

funciona bien.

10

Son útiles si, por alguna razón, utiliza nombres de columna con ciertos caracteres, por ejemplo.

Select First Name From People 

no quiere trabajar, pero poniendo corchetes alrededor del nombre de la columna funcionaría

Select [First Name] From People 

En resumen, se trata de una forma de declarar explícitamente un nombre de objeto; columna, tabla, base de datos, usuario o servidor.

4

Además Algunas bases de datos Sharepoint contienen guiones en sus nombres. Utilizar corchetes en las declaraciones SQL permite que los nombres se analicen correctamente.

3

Independientemente de seguir una convención de nomenclatura que evite el uso de palabras reservadas, Microsoft agrega nuevas palabras reservadas. El uso de corchetes permite que su código se actualice a una nueva versión de SQL Server, sin necesidad de editar primero las palabras reservadas de Microsoft de su código de cliente. Esa edición puede ser una gran preocupación.Puede hacer que su proyecto se retire prematuramente ...

Los corchetes también pueden ser útiles cuando desee Reemplazar todo en una secuencia de comandos. Si su lote contiene una variable llamada @String y una columna llamada [String], puede cambiar el nombre de la columna a [NewString], sin cambiar el nombre de @String a @NewString.

1

Durante las edades oscuras de SQL en la década de 1990 fue una buena práctica ya que los diseñadores de SQL estaban tratando de agregar cada palabra en el diccionario como palabra clave para una avalancha interminable de nuevas características y lo llamaron el borrador de SQL3.

Por lo tanto, mantiene la compatibilidad hacia adelante.

Y encontré que tiene otro buen efecto secundario, ayuda mucho cuando usa grep en revisiones de código y refactorización.

Cuestiones relacionadas