Identificatori del database

Il nome di un oggetto di database rappresenta l'identificatore dell'oggetto stesso. Tutti gli elementi di Microsoft SQL Server possono avere un identificatore. ad esempio server, database e oggetti di database quali tabelle, viste, colonne, indici, trigger, procedure, vincoli, regole e così via. Gli identificatori sono richiesti con la maggior parte degli oggetti. Per alcuni oggetti, quali i vincoli, sono facoltativi.

L'identificatore viene creato in fase di definizione dell'oggetto e viene successivamente utilizzato per fare riferimento all'oggetto. Ad esempio, l'istruzione seguente crea una tabella a cui viene associato l'identificatore TableXe due colonne a cui vengono associati gli identificatori KeyCol e Description:

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

La tabella include inoltre un vincolo senza nome. Il vincolo PRIMARY KEY è privo di identificatore.

Le regole di confronto di un identificatore dipendono dal livello nel quale viene definito. Agli identificatori degli oggetti a livello di istanza, quali gli account di accesso e i nomi di database, vengono assegnate le regole di confronto predefinite dell'istanza. Agli identificatori degli oggetti di un database, quali tabelle, viste e nomi di colonna, vengono assegnate le regole di confronto predefinite del database. Ad esempio, due tabelle i cui nomi si differenziano soltanto per l'utilizzo del maiuscolo e del minuscolo possono essere create in un database con regole di confronto in cui l'uso di maiuscole e minuscole è rilevante, ma non in un database con regole di confronto in cui l'uso di maiuscole e minuscole non è rilevante.

Nota

I nomi delle variabili o i parametri delle funzioni e delle stored procedure devono essere conformi alle regole per gli identificatori Transact-SQL.

Classi di identificatori

Esistono due classi di identificatori:

Identificatori regolari
Sono conformi alle regole relative al formato degli identificatori. Gli identificatori regolari non sono delimitati quando vengono usati nelle istruzioni Transact-SQL.

SELECT *  
FROM TableX  
WHERE KeyCol = 124  

Identificatori delimitati
Sono racchiusi tra virgolette doppie (") o tra parentesi quadre ([ ]). Gli identificatori conformi alle regole relative al formato degli identificatori possono non essere delimitati. Ad esempio:

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

Gli identificatori che non sono conformi a tutte le regole per gli identificatori devono essere delimitati in un'istruzione Transact-SQL. Ad esempio:

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

Sia gli identificatori regolari che quelli delimitati devono includere da 1 a 128 caratteri. Gli identificatori delle tabelle temporanee locali possono includere al massimo 116 caratteri.

Regole relative agli identificatori regolari

I nomi di variabili, funzioni e stored procedure devono essere conformi alle regole seguenti per gli identificatori Transact-SQL.

  1. Il primo carattere deve essere uno dei seguenti:

    • Una lettera definita dallo standard Unicode 3,2, ovvero i caratteri dell'alfabeto latino a-z e A-Z e i caratteri di altre lingue.

    • Il carattere di sottolineatura (_), il simbolo di chiocciola (@) o il simbolo di cancelletto (#).

      Alcuni simboli all'inizio di un identificatore hanno un significato speciale in SQL Server. Un identificatore regolare che inizia con il carattere @ indica sempre una variabile locale o un parametro e non può essere utilizzato per il nome di un tipo di oggetto diverso. il carattere # indica una tabella o una procedura temporanea, mentre due simboli di cancelletto (##) indicano un oggetto temporaneo globale. Nonostante sia possibile usare uno o due simboli di cancelletto all'inizio dei nomi di altri tipi di oggetti, è consigliabile non adottare questa tecnica.

      Alcune funzioni Transact-SQL hanno nomi che iniziano con segni double at (@@). Per evitare confusione in merito a tali funzioni, è consigliabile non usare nomi che iniziano con @@.

  2. I caratteri successivi possono includere gli elementi seguenti:

    • Lettere definite nello standard Unicode 3,2.

    • Numeri decimali inclusi nell'alfabeto Latino di base o in altri alfabeti nazionali.

    • Il simbolo di chiocciola, il simbolo di dollaro ($), il simbolo di cancelletto o il carattere di sottolineatura.

  3. L'identificatore non deve essere una parola riservata Transact-SQL. SQL Server riserva sia le versioni maiuscole che minuscole delle parole riservate. Quando gli identificatori vengono usati nelle istruzioni Transact-SQL, gli identificatori che non sono conformi a queste regole devono essere delimitati da virgolette doppie o parentesi quadre. Le parole riservate dipendono dal livello di compatibilità del database. Questo livello può essere impostato usando l'istruzione ALTER DATABASE .

  4. Non sono consentiti spazi incorporati o caratteri speciali.

  5. Non sono consentiti caratteri supplementari.

Quando gli identificatori vengono usati nelle istruzioni Transact-SQL, gli identificatori che non sono conformi a queste regole devono essere delimitati da virgolette doppie o parentesi quadre.

Nota

Alcune regole relative al formato degli identificatori regolari dipendono dal livello di compatibilità del database. È possibile impostare tale livello con ALTER DATABASE.

Vedere anche

ALTER TABLE (Transact-SQL)
CREATE DATABASE (Transact-SQL di SQL Server)
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)
Parole chiave riservate (Transact-SQL)
SELECT (Transact-SQL)
UPDATE (Transact-SQL)