SELECT INTO
SELECT INTO — définit 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 | SHARE } [ OF nomtable [, ...] ] [ NOWAIT ] [...] ]
Description
SELECT INTO
crée une
nouvelle table en la remplissant avec 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 ou
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.
De plus,
CREATE TABLE
AS
offre un ensemble de fonctionnalités plus
important que celui de
SELECT
INTO
.
Avant PostgreSQL™ 8.1, la
table créée par
SELECT
INTO
incluait des OID par défaut. Dans PostgreSQL™ 8.1, ce n'est plus le cas --
pour inclure des OID dans la nouvelle table, la variable de
configuration default_with_oids
doit être activée. Autrement,
CREATE
TABLE AS
peut aussi être utilisé avec la clause
WITH OIDS.
Exemples
Crée une nouvelle table films_recent ne
contenant que les entrées récentes de la table films:
SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01';
Compatibilité
Le standard SQL utilise
SELECT
INTO
pour représenter la sélection de valeurs dans
des variables scalaires d'un programme hôte plutôt que la création
d'une nouvelle table. Ceci est en fait l'utilisation trouvée dans
ECPG (voir Chapitre 31,
ECPG - SQL embarqué dans du C) et dans
PL/pgSQL (voir Chapitre 37,
PL/pgSQL - Langage de procédures
SQL
). L'usage de
PostgreSQL™ de
SELECT INTO
pour représenter une
création de table est historique. Il est préférable d'utiliser
CREATE TABLE AS
dans
un nouveau programme.