Database
 sql >> Datenbank >  >> RDS >> Database

So erstellen Sie eine Tabelle aus einer anderen Tabelle in SQL

Problem:

Sie möchten eine neue Tabelle mit Daten erstellen, die aus einer anderen Tabelle kopiert wurden.

Beispiel:

Unsere Datenbank hat eine Tabelle namens product mit Daten in den folgenden Spalten:id (Primärschlüssel), name , category und price .

id Name Kategorie Preis
105 Rose Blume 5,70
108 Schreibtisch Möbel 120,00
115 Tulpe Blume 6,50
123 Sonnenblume Blume 7,50
145 Gitarre Musik 300,00
155 Orchidee Blume 9,50
158 Flöte Musik 156,00

Lassen Sie uns in der Datenbank eine neue Tabelle mit dem Namen florist die die folgenden Spalten speichert:id , name und price . Diese Spalten stammen aus der Tabelle product aber nur aus der Kategorie Blume .

Es ist wichtig zu beachten, dass wir eine neue Tabelle erstellen. Der Tisch florist existiert nicht in dieser Datenbank.

Die CREATE TABLE AS SELECT-Struktur

Um eine neue Tabelle aus einer anderen Tabelle zu erstellen, können Sie CREATE TABLE AS SELECT verwenden . Diese Konstruktion ist Standard-SQL. Sehen Sie sich den folgenden SQL-Code an:

Lösung 1:

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

Hier ist das Ergebnis der Abfrage:

id Name Kategorie Preis
105 Rose Blume 5,70
115 Tulpe Blume 6,50
123 Sonnenblume Blume 7,50
155 Orchidee Blume 9,50

Mit CREATE TABLE , können Sie eine neue Tabelle erstellen, indem Sie Daten aus einer anderen Tabelle kopieren. In diesem Fall verwenden wir zuerst die CREATE TABLE Klausel mit dem Namen für neue Tabelle (in unserem Beispiel:florist ), schreiben wir als nächstes AS und das SELECT Abfrage mit den Namen der Spalten (in unserem Beispiel:* ), und wir schreiben dann FROM gefolgt vom Namen der Tabelle, aus der die Daten stammen (in unserem Beispiel:product ). Dann können Sie eine beliebige SQL-Klausel verwenden:WHERE , GROUP BY , HAVING usw.

Der neue Tisch florist enthält die Definition der Spalten aus dem product Tabelle (id , name , category und price ). Die Anzahl der Zeilen wird begrenzt, indem eine WHERE-Klausel verwendet wird, die die Datensätze filtert, um nur Daten aus der Kategorie Blume abzurufen .

Die SELECT INTO-Struktur

Eine andere Lösung ist die Verwendung von SELECT INTO . Diese Syntax ist kein Standard-SQL, wird aber von vielen gängigen Datenbanken unterstützt.

Lösung 2:

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

Hier ist das Ergebnis:

id Name Preis
105 Rose 5,70
115 Tulpe 6,50
123 Sonnenblume 7,50
155 Orchidee 9,50

Diskussion:

Wenn Sie eine neue Tabelle basierend auf der Struktur und den Daten einer anderen Tabelle erstellen möchten, können Sie den SELECT INTO verwenden Klausel. Schreiben Sie zuerst ein SELECT -Klausel gefolgt von einer Liste von Spalten (in unserem Beispiel:id , name und price ) aus der bestehenden Tabelle (in unserem Beispiel:product ).

Beachten Sie, dass es mehr Spalten in der Tabelle product . Wir haben nur die Spalten ausgewählt, die uns interessieren.

Verwenden Sie als Nächstes das Schlüsselwort INTO durch den Namen der neu zu erstellenden Tabelle (in unserem Beispiel:florist ). Schreiben Sie dann das Schlüsselwort FROM mit dem Namen der bestehenden Tabelle (in unserem Beispiel:product ).

Wenn Sie gefilterte Zeilen aus der Tabelle auswählen möchten, verwenden Sie den WHERE Klausel. Nach WHERE , schreiben Sie die Bedingungen zum Filtern der Daten (in unserem Beispiel:WHERE category=’flower’ ).

In diesem Beispiel erstellen wir eine neue Tabelle florist die weniger Spalten hat als die Tabelle product (der Unterschied ist die Spaltenkategorie). Diese neue Tabelle hat auch weniger Zeilen – nur die Zeilen mit der Kategorie Blume .

Wenn Sie eine Tabelle erstellen möchten, die alle Spalten der anderen Tabelle verwendet, können Sie natürlich * verwenden anstatt die Spalten nach SELECT aufzulisten . Siehe das Beispiel unten:

Lösung 2:

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

Hier ist das Ergebnis:

id Name Kategorie Preis
105 Rose Blume 5,70
115 Tulpe Blume 6,50
123 Sonnenblume Blume 7,50
155 Orchidee Blume 9,50

Mit SELECT INTO ist eine einfache Möglichkeit, eine neue Tabelle basierend auf einer vorhandenen Tabelle in der Datenbank zu erstellen.