Noms et identificateurs - Amazon Redshift

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 identificateurs doivent comporter uniquement des caractères imprimables UTF-8. Les lettres ASCII des identificateurs standard et délimités sont insensibles à la casse et sont converties 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

Les identificateurs SQL standard se conforment à un ensemble de règles et doivent :

  • Commencer par un caractère alphabétique ou de soulignement ASCII codé sur un octet, ou un caractère multioctet UTF-8 d'une longueur de deux ou quatre octets.

  • Les caractères suivants peuvent être des caractères alphanumériques ou de soulignement ASCII codés sur un octet, des symboles dollar, ou des caractères multioctets UTF-8 d'une longueur de deux ou 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 pas être un mot réservé SQL.

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 tous les caractères imprimables UTF-8 standard autres que les guillemets droits eux-mêmes. 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 (%).

Les lettres ASCII des identificateurs délimités sont insensibles à la casse et sont converties 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 de plus amples informations, veuillez consulter la section Valeurs des paramètres par défaut dans le Guide de gestion Amazon Redshift et enable_case_sensitive_identifier.

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 est un mot réservé, son utilisation dans un identifiant nécessite donc des guillemets.
"""WHERE""" "where" WHERE est é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 commande CREATE TABLE suivante crée une table avec une barre oblique dans un nom de colonne :

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