Exemples INSERT - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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 ...