2008-09-30 64 views
24

¿Qué hacen los corchetes en una instrucción sql?[] corchetes en sentencias sql

Por ejemplo, en la declaración:

insert into table1 ([columnname1], columnname2) values (val1, val2)

Además, ¿qué hacer si el nombre de la tabla está entre paréntesis?

+0

pregunta duplicado: http://stackoverflow.com/questions/52898/sql-syntax-curiousity – bdukes

+4

título mejor en este caso sin embargo. ¿Quién, al encontrar los corchetes por primera vez, buscaría "curiosidad"? – Shog9

+1

Especialmente porque "curiosidad" ni siquiera es una palabra. –

Respuesta

39

Los [] marcas de la delimitación de un identificador, por lo que si usted tiene una columna cuyo nombre contiene espacios como Cantidad que necesita para encerrar con [] como:

select [Order qty] from [Client sales] 

También son para escapar palabras clave reservadas utilizadas como identificadores

5

Están destinados a escapar palabras clave reservadas o identificadores de columna no válidos.

CREATE TABLE test 
(
    [select] varchar(15) 
) 

INSERT INTO test VALUES('abc') 

SELECT [select] FROM test 
0

Son simplemente delimitadores que le permiten poner caracteres especiales (como espacios) en el nombre de la columna o tabla por ej.

insert into [Table One] ([Column Name 1], columnname2) values (val1, val2) 
1

Cualquier cosa dentro de los corchetes se considera un único identificador (por ejemplo, [máquina de prueba]. Esto se puede utilizar para encerrar nombres con espacios o para escapar de palabras de reserva (por ejemplo, [orden], [seleccionar], [grupo] .)

2

ellos le permiten utilizar palabras clave (como fecha) en el nombre de la columna, mesa, etc ...

Dado que esta es una mala práctica, para empezar, por lo general, no son incluido. El único lugar donde debería ver que se usan es personas que comienzan con consultas SQL que no conocen mejor. que simplemente desordenan su consulta.

12

Esta es la sintaxis no estándar de Microsoft SQL Server para "identificadores delimitados". SQL admite delimitadores para los identificadores para permitir nombres de tabla, nombres de columna, u otros objetos de metadatos para contener lo siguiente:

  • palabras reservadas de SQL: "Orden"
  • Palabras que contienen espacios: "cantidad de pedidos"
  • Palabras que contiene puntuacion: "orden-cant"
  • Las palabras que contengan caracteres internacionales
  • nombres de las columnas que son entre mayúsculas y minúsculas: "orden" frente a "orden"

Microsoft SQL Server utiliza los corchetes, pero esta no es la sintaxis que SQL utiliza para los identificadores delimitados. De manera estándar, las comillas dobles deben usarse para delimitadores.

En Microsoft SQL Server, puede activar un modo de usar las comillas dobles estándar para los delimitadores de la siguiente manera:

SET QUOTED_IDENTIFIER ON; 
+2

Incluso con comillas o corchetes, los nombres no son necesariamente sensibles a mayúsculas y minúsculas en SQL Server; depende de la clasificación del servidor o de la base de datos. Además, los corchetes no son exclusivos de SQL Server; ellos también están en Sybase. –

+2

Gracias, tiene sentido que los corchetes sean compatibles con Sybase, ya que tanto él como SQL Server alguna vez fueron la misma base de código. –

+2

¿El elemento de corchete cuadrado también se aplica a MS Access SQL Server? –

0

si se utiliza cualquier nombre de la columna que es igual que cualquier palabra clave reservada en SQL, en ese caso, puede poner el nombre de la columna entre corchetes para distinguir entre el nombre de columna personalizado y la palabra clave reservada existente.

Cuestiones relacionadas