Noms et identificateurs - Amazon Redshift

Si nous fournissons une traduction de la version anglaise du guide, la version anglaise du guide aura préséance en cas de contradiction. La traduction sera une traduction automatique.

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.

  • Entre 1 et 127 octets de longueur, sans inclure les guillemets pour les identificateurs 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’identificateur peut contenir n’importe quel caractère imprimable UTF-8 standard autre 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 (%).

Les lettres ASCII des identificateurs délimités sont insensibles à la casse et sont converties en minuscules. Pour utiliser un guillemet double dans une chaîne, vous devez le faire précéder d’un autre guillemet double.

Examples

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

Syntaxe : . Résultat: Explication
"group" group GROUP est un mot réservé, donc son utilisation dans un identifiant nécessite des guillemets doubles.
"""WHERE""" "where" WHERE est également un mot réservé. Pour inclure des guillemets dans la chaîne, échappez à chaque guillemet double avec des guillemets doubles supplémentaires.
"This name" this name Des guillemets doubles sont nécessaires pour conserver l’espace.
"This ""IS IT""" "This ""IS IT""" Les guillemets entourant IS IT doivent chacun ê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);