Database
 sql >> Base de données >  >> RDS >> Database

Comment créer une table à partir d'une autre table en SQL

Problème :

Vous souhaitez créer une nouvelle table avec des données copiées d'une autre table.

Exemple :

Notre base de données a une table nommée product avec des données dans les colonnes suivantes :id (clé primaire), name , category , et price .

identifiant nom catégorie prix
105 rose fleur 5.70
108 bureau meubles 120.00
115 tulipe fleur 6,50
123 tournesol fleur 7,50
145 guitare musique 300.00
155 orchidée fleur 9.50
158 flûte musique 156.00

Dans la base de données, créons une nouvelle table nommée florist qui stockera les colonnes suivantes :id , name , et price . Ces colonnes proviennent de la table product mais uniquement de la catégorie fleur .

Il est important de noter que nous créons une nouvelle table. La table florist n'existe pas dans cette base de données.

La structure CREATE TABLE AS SELECT

Pour créer une nouvelle table à partir d'une autre table, vous pouvez utiliser CREATE TABLE AS SELECT . Cette construction est du SQL standard. Regardez le code SQL ci-dessous :

Solution 1 :

CREATE TABLE florist 
AS SELECT
  *
FROM product
WHERE category = ’flower’;

Voici le résultat de la requête :

identifiant nom catégorie prix
105 rose fleur 5.70
115 tulipe fleur 6,50
123 tournesol fleur 7,50
155 orchidée fleur 9.50

Utilisation de CREATE TABLE , vous pouvez créer une nouvelle table en copiant les données d'une autre table. Dans ce cas, nous utilisons d'abord le CREATE TABLE clause avec le nom de la nouvelle table (dans notre exemple :florist ), on écrit ensuite AS et le SELECT requête avec les noms des colonnes (dans notre exemple :* ), et on écrit alors FROM suivi du nom de la table à partir de laquelle les données sont collectées (dans notre exemple :product ). Ensuite, vous pouvez utiliser n'importe quelle clause SQL :WHERE , GROUP BY , HAVING , etc.

La nouvelle table florist contiendra la définition des colonnes du product tableau (id , name , category , et price ). Le nombre de lignes est limité en utilisant une clause WHERE, en filtrant les enregistrements pour ne récupérer que les données de la catégorie fleur .

La structure SELECT INTO

Une autre solution consiste à utiliser SELECT INTO . Cette syntaxe est du SQL non standard, mais elle est prise en charge par de nombreuses bases de données populaires.

Solution 2 :

SELECT  
  id,
  name,
  price
INTO florist
FROM product
WHERE category=’flower’;

Voici le résultat :

identifiant nom prix
105 rose 5.70
115 tulipe 6,50
123 tournesol 7,50
155 orchidée 9.50

Discussion :

Si vous souhaitez créer une nouvelle table basée sur la structure et les données d'une autre table, vous pouvez utiliser le SELECT INTO clause. Tout d'abord, écrivez un SELECT clause suivie d'une liste de colonnes (dans notre exemple :id , name , et price ) à partir de la table existante (dans notre exemple :product ).

Notez qu'il y a plus de colonnes dans la table product . Nous n'avons sélectionné que les colonnes qui nous intéressent.

Ensuite, utilisez le mot-clé INTO avec le nom de la nouvelle table que vous souhaitez créer (dans notre exemple :florist ). Ensuite, écrivez le mot-clé FROM avec le nom de la table existante (dans notre exemple :product ).

Si vous souhaitez sélectionner des lignes filtrées dans le tableau, utilisez le WHERE clause. Après WHERE , écrivez les conditions pour filtrer les données (dans notre exemple :WHERE category=’flower’ ).

Dans cet exemple, nous créons une nouvelle table florist qui a moins de colonnes que la table product (la différence est la catégorie de colonne). Ce nouveau tableau a également moins de lignes - uniquement les lignes avec la catégorie fleur .

Bien sûr, si vous souhaitez créer une table en utilisant toutes les colonnes de l'autre table, vous pouvez utiliser * au lieu de lister les colonnes après SELECT . Voir l'exemple ci-dessous :

Solution 2 :

SELECT  
  *
INTO florist
FROM product
WHERE category=’flower’;

Voici le résultat :

identifiant nom catégorie prix
105 rose fleur 5.70
115 tulipe fleur 6,50
123 tournesol fleur 7,50
155 orchidée fleur 9.50

Utilisation de SELECT INTO est un moyen simple de créer une nouvelle table basée sur une table existante dans la base de données.