CREATE TABLE AS

Name

CREATE TABLE AS -- Crée une nouvelle table depuis les résultats d'une requête.

Synopsis

CREATE [ [ LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name [ (column_name [, ...] ) ]
    AS query
  

Description

CREATE TABLE AS crée une table et la remplit avec des données générées par une commande SELECT. Les colonnes de la table ont les noms et les types associés avec les sorties de colonnes SELECT (sauf que vous pouvez remplacer les noms de colonne en fournissant une liste explicite de nouveaux noms).

CREATE TABLE AS présente une certaine ressemblance avec la création d'une vue, mais en réalité c'est différent : elle crée une nouvelle table et évalue la requête une seule fois pour remplir la nouvelle table. Celle-ci ne suivra pas les changements subséquents des tables source de la requête. Par contraste, une vue réévalue les instructions SELECT sous-jacentes chaque fois qu'elle est questionnée.

Paramètres

[LOCAL] TEMPORARY or [LOCAL] TEMP

Sispécifié, la table est créée comme table temporaire. Les tables temporaires sont automatiquement supprimées à la fin d'une session. L'existence des tables permanentes avec le même nom ne sont pas visibles par la session en cours tandis que les tables temporaires existent. Certains indexes créés sur une table temporaire sont automatiquement temporaires également.

Le mot LOCAL est optionnel.

table_name

Le nom d'une nouvelle table a créer. Cette table ne doit pas déja exister. Cependant, une table temporaire peut être créée en ayant le même nom qu'une table permanente existante.

column_name

Le nom d'une colonne dans la nouvelle table. De multiples nms de colonnes peuvent être spécifiés en utilisant une liste de noms de colonnes délimitée par une virgule. Si les noms de colonne ne sont pas fournis, ils sont pris à partir des noms de colonnes des sorties de la requête.

query

Une instruction de requête (comme, une commande SELECT). Voir SELECT pour une description de la syntaxe admise.

Diagnostics

Voir CREATE TABLE et SELECT pour un résumé des possibles messages de sortie.

Notes

Cette commande est fonctionnellement équivalente à SELECT INTO , mais elle est préférée car elle risque moins d'être confondue avec les autres utilisations de la syntaxe SELECT ... INTO.

Compatibilité

Cette commande prend exemple sur une fonctionnalité Oracle Il n'y ap as de commande avec une fonctionnalité équivalente dans le SQL92 ou SQL99. Cependant, une combinaison de CREATE TABLE et INSERT ... SELECT peut accomplir la même chose avec un peu moins d'effort.

Historique

La commande CREATE TABLE AS est disponible depuis PostgreSQL 6.3.

Voir aussi

CREATE TABLE, CREATE VIEW , SELECT, SELECT INTO