CREATE TABLE - Amazon Redshift

CREATE TABLE

Crée une nouvelle table dans la base de données actuelle. Le propriétaire de cette table est l'émetteur de la commande CREATE TABLE.

Syntax

CREATE [ [LOCAL ] { TEMPORARY | TEMP } ] TABLE [ IF NOT EXISTS ] table_name ( { column_name data_type [column_attributes] [ column_constraints ] | table_constraints | LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] } [, ... ] ) [ BACKUP { YES | NO } ] [table_attribute] where column_attributes are: [ DEFAULT default_expr ] [ IDENTITY ( seed, step ) ] [ GENERATED BY DEFAULT AS IDENTITY ( seed, step ) ] [ ENCODE encoding ] [ DISTKEY ] [ SORTKEY ] [ COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE ] and column_constraints are: [ { NOT NULL | NULL } ] [ { UNIQUE | PRIMARY KEY } ] [ REFERENCES reftable [ ( refcolumn ) ] ] and table_constraints are: [ UNIQUE ( column_name [, ... ] ) ] [ PRIMARY KEY ( column_name [, ... ] ) ] [ FOREIGN KEY (column_name [, ... ] ) REFERENCES reftable [ ( refcolumn ) ] and table_attributes are: [ DISTSTYLE { AUTO | EVEN | KEY | ALL } ] [ DISTKEY ( column_name ) ] [ [COMPOUND | INTERLEAVED ] SORTKEY ( column_name [,...]) | [ SORTKEY AUTO ] ] [ ENCODE AUTO ]

Parameters

LOCAL

Facultatif. Même si ce mot-clé est accepté dans l'instruction, il n'a aucun effet dans Amazon Redshift.

TEMPORARY | TEMP

Mot-clé qui crée une table temporaire visible uniquement dans la session en cours. La table temporaire est automatiquement supprimée à la fin de la session dans laquelle elle a été créée. La table temporaire peut avoir le même nom qu'une table permanente. La table temporaire est créée dans un schéma distinct, propre à la session. (Vous ne pouvez pas spécifier un nom pour ce schéma.) Comme ce schéma temporaire devient le premier schéma du chemin de recherche, la table temporaire a priorité sur la table permanente, sauf si vous qualifiez le nom de la table avec le nom du schéma pour accéder à la table permanente. Pour plus d'informations sur les schémas et les priorités, consultez search_path.

Note

Par défaut, les utilisateurs ont l'autorisation de créer des tables temporaires par leur appartenance automatique au groupe PUBLIC. Pour refuser ce privilège à un utilisateur, retirez le privilège TEMP du groupe PUBLIC, puis accordez explicitement le privilège TEMP uniquement à des utilisateurs ou groupes d'utilisateurs spécifiques.

IF NOT EXISTS

Clause indiquant que si la table spécifiée existe déjà, la commande ne doit faire aucune modification et renvoyer un message selon lequel la table existe, plutôt que de mettre fin avec une erreur. Notez que la table existante peut ne ressembler en rien à celle que vous avez créée ; seul le nom de la table est utilisé à titre de comparaison.

Comme cette clause est utile lors de l'écriture de scripts, le script n'échoue pas si CREATE TABLE tente de créer une table qui existe déjà.

table_name

Nom de la table à créer.

Important

Si vous spécifiez un nom de table qui commence par « # », la table est créée comme table temporaire. Voici un exemple :

create table #newtable (id int);

La longueur maximale d'un nom de table est de 127 octets ; les noms plus longs sont tronqués à 127 octets. Vous pouvez utiliser des caractères multioctets UTF-8 jusqu'à un maximum de quatre octets. Amazon Redshift applique un quota du nombre de tables par cluster et par type de nœud, y compris les tables temporaires définies par l'utilisateur et les tables temporaires créées par Amazon Redshift lors du traitement des requêtes ou de la maintenance du système. Le cas échéant, le nom de la table peut être qualifié avec le nom de la base de données et le nom du schéma. Dans l'exemple suivant, le nom de base de données est tickit, le nom du schéma public et le nom de la table test.

create table tickit.public.test (c1 int);

Si la base de données ou le schéma n'existe pas, la table n'est pas créée et l'instruction renvoie une erreur. Vous ne pouvez pas créer de tables ou de vues dans les bases de données système template0, template1 et padb_harvest.

Si un nom de schéma est donné, la nouvelle table est créée dans ce schéma (en supposant que le créateur ait accès au schéma). Le nom de la table doit être un nom unique pour ce schéma. Si aucun schéma n'est spécifié, la table est créée en utilisant le schéma de base de données actuel. Si vous créez une table temporaire, vous ne pouvez pas spécifier un nom de schéma, car les tables temporaires existent dans un schéma spécial.

Plusieurs tables temporaires de même nom peuvent exister en même temps dans la même base de données même si elles sont créées dans des sessions distinctes, car les tables sont attribuées à des schémas différents. Pour plus d'informations sur les noms valides, consultez Noms et identificateurs.

column_name

Nom d'une colonne à créer dans la nouvelle table. La longueur maximale d'un nom de colonne est de 127 octets ; les noms plus longs sont tronqués à 127 octets. Vous pouvez utiliser des caractères multioctets UTF-8 jusqu'à un maximum de quatre octets. Le nombre maximal de colonnes que vous pouvez définir dans une seule table est de 1 600. Pour plus d'informations sur les noms valides, consultez Noms et identificateurs.

Note

Si vous créez une grande table, veillez à ce que la liste de colonnes ne dépasse pas les limites de largeur de ligne pour les résultats intermédiaires pendant le traitement des charges et des requêtes. Pour de plus amples informations, veuillez consulter Notes d'utilisation.

data_type

Type de données de la colonne en cours de création. Pour les colonnes CHAR et VARCHAR, vous pouvez utiliser le mot-clé MAX au lieu de déclarer une longueur maximale. MAX définit la longueur maximale sur 4 096 octets pour CHAR ou 65535 octets pour VARCHAR. La taille maximum d'un objet GEOMETRY est de 1 048 447 octets.

Pour plus d'informations sur les types de données pris en charge par Amazon Redshift, consultez Types de données.

DEFAULT expr_défaut

Clause qui attribue une valeur de données par défaut à la colonne. Le type de données de expr_défaut doit correspondre au type de données de la colonne. La valeur DEFAULT doit être une expression exempte de variable. Les sous-requêtes, les références croisées aux autres colonnes de la table active et les fonctions définies par l'utilisateur ne sont pas autorisées.

L'expression expr_défaut est utilisée dans toute opération INSERT qui ne spécifie pas une valeur pour la colonne. Si aucune valeur par défaut n'est spécifiée, la valeur par défaut de la colonne est la valeur null.

Si une opération COPY avec une liste de colonnes définies omet une colonne qui a une valeur DEFAULT, la commande COPY insère la valeur de l'expression expr_défaut.

IDENTITY(seed, step)

Clause qui spécifie que la colonne est une colonne IDENTITY. Une colonne IDENTITY contient des valeurs uniques générées automatiquement. Le type de données d'une colonne IDENTITY doit être INT ou BIGINT.

Lorsque vous ajoutez des lignes à l'aide d'une instruction INSERT ou INSERT INTO [tablename] VALUES(), ces valeurs commencent par la valeur spécifiée en tant que seed et sont incrémentées du nombre spécifié comme step.

Quand la table est chargée à l'aide d'une instruction INSERT INTO [tablename] SELECT * FROM ou COPY, les données sont chargées en parallèle et distribuées aux tranches de nœuds. Pour garantir que les valeurs d'identité sont uniques, Amazon Redshift ignore un certain nombre de valeurs lors de la création des valeurs d'identité. Les valeurs d'identité sont uniques, mais l'ordre ne correspond pas toujours à celui des fichiers source.

GENERATED BY DEFAULT AS IDENTITY(seed, step)

Clause qui spécifie que la colonne est une colonne IDENTITY par défaut et qui vous permet d'attribuer automatiquement une valeur unique à la colonne. Le type de données d'une colonne IDENTITY doit être INT ou BIGINT. Lorsque vous ajoutez des lignes sans valeurs, ces valeurs commencent par la valeur spécifiée en tant que seed et s'incrémentent du nombre spécifié comme s step. Pour plus d'informations sur la manière dont les valeurs sont générées, consulte IDENTITY .

De plus, lors des opérations INSERT, UPDATE ou COPY, vous pouvez fournir une valeur sans EXPLICIT_IDS. Amazon Redshift utilise cette valeur pour insérer dans la colonne d'identité au lieu d'utiliser la valeur générée par le système. La valeur peut être un doublon, une valeur inférieure au seed ou une valeur comprise entre les valeurs de step. Amazon Redshift ne vérifie pas si les valeurs de la colonne sont uniques. Le fait de fournir une valeur n'affecte pas la prochaine valeur générée par le système.

Note

Si vous avez besoin de valeurs uniques dans la colonne, n'ajoutez pas de valeur en double. À la place, ajoutez une valeur unique inférieure au seed ou comprise entre les valeurs de step.

Gardez à l'esprit ce qui suit au sujet des colonnes d'identité par défaut :

  • Les colonnes d'identité par défaut sont NOT NULL. NULL ne peut pas être inséré.

  • Pour insérer une valeur générée dans une colonne d'identité par défaut, utilisez le mot-clé DEFAULT.

    INSERT INTO tablename (identity-column-name) VALUES (DEFAULT);
  • Le fait de remplacer des valeurs d'une colonne d'identité par défaut n'affecte pas la prochaine valeur générée.

  • Vous ne pouvez pas ajouter de colonne d'identité par défaut avec l'instruction ALTER TABLE ADD COLUMN.

  • Vous pouvez ajouter une colonne d'identité par défaut avec l'instruction ALTER TABLE APPEND.

ENCODE encodage

Encodage de compression pour une colonne. ENCODE AUTO est la valeur par défaut pour les tables. Amazon Redshift gère automatiquement l'encodage de compression pour toutes les colonnes de la table. Si vous spécifiez l'encodage de compression pour une colonne quelconque du tableau, le tableau n'est plus défini sur ENCODE AUTO. Amazon Redshift ne gère plus automatiquement le codage de compression pour toutes les colonnes de la table. Vous pouvez spécifier l'option ENCODE AUTO pour la table afin de permettre à Amazon Redshift de gérer automatiquement l'encodage de la compression pour toutes les colonnes de la table.

Pour les colonnes pour lesquelles vous ne spécifiez pas d'encodage de compression, Amazon Redshift affecte automatiquement un encodage de compression initial comme suit :

  • Toutes les colonnes de tables temporaires se voient attribuer une compression RAW par défaut.

  • Les colonnes qui sont définies comme des clés de tri se voient attribuer une compression RAW.

  • Les colonnes qui sont définies comme des types de données BOOLEAN, REAL, DOUBLE PRECISION ou GEOMETRY se voient attribuer une compression RAW.

  • Les colonnes qui sont définies comme des types de données SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP ou TIMESTAMPTZ se voient attribuer une compression AZ64.

  • Les colonnes définies comme CHAR ou VARCHAR sont affectées à la compression LZO.

Note

Si vous ne souhaitez pas qu'une colonne soit compressée, spécifiez explicitement un encodage RAW (brut).

Les encodages compression encodings suivants sont pris en charge :

  • AZ64

  • BYTEDICT

  • DELTA

  • DELTA32K

  • LZO

  • MOSTLY8

  • MOSTLY16

  • MOSTLY32

  • RAW (aucune compression)

  • RUNLENGTH

  • TEXT255

  • TEXT32K

  • ZSTD

DISTKEY

Mot-clé qui spécifie que la colonne est la clé de distribution de la table. Une seule colonne d'une table peut être la clé de distribution. Vous pouvez utiliser le mot-clé DISTKEY après un nom de colonne ou dans le cadre de la définition de la table à l'aide de la syntaxe DISTKEY (nom_colonne). Les deux méthodes ont le même effet. Pour plus d'informations, consultez le paramètre DISTSTYLE ultérieurement dans cette rubrique.

Le type de données d'une colonne de clés de distribution peut être : REAL, DOUBLE PRECISION, SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP, TIMESTAMPTZ, CHAR ou VARCHAR.

SORTKEY

Mot-clé qui spécifie que la colonne est la clé de tri de la table. Lorsque les données sont chargées dans la table, les données sont triées sur une ou plusieurs colonnes désignées comme les clés de tri. Vous pouvez utiliser le mot-clé SORTKEY après un nom de colonne pour spécifier une clé de tri à une seule colonne ou vous pouvez spécifier une ou plusieurs colonnes comme colonnes de clé de tri de la table à l'aide de la syntaxe SORTKEY (column_name [,...]). Seules les clés de tri composées sont créées avec cette syntaxe.

Vous pouvez définir un maximum de 400 colonnes SORTKEY par table.

Le type de données d'une colonne de clés de tri peut être : BOOLEAN, REAL, DOUBLE PRECISION, SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP, TIMESTAMPTZ, CHAR ou VARCHAR.

COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE

Clause qui spécifie si la recherche de chaîne ou la comparaison sur la colonne est CASE_SENSITIVE (sensible à la casse) ou CASE_INSENSITIVE (insensible à la casse). La valeur par défaut est la même que la configuration actuelle de sensibilité à la casse de la base de données.

Pour rechercher les informations de classement de la base de données, utilisez la commande suivante :

select db_collation(); db_collation ---------------- case_sensitive (1 row)
NOT NULL | NULL

NOT NULL spécifie que la colonne n'est pas autorisée à contenir des valeurs null. NULL, valeur par défaut, spécifie que la colonne accepte les valeurs null. Les colonnes IDENTITY sont déclarées NOT NULL par défaut.

UNIQUE

Mot-clé qui spécifie que la colonne ne peut contenir que des valeurs uniques. Le comportement de la contrainte de table unique est identique à celui des contraintes de colonne, avec la capacité supplémentaire de s'étendre sur plusieurs colonnes. Pour définir une contrainte de table unique, utilisez la syntaxe UNIQUE (nom_colonne [,...]).

Important

Les contraintes d'unicité ont une valeur informationnelle et ne sont pas appliquées par le système.

PRIMARY KEY

Mot-clé qui spécifie que la colonne est la clé primaire de la table. Seule une colonne peut être définie comme clé primaire à l'aide d'une définition de colonne. Pour définir une contrainte de table avec une clé primaire à plusieurs colonnes, utilisez la syntaxe PRIMARY KEY (nom_colonne [,...]).

L'identification d'une colonne comme clé primaire fournit les métadonnées relatives à la conception du schéma. Une clé primaire implique que d'autres tables puissent se reposer sur cet ensemble de colonnes comme identificateur unique des lignes. Une clé primaire peut être spécifiée pour une table, que ce soit comme contrainte de colonne ou contrainte de table. La contrainte de clé primaire doit nommer un ensemble de colonnes différent des autres ensembles de colonnes nommés pour une contrainte unique définie pour la même table.

Important

Les contraintes de clé primaire ont uniquement un but informatif. Elles ne sont pas appliquées par le système, mais sont utilisées par le planificateur.

References table_réf [ ( colonne_réf ) ]

Clause qui spécifie une contrainte de clé étrangère, ce qui implique que la colonne contienne uniquement des valeurs qui correspondent à celles de la colonne référencée d'une ligne de la table référencée. Les colonnes référencées doivent être les colonnes d'une contrainte de clé unique ou de clé primaire de la table référencée.

Important

Les contraintes de clé étrangère ont un but informatif uniquement. Elles ne sont pas appliquées par le système, mais sont utilisées par le planificateur.

LIKE table_parent [ { INCLUDING | EXCLUDING } DEFAULTS ]

Clause qui spécifie une table existante à partir de laquelle la nouvelle table copie automatiquement les noms de colonne, les types de données et les contraintes NOT NULL. La nouvelle table et la table parent sont découplées et toutes les modifications apportées à la table parent ne sont pas appliquées à la nouvelle table. Les expressions par défaut des définitions de colonne copiées sont copiées uniquement si INCLUDING DEFAULTS est spécifié. Le comportement par défaut consiste à exclure les expressions par défaut, de telle sorte que toutes les colonnes de la nouvelle table aient une valeurs null par défaut.

Les tables créées avec l'option LIKE n'héritent pas des contraintes de clé primaire et de clé étrangère. Les propriétés du style de distribution, des clés de tri, de BACKUP et de NULL sont héritées par les tables LIKE, mais vous ne pouvez pas les définir explicitement dans l'instruction CREATE TABLE ... LIKE.

BACKUP { YES | NO }

Clause qui spécifie si la table doit être incluse dans les instantanés de cluster automatiques et manuels. Pour les tables, telles que les tables intermédiaires, qui ne contiennent pas de données critiques, spécifiez BACKUP NO pour économiser du temps de traitement lorsque la création d'instantanés et la restauration à partir d'instantanés, et pour réduire l'espace de stockage sur Amazon Simple Storage Service. Comme le paramètre BACKUP NO n'a aucun effet sur la réplication automatique des données sur d'autres nœuds au sein du cluster, les tables pour lesquelles BACKUP NO est spécifié sont restaurées dans une défaillance de nœud. La valeur par défaut est BACKUP YES.

DISTSTYLE { AUTO | EVEN | KEY | ALL }

Mot-clé qui définit le style de distribution des données pour l'ensemble de la table. Amazon Redshift répartit les lignes d'une table entre les nœuds de calcul selon le style de distribution spécifié pour la table. La valeur par défaut est AUTO.

Le style de distribution que vous sélectionnez pour les tables affecte les performances globales de votre base de données. Pour de plus amples informations, veuillez consulter Utilisation des styles de distribution de données. Les styles de distribution possibles sont les suivants :

  • AUTO : Amazon Redshift attribue un style de distribution optimal basé sur les données de table. Par exemple, si le style de distribution AUTO est spécifié, Amazon Redshift affecte initialement le style de distribution ALL à une petite table, puis attribue à la table la distribution EVEN lorsque la table grandit. Si Amazon Redshift détermine qu'une clé de distribution améliorera les performances des requêtes, Amazon Redshift peut définir DISTSTYLE sur KEY et affecter une clé de distribution à votre table. La modification de style de distribution se produit en arrière-plan et son impact sur les requêtes des utilisateurs est minimal.

    Pour consulter le style de distribution appliqué à une table, interrogez la table catalogue système PG_CLASS. Pour de plus amples informations, veuillez consulter Affichage des styles de distribution.

  • EVEN : les données de la table sont réparties également entre les nœuds d'un cluster dans une distribution en tourniquet (round robin). Les ID de ligne sont utilisés pour déterminer la distribution et, approximativement, le même nombre de lignes est réparti sur chaque nœud.

  • KEY : les données sont réparties selon les valeurs de la colonne DISTKEY. Lorsque vous définissez les colonnes de jointure des tables de jointure comme clés de distribution, les lignes de jointure des deux tables sont colocalisées sur les nœuds de calcul. Lorsque les données sont colocalisées, l'optimiseur peut effectuer les jointures plus efficacement. Si vous spécifiez DISTSTYLE KEY, vous devez nommer une colonne DISTKEY, pour la table ou dans le cadre de la définition de colonne. Pour plus d'informations, consultez le paramètre DISTKEY plus haut dans cette rubrique.

  • ALL : une copie de la table complète est distribuée sur chaque nœud. Ce style de distribution garantit que toutes les lignes obligatoires pour une jointure sont disponibles sur chaque nœud, mais il multiplie les besoins de stockage et augmente les temps de charge et de maintenance de la table. Une distribution ALL peut améliorer le temps d'exécution lorsqu'elle est utilisée avec certaines tables de dimension où la distribution KEY ne convient pas, mais les améliorations des performances doivent être pondérées par rapport aux coûts de maintenance.

DISTKEY (nom_colonne)

Contrainte qui spécifie la colonne à utiliser comme clé de distribution de la table. Vous pouvez utiliser le mot-clé DISTKEY après un nom de colonne ou dans le cadre de la définition de la table à l'aide de la syntaxe DISTKEY (nom_colonne). Les deux méthodes ont le même effet. Pour plus d'informations, consultez le paramètre DISTSTYLE plus haut dans cette rubrique.

[COMPOUND | INTERLEAVED ] SORTKEY ( column_name [,...]) | [ SORTKEY AUTO ]

Spécifie une ou plusieurs clés de tri pour la table. Lorsque les données sont chargées dans la table, les données sont triées sur les colonnes désignées comme clés de tri. Vous pouvez utiliser le mot-clé SORTKEY après un nom de colonne pour spécifier une clé de tri à une seule colonne ou vous pouvez spécifier une ou plusieurs colonnes comme colonnes de clé de tri de la table à l'aide de la syntaxe SORTKEY (column_name [ , ... ] ).

Vous pouvez spécifier le cas échéant le style de tri COMPOUND ou INTERLEAVED. Si vous spécifiez SORTKEY avec des colonnes, la valeur par défaut est COMPUND. Pour de plus amples informations, veuillez consulter Utilisation des clés de tri.

Si vous ne spécifiez pas d'options de clé de tri, la valeur par défaut est AUTO.

Vous pouvez définir un maximum de 400 colonnes COMPOUND SORTKEY ou de 8 colonnes INTERLEAVED SORTKEY par table.

AUTO

Spécifie qu'Amazon Redshift attribue une clé de tri optimale en fonction des données de la table. Par exemple, si la clé de tri AUTO est spécifiée, Amazon Redshift n'affecte initialement aucune clé de tri à une table. Si Amazon Redshift détermine qu'une clé de tri améliorera les performances des requêtes, Amazon Redshift peut modifier la clé de tri de votre table. Le tri de la table est effectué par tri automatique de la table. Pour de plus amples informations, veuillez consulter Tri automatique des tables.

Amazon Redshift ne modifie pas les tables qui possèdent des clés de tri ou de distribution existantes, à une exception près : si une table possède une clé de distribution qui n'a jamais été utilisée dans une requête JOIN, la clé peut être modifiée si Amazon Redshift détermine qu'il en existe une meilleure.

Pour afficher la clé de tri d'une table, interrogez la vue catalogue système SVV__TABLE_INFO. Pour de plus amples informations, veuillez consulter SVV_TABLE_INFO. Pour afficher les recommandations Amazon Redshift Advisor pour les tables, recherchez la vue catalogue système SVV_ALTER_TABLE_RECOMMENDATIONS. Pour de plus amples informations, veuillez consulter SVV_ALTER_TABLE_RECOMMENDATIONS. Pour afficher les actions effectuées par Amazon Redshift, interrogez la vue catalogue système SVL_AUTO_WORKER_ACTION. Pour de plus amples informations, veuillez consulter SVL_AUTO_WORKER_ACTION.

COMPOUND

Spécifie que les données sont triées à l'aide d'une clé composée, constituée de toutes les colonnes affichées, dans leur ordre d'apparition. Une clé de tri composée est surtout utile lorsqu'une requête analyse les lignes selon l'ordre des colonnes de tri. Les avantages en termes de performances d'un tri avec une clé composée diminuent lorsque les requêtes reposent sur des colonnes de tri secondaires. Vous pouvez définir un maximum de 400 colonnes COMPOUND SORTKEY par table.

INTERLEAVED

Spécifie que les données sont triées à l'aide d'une clé de tri entrelacée. Un maximum de huit colonnes peut être spécifié pour une clé de tri entrelacée.

Comme un tri entrelacé confère un poids égal à chaque colonne, ou sous-ensemble de colonnes, de la clé de tri, les requêtes ne dépendent pas de l'ordre des colonnes de la clé de tri. Quand une requête utilise une ou plusieurs colonnes de tri secondaires, le tri entrelacé améliore les performances des requêtes de façon significative. Le tri entrelacé entraîne un léger coût de traitement pour les opérations de chargement de données et les opérations VACUUM.

Important

N'utilisez pas de clé de tri entrelacée sur les colonnes qui contiennent des attributs qui augmentent de façon monotone, tels que les colonnes d'identité, les dates ou les horodatages.

ENCODE AUTO

Permet à Amazon Redshift d'ajuster automatiquement le type d'encodage pour toutes les colonnes de la table afin d'optimiser les performances des requêtes. ENCODE AUTO conserve les types d'encodage initiaux que vous spécifiez lors de la création de la table. Ensuite, si Amazon Redshift détermine qu'un nouveau type d'encodage peut améliorer les performances de la requête, Amazon Redshift peut modifier le type d'encodage des colonnes de la table. ENCODE AUTO est la valeur par défaut si vous ne spécifiez de type d'encodage pour aucune colonne de la table.

UNIQUE (nom_colonne [,...])

Contrainte qui spécifie qu'un groupe d'une ou de plusieurs colonnes d'une table ne peut contenir que des valeurs uniques. Le comportement de la contrainte de table unique est identique à celui des contraintes de colonne, avec la capacité supplémentaire de s'étendre sur plusieurs colonnes. Dans le contexte des contraintes uniques, les valeurs null ne sont pas considérées comme égales. Chaque contrainte de table unique doit nommer un ensemble de colonnes différent de l'ensemble de colonnes nommées par une autre contrainte de clé unique ou de clé primaire définie pour la table.

Important

Les contraintes d'unicité ont une valeur informationnelle et ne sont pas appliquées par le système.

PRIMARY KEY (nom_colonne [,...])

Contrainte qui spécifie qu'une colonne ou un nombre de colonnes d'une table ne peut contenir que des valeurs non null (non dupliquées) uniques. L'identification d'un ensemble de colonnes comme clé primaire fournit aussi les métadonnées relatives à la conception du schéma. Une clé primaire implique que d'autres tables puissent se reposer sur cet ensemble de colonnes comme identificateur unique des lignes. Une clé primaire peut être spécifiée pour une table, que ce soit comme contrainte de colonne ou contrainte de table. La contrainte de clé primaire doit nommer un ensemble de colonnes différent des autres ensembles de colonnes nommés pour une contrainte unique définie pour la même table.

Important

Les contraintes de clé primaire ont uniquement un but informatif. Elles ne sont pas appliquées par le système, mais sont utilisées par le planificateur.

FOREIGN KEY ( nom_colonne [, ... ] ) REFERENCES table_réf [ ( colonne_réf ) ]

Contrainte qui spécifie une contrainte de clé étrangère, laquelle nécessite qu'un groupe d'une ou de plusieurs colonnes de la nouvelle table ne doit contenir que des valeurs qui correspondent à des valeurs des colonnes référencées d'une ligne de la table référencée. Si colonne_réf est omis, la clé primaire de table_réf est utilisée. Les colonnes référencées doivent être les colonnes d'une contrainte de clé unique ou de clé primaire de la table référencée.

Important

Les contraintes de clé étrangère ont un but informatif uniquement. Elles ne sont pas appliquées par le système, mais sont utilisées par le planificateur.