Identificadores de banco de dados

Aplica-se a: SQL Server (todas as versões com suporte) SQL do Azure Banco de Dados Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

O nome do objeto de banco de dados é conhecido como identificador. Tudo no Microsoft SQL Server pode ter um identificador. Servidores, bancos de dados e objetos de banco de dados, como tabelas, exibições, colunas, índices, gatilhos, procedimentos, restrições e regras, podem ter identificadores. Os identificadores são necessários para a maioria dos objetos, mas são opcionais para alguns objetos, como restrições.

O identificador de objeto é criado quando o objeto é definido. O identificador é utilizado para referenciar o objeto. Por exemplo, a seguinte instrução cria uma tabela com o identificador TableXe duas colunas com os identificadores KeyCol e Description:

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

Essa tabela também tem uma restrição sem-nome. A restrição PRIMARY KEY não tem identificador.

A ordenação de um identificador depende do nível em que está definido. Os identificadores de objetos no nível de instância, como logons e nomes de banco de dados, são atribuídos à ordenação padrão da instância. Os identificadores de objetos em um banco de dados, como tabelas, exibições e nomes de coluna, são atribuídos à ordenação padrão do banco de dados. Por exemplo, duas tabelas com nomes que se diferem apenas em maiúsculas e minúsculas podem ser criadas em um banco de dados que possui ordenação que diferencia maiúsculas e minúsculas, mas não podem ser criadas em um banco de dados que tem ordenação que não diferencia maiúsculas e minúsculas.

Observação

Os nomes das variáveis ou os parâmetros de funções e procedimentos armazenados devem estar em conformidade com as regras para identificadores Transact-SQL.

Classes de identificadores

Há duas classes de identificadores:

  • Identificadores normais
    Estão em conformidade com as regras de formato de identificadores. Identificadores regulares não são delimitados quando são usados em instruções Transact-SQL.

    USE AdventureWorks
    GO
    SELECT *
    FROM HumanResources.Employee
    WHERE NationalIDNumber = 153479919
    
  • Identificadores delimitados
    Estão entre aspas duplas (") ou colchetes ([]). Os identificadores que estão em conformidade com as regras de formato de identificadores podem não ser delimitados. Por exemplo:

    USE AdventureWorks
    GO
    SELECT *
    FROM [HumanResources].[Employee] --Delimiter is optional.
    WHERE [NationalIDNumber] = 153479919 --Delimiter is optional.
    

Os identificadores que não estão em conformidade com todas as regras para identificadores devem ser delimitados em uma instrução Transact-SQL. Por exemplo:

USE AdventureWorks
GO
CREATE TABLE [SalesOrderDetail Table] --Identifier contains a space and uses a reserved keyword.
(
	[Order] [int] NOT NULL,
	[SalesOrderDetailID] [int] IDENTITY(1,1) NOT NULL,
	[OrderQty] [smallint] NOT NULL,
	[ProductID] [int] NOT NULL,
	[UnitPrice] [money] NOT NULL,
	[UnitPriceDiscount] [money] NOT NULL,
	[ModifiedDate] [datetime] NOT NULL,
  CONSTRAINT [PK_SalesOrderDetail_Order_SalesOrderDetailID] PRIMARY KEY CLUSTERED 
  ([Order] ASC, [SalesOrderDetailID] ASC)
);
GO

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

Tanto os identificadores normais quanto os delimitados devem conter de 1 a 128 caracteres. Para tabelas temporárias locais, o identificador pode ter no máximo 116 caracteres.

Regras para identificadores normais

Os nomes de variáveis, funções e procedimentos armazenados devem estar em conformidade com as regras a seguir para identificadores Transact-SQL.

  1. O primeiro caractere deve ser um dos seguintes:

    • Uma letra, como definido pelo Unicode Standard 3.2. A definição de letras do Unicode inclui caracteres latinos de a até z, de A até Z, além de caracteres de letras de outros idiomas.

    • Sublinhado (_), arroba (@) ou sinal de número (#).

      Determinados símbolos no começo de um identificador possuem um significado especial no SQL Server. Um identificador normal iniciado com arroba denota sempre uma variável local ou parâmetro e não pode ser utilizado como nome de qualquer outro tipo de objeto. Um identificador iniciado com um sinal de número denota uma tabela temporária ou procedimento. Um identificador iniciado com dois sinais de número (##) denota um objeto temporário global. Embora possa ser utilizado um caractere de sinal de número ou dois sinais de número para começar os nomes de outros tipos de objetos, não recomendamos essa prática.

      Algumas funções Transact-SQL têm nomes que começam com sinal duplo (@@). Para evitar confusão com essas funções, você não deverá utilizar nomes que iniciam com @@.

  2. Os caracteres subsequentes podem incluir:

    • Letras, como definido no Unicode Standard 3.2.

    • Números decimais do latim básico ou outros scripts nacionais.

    • O sinal de at (@), sinal de dólar ($), sinal de número (#) ou sublinhado (_).

  3. O identificador não deve ser uma palavra reservada transact-SQL. SQL Server reserva as versões maiúscula e minúscula de palavras reservadas. Quando os identificadores são usados em instruções Transact-SQL, os identificadores que não estão em conformidade com essas regras devem ser delimitados por aspas duplas ou colchetes. As palavras reservadas dependem do nível de compatibilidade do banco de dados. Esse nível pode ser definido por meio da instrução ALTER DATABASE .

  4. Não são permitidos espaços ou caracteres especiais.

  5. Não são permitidos caracteres suplementares.

Quando os identificadores são usados em instruções Transact-SQL, os identificadores que não estão em conformidade com essas regras devem ser delimitados por aspas duplas ou colchetes.

Observação

As regras do formato de identificadores normais dependem do nível de compatibilidade do banco de dados. Esse nível pode ser definido por meio de ALTER DATABASE.

Consulte Também

ALTER TABLE (Transact-SQL)
CREATE DATABASE (SQL Server Transact-SQL)
CREATE DEFAULT (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
CREATE RULE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
CREATE VIEW (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
DELETE (Transact-SQL)
INSERT (Transact-SQL)
Palavras-chave reservadas (Transact-SQL)
SELECT (Transact-SQL)
UPDATE (Transact-SQL)