Exemples INSERT - Amazon Redshift

Amazon Redshift ne prendra plus en charge la création de nouvelles fonctions Python définies par l’utilisateur à compter du 1er novembre 2025. Si vous souhaitez utiliser des fonctions Python définies par l’utilisateur, créez-les avant cette date. Les fonctions Python définies par l’utilisateur existantes continueront de fonctionner normalement. Pour plus d’informations, consultez le billet de blog .

Exemples INSERT

La table CATEGORY de la base de données TICKIT contient les lignes suivantes :

catid | catgroup | catname | catdesc -------+----------+-----------+-------------------------------------------- 1 | Sports | MLB | Major League Baseball 2 | Sports | NHL | National Hockey League 3 | Sports | NFL | National Football League 4 | Sports | NBA | National Basketball Association 5 | Sports | MLS | Major League Soccer 6 | Shows | Musicals | Musical theatre 7 | Shows | Plays | All non-musical theatre 8 | Shows | Opera | All opera and light opera 9 | Concerts | Pop | All rock and pop music concerts 10 | Concerts | Jazz | All jazz singers and bands 11 | Concerts | Classical | All symphony, concerto, and choir concerts (11 rows)

Créez une table CATEGORY_STAGE avec un schéma similaire à la table CATEGORY, mais définissez les valeurs par défaut pour les colonnes :

create table category_stage (catid smallint default 0, catgroup varchar(10) default 'General', catname varchar(10) default 'General', catdesc varchar(50) default 'General');

L’instruction INSERT suivante sélectionne toutes les lignes de la table CATEGORY et les insère dans la table CATEGORY_STAGE.

insert into category_stage (select * from category);

Les parenthèses autour de la requête sont facultatives.

Cette commande insère une nouvelle ligne dans la table CATEGORY_STAGE avec une valeur spécifiée pour chaque colonne dans l’ordre :

insert into category_stage values (12, 'Concerts', 'Comedy', 'All stand-up comedy performances');

Vous pouvez également insérer une nouvelle ligne qui associe des valeurs spécifiques et des valeurs par défaut :

insert into category_stage values (13, 'Concerts', 'Other', default);

Exécutez la requête suivante pour renvoyer les lignes insérées :

select * from category_stage where catid in(12,13) order by 1; catid | catgroup | catname | catdesc -------+----------+---------+---------------------------------- 12 | Concerts | Comedy | All stand-up comedy performances 13 | Concerts | Other | General (2 rows)

Les exemples suivants illustrent quelques instructions INSERT VALUES à plusieurs lignes. Le premier exemple insère les valeurs spécifiques CATID pour deux lignes et les valeurs par défaut pour les autres colonnes des deux lignes.

insert into category_stage values (14, default, default, default), (15, default, default, default); select * from category_stage where catid in(14,15) order by 1; catid | catgroup | catname | catdesc -------+----------+---------+--------- 14 | General | General | General 15 | General | General | General (2 rows)

L’exemple suivant insère trois lignes avec différentes combinaisons de valeurs spécifiques et de valeurs par défaut :

insert into category_stage values (default, default, default, default), (20, default, 'Country', default), (21, 'Concerts', 'Rock', default); select * from category_stage where catid in(0,20,21) order by 1; catid | catgroup | catname | catdesc -------+----------+---------+--------- 0 | General | General | General 20 | General | Country | General 21 | Concerts | Rock | General (3 rows)

Le premier ensemble de VALUES de cet exemple produit les mêmes résultats que la spécification de DEFAULT VALUES pour une instruction INSERT à ligne unique.

Les exemples suivants illustrent le comportement INSERT lorsqu’une table possède une colonne IDENTITY. D’abord, créez une nouvelle version de la table CATEGORY, puis insérez-y des lignes de CATEGORY :

create table category_ident (catid int identity not null, catgroup varchar(10) default 'General', catname varchar(10) default 'General', catdesc varchar(50) default 'General'); insert into category_ident(catgroup,catname,catdesc) select catgroup,catname,catdesc from category;

Notez que vous ne pouvez pas insérer des valeurs entières spécifiques dans la colonne CATID IDENTITY. Les valeurs de colonne IDENTITY sont générées automatiquement.

L’exemple suivant montre que les sous-requêtes ne peuvent pas être utilisées comme expressions dans les instructions INSERT VALUES à plusieurs lignes :

insert into category(catid) values ((select max(catid)+1 from category)), ((select max(catid)+2 from category)); ERROR: can't use subqueries in multi-row VALUES

L’exemple suivant montre une insertion dans une table temporaire remplie avec les données de la table venue à l’aide de la clause WITH SELECT. Pour plus d’informations sur la table venue, consultez Exemple de base de données.

Commencez par créer la table temporaire #venuetemp.

CREATE TABLE #venuetemp AS SELECT * FROM venue;

Répertoriez les lignes de la table #venuetemp.

SELECT * FROM #venuetemp ORDER BY venueid; venueid | venuename | venuecity | venuestate| venueseats --------+--------------------------+------------+-----------+------------ 1 Toyota Park Bridgeview IL 0 2 Columbus Crew Stadium Columbus OH 0 3 RFK Stadium Washington DC 0 4 CommunityAmerica Ballpark Kansas City KS 0 5 Gillette Stadium Foxborough MA 68756 ...

Insérez 10 lignes dupliquées dans la table #venuetemp à l’aide de la clause WITH SELECT.

INSERT INTO #venuetemp (WITH venuecopy AS (SELECT * FROM venue) SELECT * FROM venuecopy ORDER BY 1 LIMIT 10);

Répertoriez les lignes de la table #venuetemp.

SELECT * FROM #venuetemp ORDER BY venueid; venueid | venuename | venuecity | venuestate| venueseats --------+--------------------------+------------+-----------+------------ 1 Toyota Park Bridgeview IL 0 1 Toyota Park Bridgeview IL 0 2 Columbus Crew Stadium Columbus OH 0 2 Columbus Crew Stadium Columbus OH 0 3 RFK Stadium Washington DC 0 3 RFK Stadium Washington DC 0 4 CommunityAmerica Ballpark Kansas City KS 0 4 CommunityAmerica Ballpark Kansas City KS 0 5 Gillette Stadium Foxborough MA 68756 5 Gillette Stadium Foxborough MA 68756 ...