Noms et identificateurs - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Noms et identificateurs

Les noms identifient les objets de base de données, y compris les tables et les colonnes, ainsi que les utilisateurs et les mots de passe. Les termes nom et identificateur peuvent être utilisés indifféremment. Il existe deux types d’identificateurs, les identificateurs standard et les identificateurs entre guillemets ou délimités. Les identifiants ne doivent comporter que UTF 8 caractères imprimables. ASCIIles lettres dans les identifiants standard et délimités ne distinguent pas les majuscules des minuscules et sont pliées en minuscules dans la base de données. Dans les résultats des requêtes, les noms de colonne sont retournés en minuscules par défaut. Pour retourner les noms de colonne en majuscules, définissez le paramètre de configuration describe_field_name_in_uppercase sur la valeur true.

Identificateurs standard

SQLLes identifiants standard respectent un ensemble de règles et doivent :

  • Commencez par un caractère alphabétique ou un trait de soulignement à un ASCII octet, ou par un caractère multioctet de UTF -8 de deux à quatre octets de long.

  • Les caractères suivants peuvent être des caractères alphanumériques ASCII à un octet, des traits de soulignement ou des signes dollar, ou des caractères multioctets de UTF 8 à quatre octets de deux à quatre octets.

  • Avoir une longueur comprise entre 1 et 127 octets, sans les guillemets pour les identifiants délimités.

  • Ne contenir ni guillemets ni espaces.

  • Ne soyez pas un mot SQL clé réservé.

Identificateurs délimités

Les identificateurs délimités (aussi appelés identificateurs entre guillemets) commencent et se terminent par des guillemets ("). Si vous utilisez un identificateur délimité, vous devez utiliser les guillemets pour chaque référence à cet objet. L'identifiant peut contenir n'importe quel caractère imprimable standard de UTF -8 autres que le guillemet double lui-même. Par conséquent, vous pouvez créer des noms de colonne ou de table qui incluent tout caractère autre que les caractères illégaux, tels que les espaces ou le symbole pourcentage (%).

ASCIIles lettres dans des identifiants délimités ne distinguent pas les majuscules des minuscules et sont pliées en minuscules. Pour utiliser des guillemets droits dans une chaîne de caractères, vous devez les faire précéder d’un autre caractère de guillemets droits.

Identifiants sensibles à la casse

Les identifiants sensibles à la casse (également appelés identifiants en casse mixte) peuvent contenir des lettres majuscules et minuscules. Pour utiliser des identifiants sensibles à la casse, vous pouvez définir la configuration enable_case_sensitive_identifier sur true. Vous pouvez définir cette configuration pour le cluster ou une session. Pour plus d’informations, consultez Valeurs des paramètres par défaut dans le Guide de gestion Amazon Redshift et enable_case_sensitive_identifier.

Nom des colonnes système

Les noms de colonnes du SQL système Postgre suivants ne peuvent pas être utilisés comme noms de colonnes dans des colonnes définies par l'utilisateur. Pour plus d'informations, consultez https://www.postgresql.org/docs/8.0/static/ddl-system-columns.html.

  • oid

  • tableoid

  • xmin

  • cmin

  • xmax

  • cmax

  • ctid

Exemples

Ce tableau présente des exemples d’identificateurs délimités, le résultat obtenu et une explication :

Syntaxe Résultat Explication
"group" groupe GROUPétant un mot réservé, son utilisation dans un identifiant nécessite des guillemets doubles.
"""WHERE""" "where" WHEREest également un mot réservé. Pour inclure des guillemets droits dans la chaîne, échappez chaque caractère de guillemets droits par d’autres caractères de guillemets droits.
"This name" this name Les guillemets droits sont nécessaires pour préserver l’espace.
"This ""IS IT""" "This ""IS IT""" Les guillemets entourant IS IT doivent être précédés d’un guillemet supplémentaire pour faire partie du nom.

Pour créer un groupe nommé table avec une colonne nommée this "is it" :

create table "group" ( "This ""IS IT""" char(10));

Les requêtes suivantes retournent le même résultat :

select "This ""IS IT""" from "group"; this "is it" -------------- (0 rows)
select "this ""is it""" from "group"; this "is it" -------------- (0 rows)

La syntaxe complète suivante table.column renvoie aussi le même résultat :

select "group"."this ""is it""" from "group"; this "is it" -------------- (0 rows)

La CREATE TABLE commande suivante crée un tableau avec une barre oblique dans le nom d'une colonne :

create table if not exists city_slash_id( "city/id" integer not null, state char(2) not null);