Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Nomi e identificatori
I nomi identificano oggetti di database, comprese tabelle e colonne, nonché utenti e password. È possibile usare i termini nome e identificatore in modo intercambiabile. Ci sono due tipi di identificatori, gli identificatori standard e gli identificatori delimitati o racchiusi tra virgolette. È necessario che gli identificatori contengano solo caratteri stampabili UTF-8. Le lettere ASCII negli identificatori standard e delimitati fanno distinzione tra maiuscole e minuscole e sono scritte in minuscolo nel database. Nei risultati delle query, i nomi delle colonne vengono restituiti in lettere minuscole per impostazione predefinita. Per restituire i nomi delle colonne in lettere maiuscole, impostare il parametro di configurazione describe_field_name_in_uppercase su true
.
Identificatori standard
Gli identificatori SQL standard rispettano un insieme di regole ed è necessario che:
-
Inizino con un carattere alfabetico o di sottolineatura a byte singolo ASCII oppure con un carattere multibyte UTF-8 da due a quattro byte di lunghezza.
-
È possibile che i caratteri seguenti siano caratteri alfanumerici, di sottolineatura o segni di dollaro a byte singolo ASCII oppure caratteri multibyte UTF-8 da due a quattro byte di lunghezza.
-
Abbiano una lunghezza compresa tra 1 e 127 byte, senza comprendere le virgolette per gli identificatori delimitati.
-
Non contengano virgolette e spazi.
-
Non siano una parola chiave di SQL riservata.
Identificatori delimitati
Gli identificatori delimitati (conosciuti anche come identificatori tra virgolette) iniziano e terminano con le virgolette doppie ("). Se vedi un identificatore delimitato, è necessario usare le virgolette doppie per ogni riferimento a quell'oggetto. L'identificatore può contenere qualsiasi carattere stampabile UTF-8 standard diverso dalle virgolette doppie. Pertanto, è possibile creare nomi di colonna o tabella che comprendono caratteri altrimenti non ammessi, come spazi o il simbolo di percentuale.
Le lettere ASCII negli identificatori delimitati fanno distinzione tra maiuscole e minuscole e sono scritte in minuscolo. Per usare una virgoletta doppia in una stringa, è necessario farla precedere da un altro carattere di virgoletta doppia.
Identificatori con distinzione maiuscolo/minuscolo
Gli identificatori con distinzione tra maiuscole e minuscole (noti anche come identificatori misti) possono contenere lettere maiuscole e minuscole. Per utilizzare gli identificatori con distinzione tra maiuscole e minuscole, è possibile impostare la configurazione da enable_case_sensitive_identifier
a true
. È possibile impostare questa configurazione per il cluster o per una sessione. Per ulteriori informazioni, consulta Valori di parametro predefiniti nella Guida alla gestione di Amazon Redshift e enable_case_sensitive_identifier.
Nomi di colonna di sistema
Non è possibile usare i seguenti i nomi delle colonne di sistema PostgreSQL come nomi delle colonne definite dall'utente. Per ulteriori informazioni, consulta https://www.postgresql.org/docs/8.0/static/ddl-system-columns.html
-
oid
-
tableoid
-
xmin
-
cmin
-
xmax
-
cmax
-
ctid
Esempi
Questa tabella mostra esempi di identificatori delimitati, l'output risultante e una discussione:
Sintassi | Risultato | Discussione |
---|---|---|
"group" | gruppo | GROUP è una parola riservata, quindi il suo uso all'interno di un identificatore necessita delle virgolette doppie. |
"""WHERE""" | "dove" | Anche WHERE è una parola riservata. Per includere le virgolette nella stringa, eseguire l'escape per ciascuna virgoletta utilizzando virgolette supplementari. |
"This name" | this name | Le doppie virgolette sono necessarie per conservare lo spazio. |
"This ""IS IT""" | this "is it" | Perché diventino parte del nome, è necessario che ciascuna delle virgolette che circonda IS IT sia preceduta da altre virgolette. |
Per creare una tabella chiamata group con una colonna di nome this "is it":
create table "group" (
"This ""IS IT""" char(10));
Le seguenti query restituiscono lo stesso risultato:
select "This ""IS IT"""
from "group";
this "is it"
--------------
(0 rows)
select "this ""is it"""
from "group";
this "is it"
--------------
(0 rows)
Anche la seguente sintassi table.column
completa restituisce lo stesso risultato:
select "group"."this ""is it"""
from "group";
this "is it"
--------------
(0 rows)
Il seguente comando CREATE TABLE crea una tabella con una barra nel nome di una colonna:
create table if not exists city_slash_id(
"city/id" integer not null,
state char(2) not null);