IBM PureData System for Analytics, Version 7.1

CREATE TABLE

La commande CREATE TABLE permet de créer une table, vide à l'origine, dans la base de données actuelle. La commande CREATE TABLE crée automatiquement un type de données qui représente le type tuple (type de structure) correspondant à une ligne de la table.

Une table ne peut pas avoir :
  • Le même nom qu'un type de données existant.
  • Le même nom qu'une table de catalogue système.
  • Plus de 1600 colonnes. La limite réelle est légèrement inférieure en raison des contraintes de longueur des tuples.
  • Les attributs de table ou de vue possédant les noms suivants :
    • cmax
    • cmin
    • createxid
    • ctid
    • datasliceid
    • deletexid
    • oid
    • rowid
    • tableoid
    • xmax
    • xmin

Les clauses de contrainte facultatives spécifient les contraintes (ou tests) que les lignes nouvelles ou mises à jour doivent satisfaire pour qu'une opération d'insertion ou de mise à jour aboutisse. Une contrainte est une règle nommée, à savoir, un objet SQL qui permet de définir des ensembles valides de valeurs en limitant les résultats des opérations d'insertion, de mise à jour ou de suppression utilisées sur une table. Netezza ne prend pas en charge les vérifications de contrainte ; si vous spécifiez des contraintes, vous devez les vérifier et procéder à l'intégrité référentielle.

Vous pouvez définir des contraintes de table et des contraintes de colonne.
  • Une contrainte de colonne est définie dans le cadre d'une définition de colonne.
  • Une contrainte de table n'est pas liée à une colonne particulière et elle peut englober plusieurs colonnes.

Vous pouvez également écrire chacune des contraintes de colonne comme contrainte de table. Une contrainte de colonne n'est intéressante du point de vue notation que si elle n'affecte qu'une colonne.

Spécification de distribution
Chaque table d'une base de données de système de gestion de base de données relationnelle Netezza ne possède qu'une clé de distribution, qui comprend une à quatre colonnes. Vous pouvez utiliser la syntaxe SQL ci-après pour créer des clés de distribution.
  • Pour créer une clé de distribution explicite, la syntaxe Netezza SQL est la suivante :
    CREATE TABLE <nomtable> [ ( <col>[,<col>… ] ) ] AS
    <clause_select> [ DISTRIBUTE ON [HASH] ( <col>[<col>,… ] ) ]

    La phrase distribute on spécifie la clé de distribution et le mot hash est facultatif.

  • Pour créer une clé de distribution par permutation circulaire, la syntaxe Netezza SQL est la suivante :
    CREATE TABLE <nomtable> (col1 int, col2 int, col3 int)
    DISTRIBUTE ON RANDOM;

    La phrase distribute on random spécifie une distribution par permutation circulaire.

  • Pour créer une table sans spécifier de clé de distribution, la syntaxe Netezza SQL est la suivante :
    CREATE TABLE <nomtable> (col1 int, col2 int, col3 int);

    Le système Netezza choisit une clé de distribution. Il n'existe aucun moyen de connaître cette clé et cette dernière peut varier suivant la version du logiciel Netezza.

Action de règle de contrainte
Vous pouvez spécifier les actions ci-après lors de la mise à jour ou de la suppression d'une contrainte. Le système n'appliquant pas la vérification des contraintes, ces règles sont acceptées, mais non utilisées.
  • CASCADE met à jour la valeur de la colonne de référence en la remplaçant par la valeur de la nouvelle colonne référencée.
  • SET NULL affecte à la colonne de référence la nouvelle valeur de la colonne référencée.
  • SET DEFAULT définit la colonne référencée.
  • RESTRICT est identique à NO ACTION.
  • NO ACTION génère une erreur si la clé externe est violée.
Attributs de contrainte
Les contraintes peuvent posséder les attributs ci-après, qui déterminent si leur vérification est immédiate ou différée. Le système n'appliquant pas la vérification des contraintes, ces attributs sont acceptés, mais non utilisés.
  • [NOT] DEFERRABLE détermine si la contrainte est vérifiée à la fin de la transaction.
  • INITIALLY DEFERRED ne vérifie la contrainte qu'à la fin de la transaction.
  • INITIALLY IMMEDIATE vérifie la contrainte après chaque instruction.

Syntaxe

Syntaxe générale de la commande create table :
CREATE [ TEMPORARY | TEMP ] TABLE <table>
( <col> <type> [<contrainte_col>][,<col> <type> [<contrainte_col>]…]
[<contrainte_table>[,<contrainte_table>… ] )
[ DISTRIBUTE ON { RANDOM | [HASH] (<col>[,<col>…]) } ]
[ ORGANIZE ON { (<col>) | NONE } ]
[ ROW SECURITY ]
<contrainte_col> représente :
[ CONSTRAINT <nom_contrainte> ]
{NOT NULL | NULL | UNIQUE | PRIMARY KEY | DEFAULT <valeur> | <réf>}
[ [ [ NOT ] DEFERRABLE ] { INITIALLY DEFERRED | INITIALLY IMMEDIATE } |
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ NOT ] DEFERRABLE ]
<contrainte_table> représente :
[ CONSTRAINT <nom_contrainte> ]
{UNIQUE (<col>[,<col>…] ) |
PRIMARY KEY (<nom_col_clé_princ>[,<nom_col_clé_princ>…] ) |
FOREIGN KEY (<nom_col_clé_ext>[,<nom_col_clé_ext>…] ) <réf>}
[ [ [ NOT ] DEFERRABLE ] { INITIALLY DEFERRED | INITIALLY IMMEDIATE } |
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ NOT ] DEFERRABLE ]
<réf> représente :
REFERENCES <table_réf> [ (<nom_col_réf>[,<nom_col_réf>…] ) ]
[ MATCH FULL ]
[ ON UPDATE {CASCADE | RESTRICT | SET NULL | SET DEFAULT | NO ACTION} ]
[ ON DELETE {CASCADE | RESTRICT | SET NULL | SET DEFAULT | NO ACTION} ]

