Identificadores de base de datosDatabase Identifiers

El nombre de un objeto de base de datos se conoce como su identificador.The database object name is referred to as its identifier. Cualquier elemento de MicrosoftMicrosoft SQL ServerSQL Server puede tener un identificador.Everything in MicrosoftMicrosoft SQL ServerSQL Server can have an identifier. Servidores, bases de datos y objetos de bases de datos, como tablas, vistas, columnas, índices, desencadenadores, procedimientos, restricciones, reglas, etc. pueden tener identificadores.Servers, databases, and database objects, such as tables, views, columns, indexes, triggers, procedures, constraints, and rules, can have identifiers. Se requiere que la mayor parte de los objetos tengan identificadores; pero para ciertos objetos, como las restricciones, son opcionales.Identifiers are required for most objects, but are optional for some objects such as constraints.

El identificador de un objeto se crea cuando se define el objeto.An object identifier is created when the object is defined. A continuación, el identificador se utiliza para hacer referencia al objeto.The identifier is then used to reference the object. Por ejemplo, la instrucción siguiente crea una tabla con el identificador TableXy dos columnas con los identificadores KeyCol y Description:For example, the following statement creates a table with the identifier TableX, and two columns with the identifiers KeyCol and Description:

CREATE TABLE TableX  
(KeyCol INT PRIMARY KEY, Description nvarchar(80))  

Esta tabla tiene también una restricción sin nombre.This table also has an unnamed constraint. La restricción PRIMARY KEY no tiene ningún identificador.The PRIMARY KEY constraint has no identifier.

La intercalación de un identificador depende del nivel en que está definido.The collation of an identifier depends on the level at which it is defined. Se asigna a los identificadores de objetos de instancia, como los inicios de sesión y los nombres de base de datos, la intercalación predeterminada de la instancia.Identifiers of instance-level objects, such as logins and database names, are assigned the default collation of the instance. A los identificadores de objetos de una base de datos, como nombres de tablas, vistas y columnas, se asigna la intercalación predeterminada de la base de datos.Identifiers of objects in a database, such as tables, views, and column names, are assigned the default collation of the database. Por ejemplo, es posible crear dos tablas con nombres que solo se diferencian en las mayúsculas en una base de datos con intercalación que distinga entre mayúsculas y minúsculas, pero no se pueden crear en una base de datos con intercalación que no distinga entre mayúsculas y minúsculas.For example, two tables with names that differ only in case can be created in a database that has case-sensitive collation, but cannot be created in a database that has case-insensitive collation.

Nota

Los nombres de variables o los parámetros de funciones y procedimientos almacenados deben cumplir las reglas para los identificadores de Transact-SQLTransact-SQL .The names of variables, or the parameters of functions and stored procedures must comply with the rules for Transact-SQLTransact-SQL identifiers.

Clases de identificadoresClasses of Identifiers

Existen dos clases de identificadores:There are two classes of identifiers:

Identificadores normalesRegular identifiers
Siguen las reglas de formato de los identificadores.Comply with the rules for the format of identifiers. Los identificadores normales no están delimitados cuando se usan en instrucciones Transact-SQLTransact-SQL .Regular identifiers are not delimited when they are used in Transact-SQLTransact-SQL statements.

SELECT *  
FROM TableX  
WHERE KeyCol = 124  

Identificadores delimitadosDelimited identifiers
Se incluyen entre comillas dobles (") o corchetes ([ ]).Are enclosed in double quotation marks (") or brackets ([ ]). Los identificadores que siguen las reglas de formato de los identificadores pueden no estar delimitados.Identifiers that comply with the rules for the format of identifiers might not be delimited. Por ejemplo:For example:

SELECT *  
FROM [TableX]         --Delimiter is optional.  
WHERE [KeyCol] = 124  --Delimiter is optional.  

Los identificadores que no cumplen las reglas de los identificadores deben estar delimitados en las instrucciones Transact-SQLTransact-SQL .Identifiers that do not comply with all the rules for identifiers must be delimited in a Transact-SQLTransact-SQL statement. Por ejemplo:For example:

SELECT *  
FROM [My Table]      --Identifier contains a space and uses a reserved keyword.  
WHERE [order] = 10   --Identifier is a reserved keyword.  

Ambos identificadores, normales y delimitados, deben tener entre 1 y 128 caracteres.Both regular and delimited identifiers must contain from 1 through 128 characters. En el caso de las tablas temporales locales, el identificador puede tener un máximo de 116 caracteres.For local temporary tables, the identifier can have a maximum of 116 characters.

Reglas de los identificadores normalesRules for Regular Identifiers

