Identificatori del database

 

Data di pubblicazione: agosto 2016

Il nome di un oggetto di database rappresenta l'identificatore dell'oggetto stesso. È possibile associare un identificatore a qualunque elemento di Microsoft SQL Server, 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 TableX e 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.

System_CAPS_ICON_note.jpg Nota


È necessario che i nomi di variabili o i parametri di funzioni e stored procedure siano conformi alle regole relative agli identificatori Transact-SQL.

Esistono due classi di identificatori:

Identificatori regolari
Sono conformi alle regole relative al formato degli identificatori. Gli identificatori regolari non vengono delimitati quando vengono utilizzati in 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. Esempio:

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

All'interno di un'istruzione Transact-SQL è necessario che gli identificatori non conformi alle regole relative agli identificatori siano delimitati. 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.

È necessario che i nomi di variabili, funzioni e stored procedure siano conformi alle seguenti regole relative agli 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 caratteri utilizzati all'inizio di un identificatore assumono un significato particolare 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.

      I nomi di alcune funzioni Transact-SQL iniziano con due simboli di chiocciola (@@). 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 sia quelle minuscole delle parole riservate. Quando vengono utilizzati in istruzioni Transact-SQL, gli identificatori non conformi a queste regole devono essere racchiusi tra 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 vengono utilizzati in istruzioni Transact-SQL, gli identificatori non conformi a queste regole devono essere racchiusi tra virgolette doppie o parentesi quadre.

System_CAPS_ICON_note.jpg Nota


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

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)
Parole chiave riservate (Transact-SQL)
SELECT (Transact-SQL)
UPDATE (Transact-SQL)

Aggiunte alla community

AGGIUNGI
Mostra: