SELECT INTO

Nom

SELECT INTO -- crée une nouvelle table à partir des résultats d'une requête

Synopsis

SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
    * | expression [ AS nom_en_sortie ] [, ...]
    INTO [ TEMPORARY | TEMP ] [ TABLE ] nouvelle_table
    [ FROM élément_from [, ...] ]
    [ WHERE condition ]
    [ GROUP BY expression [, ...] ]
    [ HAVING condition [, ...] ]
    [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]
    [ ORDER BY expression [ ASC |
DESC | USING opérateur ] [, ...] ]
    [ LIMIT { nombre | ALL } ]
    [ OFFSET début ]
    [ FOR UPDATE [ OF nomtable
[, ...] ] ]

Description

SELECT INTO crée une nouvelle table en la remplissant des données récupérées par une requête. Les données ne sont pas renvoyées au client comme le fait habituellement l'instruction SELECT. Les nouvelles colonnes de la table ont les noms et les types de données associés avec les colonnes en sortie du SELECT.

Paramètres

TEMPORARY or TEMP

Si spécifié, la table est créée comme une table temporaire. Référez-vous à CREATE TABLE pour plus de détails.

new_table

Le nom de la table à créer (pouvant être qualifié par le nom du schéma).

Tous les autres paramètres sont décrits en détail dans SELECT.

Notes

CREATE TABLE AS est fonctionnellement équivalent à SELECT INTO. CREATE TABLE AS est la syntaxe recommandée car cette forme de SELECT INTO n'est pas disponible dans ECPG ou PL/pgSQL. En effet, ils interprètent la clause INTO différemment.

Compatibilité

Le standard SQL utilise SELECT ... INTO pour représenter les valeurs sélectionnées en des variables scalaires d'un programme hôte plutôt qu'en créant une nouvelle table. Ceci est en fait l'utilisation trouvée dans ECPG (voir Chapitre 30) et dans PL/pgSQL (voir Chapitre 37). L'usage PostgreSQL de SELECT INTO pour représenter une création de table est historique. Il est mieux d'utiliser CREATE TABLE AS dans ce but dans un nouveau code (CREATE TABLE AS n'est pas plus standard mais elle causera moins de confusion.)