Los nombres de variables, funciones y procedimientos almacenados deben cumplir las siguientes reglas para los identificadores de Transact-SQLTransact-SQL .The names of variables, functions, and stored procedures must comply with the following rules for Transact-SQLTransact-SQL identifiers.

  1. El primer carácter debe ser alguno de los siguientes:The first character must be one of the following:

    • Una letra, tal como se define en el estándar Unicode 3,2.A letter as defined by the Unicode Standard 3.2. La definición Unicode de letras incluye los caracteres latinos de la “a” a la “z” y de la “A” a la “Z”, además de los caracteres de letras de otros idiomas.The Unicode definition of letters includes Latin characters from a through z, from A through Z, and also letter characters from other languages.

    • El signo de subrayado (), arroba (@) o número (#).The underscore (), at sign (@), or number sign (#).

      Ciertos símbolos al principio de un identificador tienen un significado especial en SQL ServerSQL Server.Certain symbols at the beginning of an identifier have special meaning in SQL ServerSQL Server. Un identificador normal que comience por el signo arroba siempre denotará una variable local o un parámetro, y no se puede usar como nombre de ningún otro tipo de objeto.A regular identifier that starts with the at sign always denotes a local variable or parameter and cannot be used as the name of any other type of object. Un identificador que empieza con el signo de número indica una tabla o procedimiento temporal.An identifier that starts with a number sign denotes a temporary table or procedure. Un identificador que empieza con un signo de número doble (##) indica un objeto temporal global.An identifier that starts with double number signs (##) denotes a global temporary object. Aunque es posible utilizar los caracteres de signo de número o doble signo de número para comenzar los nombres de otros tipos de objetos, no se recomienda hacerlo.Although the number sign or double number sign characters can be used to begin the names of other types of objects, we do not recommend this practice.

      Algunas funciones de Transact-SQLTransact-SQL tienen nombres que empiezan con un doble signo de arroba (@@).Some Transact-SQLTransact-SQL functions have names that start with double at signs (@@). Para evitar confusiones con estas funciones, se recomienda no utilizar nombres que empiecen con @@.To avoid confusion with these functions, you should not use names that start with @@.

  2. Los caracteres subsiguientes pueden ser:Subsequent characters can include the following:

    • Letras, tal como se definen en el estándar Unicode 3,2.Letters as defined in the Unicode Standard 3.2.

    • Números decimales del alfabeto Latín básico u otros alfabetos de otros idiomas.Decimal numbers from either Basic Latin or other national scripts.

    • El signo de arroba, dólar ($), número o subrayado.The at sign, dollar sign ($), number sign, or underscore.

  3. El identificador no debe ser una palabra reservada de Transact-SQLTransact-SQL .The identifier must not be a Transact-SQLTransact-SQL reserved word. SQL ServerSQL Server se reserva las versiones en mayúsculas y minúsculas de las palabras reservadas. reserves both the uppercase and lowercase versions of reserved words. Cuando se utilizan en instrucciones Transact-SQLTransact-SQL , los identificadores que no cumplan estas reglas deben aparecer delimitados por comillas dobles o corchetes.When identifiers are used in Transact-SQLTransact-SQL statements, the identifiers that do not comply with these rules must be delimited by double quotation marks or brackets. Las palabras reservadas dependen del nivel de compatibilidad de la base de datos.The words that are reserved depend on the database compatibility level. Este nivel se puede establecer mediante la instrucción ALTER DATABASE .This level can be set by using the ALTER DATABASE statement.

  4. No se permiten los caracteres especiales o los espacios incrustados.Embedded spaces or special characters are not allowed.

  5. Los caracteres complementarios no están permitidos.Supplementary characters are not allowed.

    Cuando se utilizan en instrucciones Transact-SQLTransact-SQL , los identificadores que no cumplan estas reglas deben aparecer delimitados por comillas dobles o corchetes.When identifiers are used in Transact-SQLTransact-SQL statements, the identifiers that do not comply with these rules must be delimited by double quotation marks or brackets.

Nota

Algunas reglas de formato de los identificadores normales dependen del nivel de compatibilidad de la base de datos.Some rules for the format of regular identifiers depend on the database compatibility level. Este nivel se puede establecer mediante ALTER DATABASE.This level can be set by using ALTER DATABASE.

Vea tambiénSee Also

ALTER TABLE (Transact-SQL) ALTER TABLE (Transact-SQL)
CREATE DATABASE (Transact-SQL de SQL Server) CREATE DATABASE (SQL Server Transact-SQL)
CREATE DEFAULT (Transact-SQL) CREATE DEFAULT (Transact-SQL)
CREATE PROCEDURE (Transact-SQL) CREATE PROCEDURE (Transact-SQL)
CREATE RULE (Transact-SQL) CREATE RULE (Transact-SQL)
CREATE TABLE (Transact-SQL) CREATE TABLE (Transact-SQL)
CREATE TRIGGER (Transact-SQL) CREATE TRIGGER (Transact-SQL)
CREATE VIEW (Transact-SQL) CREATE VIEW (Transact-SQL)
DECLARE @local_variable (Transact-SQL) DECLARE @local_variable (Transact-SQL)
DELETE (Transact-SQL) DELETE (Transact-SQL)
INSERT (Transact-SQL) INSERT (Transact-SQL)
Palabras clave reservadas (Transact-SQL) Reserved Keywords (Transact-SQL)
SELECT (Transact-SQL) SELECT (Transact-SQL)
UPDATE (Transact-SQL) UPDATE (Transact-SQL)