Gestion des identifiants SQL

Un identifiant SQL est le nom d'un objet de base de données tel qu'une table, une colonne, un utilisateur, un groupe, un objet défini par l'utilisateur et une base de données. Netezza prend en charge la définition SQL 1999 pour les identificateurs de noms, et ils peuvent avoir une longueur maximale de 128 octets. Il existe deux types d'identifiants, réguliers et délimités.

Note : Les mots de passe des comptes, les noms des fichiers et d'autres valeurs ne sont pas des identificateurs et peuvent donc prendre en charge un ensemble réduit de caractères, y compris uniquement des caractères ASCII de 7 bits. Les noms de fichiers pour les tables externes doivent être en UTF-8.

Identifiant régulier

Un identificateur ordinaire n'est pas sensible à la casse, c'est-à-dire que si vous créez une base de données nommée VENTES, vous pouvez l'appeler en utilisant n'importe quelle combinaison de lettres minuscules ou majuscules. Par exemple, SALES, sales, SaLeS, et SALEs correspondent tous à la base de données nommée SALES. La norme ANSI SQL spécifie que les systèmes convertissent tous les identificateurs SQL réguliers en caractères majuscules correspondants. Le système Netezza Performance Server convertit donc tout identificateur régulier que vous spécifiez en caractères majuscules lorsqu'il est sauvegardé dans la base de données, et également lorsque les identificateurs réguliers sont utilisés dans le traitement des requêtes.

Les identificateurs ordinaires ne peuvent contenir que des lettres (dans n'importe quel alphabet, pas seulement l'alphabet latin), des syllabes (comme dans le syllabaire japonais Hiragana), des idéogrammes, des chiffres décimaux, des traits de soulignement et le signe du dollar ($). Les identificateurs réguliers doivent commencer par une lettre ; ils ne peuvent pas commencer par un chiffre, un trait de soulignement ou le signe du dollar. Les identificateurs réguliers ne peuvent pas non plus être des mots réservés SQL (comme décrit dans les mots réservés et les mots-clés SQL). L'encodage dans le catalogue de Netezza Performance Server est en UTF-8; 'encodage pour tout affichage dépend du client.

identificateur délimité (delimiter identifier)

Un identificateur délimité est également un nom d'objet de base de données, mais il est placé entre guillemets et fait l'objet de considérations particulières. Un identifiant délimité est sensible à la casse, de sorte qu'une base de données nommée "Sales" n'est pas la même base de données que celle nommée SALES, par exemple. Le système Netezza Performance Server ne convertit pas les identifiants délimités dans la casse système par défaut. Le système Netezza Performance Server n'enregistre pas non plus les guillemets doubles dans la base de données.

Note : Le système tronque automatiquement les espaces en tête et à la fin d'un identifiant délimité. Si vous utilisez des espaces en début et en fin de texte pour formater la sortie, par exemple, veillez à faire précéder les espaces en début et à terminer les espaces en fin de texte par un caractère autre qu'un espace, afin de préserver l'espacement dans l'identificateur.

Entre les guillemets, un identifiant délimité peut inclure les mêmes lettres, syllabes, idéogrammes, chiffres décimaux et traits de soulignement qu'un identifiant normal, mais il peut également inclure des espaces, des caractères spéciaux tels que des traits d'union et des signes de pourcentage, ainsi que des mots-clés réservés SQL. À l'exception des traits de soulignement, qui ne sont pas autorisés, un identifiant délimité peut commencer par l'une de ces lettres, l'un de ces chiffres ou l'un de ces symboles.

Par exemple, la requête suivante utilise des identifiants délimités pour les noms de colonnes et de tables :
SELECT "My Field" FROM "My Table" WHERE "My Field" LIKE 'A%';

La chaîne littérale " 'A%' est placée entre guillemets simples.

Vous pouvez modifier le comportement des majuscules par défaut lors de l'initialisation du système en utilisant la commande 'nzinitsystem -lowercase Pour plus d'informations sur la commande 'nzinitsystem, voir le IBM® Netezza® System Administrator's Guide.