Le système autorise et gère la clé principale, la valeur par défaut, la clé externe, l'unicité et les références. Le système IBM® Netezza ne prend pas en charge les vérifications de contrainte et l'intégrité référentielle. L'utilisateur doit garantir les vérifications de contrainte et l'intégrité référentielle.

Entrées

La commande CREATE TABLE accepte les entrées suivantes :
Tableau 1. Entrées de la commande CREATE TABLE
Entrée Description
TEMP[ORARY] La table à créer doit être une table temporaire.
<table> Nom de la table à créer.
<col> Nom d'une colonne à créer dans la nouvelle table.
<type> Type de données de la colonne.
DISTRIBUTE ON Chaque table de la base de données doit posséder une clé de distribution comprenant une à quatre colonnes. La valeur par défaut est RANDOM, qui indique au système de sélectionner une clé de distribution aléatoire.
HASH Ce paramètre peut être spécifié à des fins de clarté, mais n'a aucun effet sur la commande.
ORGANIZE ON Colonnes (un à quatre) sur lesquelles la table doit être organisée. Non spécifiable pour les tables externes. Si des colonnes sont spécifiées, la table ne peut pas avoir de vues matérialisées et tous les types de données des colonnes spécifiées doivent être mappables par zone. La réorganisation des données de la table est appliquée lorsque la commande GROOM TABLE est exécutée. Pour plus d'informations, reportez-vous à la rubrique sur l'utilisation des tables de base en cluster, dans le document IBM Netezza System - Guide d'administration.
ROW SECURITY Crée la table avec une sécurité au niveau des lignes.
<nom_contrainte> Nom à affecter à une contrainte de colonne ou une contrainte de table. Si vous ne spécifiez pas de nom, le système en génère un.
NOT DEFERRABLE | DEFERRABLE Contrôle si la contrainte peut être reportée à la fin de la transaction. NOT DEFERRABLE est la valeur par défaut. (Netezza ne prend pas en charge la vérification des contraintes et l'intégrité référentielle.)
INITIALLY Spécifie DEFERRED (à la fin de la transaction) ou IMMEDIATE (à la fin de chaque instruction).
NOT NULL | NULL Indique si la colonne peut contenir des valeurs null. NULL est la valeur par défaut.
UNIQUE (contrainte de colonne et de table) Indique si chaque valeur de la colonne doit être unique.
PRIMARY KEY (contrainte de colonne et de table) Indique si les colonnes spécifiées doivent constituer la clé principale de la table.

Cette contrainte est principalement une combinaison de contraintes UNIQUE et NOT NULL, mais l'identification d'un ensemble de colonnes comme clé principale fournit également des métadonnées sur la conception du schéma. Une clé principale implique que les autres tables peuvent compter sur cet ensemble de colonnes comme identificateur unique de lignes.

Vous ne pouvez spécifier qu'une contrainte de clé principale pour une table, comme contrainte de colonne ou contrainte de table.

L'ensemble des colonnes qui constituent la clé principale doit être différent de tout autre ensemble de colonnes nommé par une contrainte unique définie pour la table.

DEFAULT (contrainte de colonne) Valeur par défaut à placer dans chaque ligne de cette colonne.
REFERENCES (contrainte de colonne) Les colonnes spécifiées de la nouvelle table ne doivent contenir que des valeurs qui correspondent à celles des colonnes spécifiées de la table spécifiée.
Table FOREIGN KEY et REFERENCES (contrainte de table) Les colonnes spécifiées de la nouvelle table ne doivent contenir que des valeurs qui correspondent à celles des colonnes spécifiées de la table spécifiée. Si vous ne spécifiez pas de colonne, la valeur doit correspondre à la clé principale de la table. Les colonnes spécifiées de la table référencée doivent posséder une contrainte de clé unique ou principale dans cette table.
MATCH FULL MATCH FULL empêche une colonne d'une clé externe à plusieurs colonnes d'être null si d'autres composants de la clé externe ne le sont pas. Il s'agit de la valeur par défaut. MATCH PARTIAL n'est pas pris en charge.
ON UPDATE | ON DELETE Action à effectuer si la table ou les colonnes spécifiées sont mises à jour ou supprimées :
NO ACTION
Génère une erreur si la clé externe est violée. Il s'agit de la valeur par défaut.
RESTRICT
Identique à NO ACTION.
CASCADE
Supprime les lignes qui font référence à la ligne supprimée.
SET NULL
Affecte aux valeurs des colonnes de référence leur valeur par défaut.
SET DEFAULT
Affecte aux valeurs des colonnes de référence leur valeur par défaut.

Sorties

La commande génère les sorties suivantes :

Tableau 2. Sorties de la commande CREATE TABLE
Sortie Description
CREATE TABLE Le système renvoie ce message si la commande aboutit.
ERROR Le système renvoie ce message si la création de table échoue. Le message d'erreur fournit un texte descriptif, tel que le suivant : ERROR: Relation 'table' already exists.

Droits

Vous devez être administrateur, propriétaire de la base de données ou du schéma ou votre compte doit disposer des droits Create Table.

Syntaxe

Voici un exemple de syntaxe :



Feedback | Copyright IBM Corporation 2014 | Last updated: 2014-02-28