sql >> Databasteknik >  >> RDS >> Database

Hur man skapar en tabell från en annan tabell i SQL

Problem:

Du vill skapa en ny tabell med data kopierad från en annan tabell.

Exempel:

Vår databas har en tabell som heter product med data i följande kolumner:id (primär nyckel), name , category och price .

id namn kategori pris
105 ros blomma 5,70
108 skrivbord möbler 120,00
115 tulpan blomma 6,50
123 solros blomma 7,50
145 gitarr musik 300,00
155 orkidé blomma 9,50
158 flöjt musik 156,00

Låt oss skapa en ny tabell med namnet florist som kommer att lagra följande kolumner:id , name och price . Dessa kolumner kommer från tabellen product men bara från kategorin blomma .

Det är viktigt att notera att vi skapar en ny tabell. Tabellen florist finns inte i den här databasen.

SKAPA TABELL SOM SELECT-struktur

För att skapa en ny tabell från en annan tabell kan du använda CREATE TABLE AS SELECT . Denna konstruktion är standard SQL. Titta på SQL-koden nedan:

Lösning 1:

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

Här är resultatet av frågan:

id namn kategori pris
105 ros blomma 5,70
115 tulpan blomma 6,50
123 solros blomma 7,50
155 orkidé blomma 9,50

Använd CREATE TABLE , kan du skapa en ny tabell genom att kopiera data från en annan tabell. I det här fallet använder vi först CREATE TABLE klausul med namnet för ny tabell (i vårt exempel:florist ), skriver vi sedan AS och SELECT fråga med namnen på kolumnerna (i vårt exempel:* ), och vi skriver sedan FROM följt av namnet på tabellen från vilken data samlas in (i vårt exempel:product ). Sedan kan du använda vilken SQL-sats som helst:WHERE , GROUP BY , HAVING , etc.

Det nya bordet florist kommer att innehålla definitionen av kolumnerna från product tabell (id , name , category och price ). Antalet rader begränsas genom att använda en WHERE-sats som filtrerar posterna för att endast hämta data från kategorin blomma .

SELECT INTO-strukturen

En annan lösning är att använda SELECT INTO . Denna syntax är icke-standard SQL, men den stöds av många populära databaser.

Lösning 2:

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

Här är resultatet:

id namn pris
105 ros 5,70
115 tulpan 6,50
123 solros 7,50
155 orkidé 9,50

Diskussion:

Om du vill skapa en ny tabell baserat på strukturen och data från en annan tabell kan du använda SELECT INTO klausul. Skriv först en SELECT sats följt av en lista med kolumner (i vårt exempel:id , name och price ) från den befintliga tabellen (i vårt exempel:product ).

Observera att det finns fler kolumner i tabellen product . Vi har bara valt de kolumner vi är intresserade av.

Använd sedan nyckelordet INTO med namnet på den nya tabell du vill skapa (i vårt exempel:florist ). Skriv sedan nyckelordet FROM med namnet på den befintliga tabellen (i vårt exempel:product ).

Om du vill välja filtrerade rader från tabellen, använd WHERE klausul. Efter WHERE , skriv villkoren för att filtrera data (i vårt exempel:WHERE category=’flower’ ).

I det här exemplet skapar vi en ny tabell florist som har färre kolumner än tabellen product (skillnaden är kolumnkategorin). Den här nya tabellen har också färre rader – bara raderna med kategorin blomma .

Naturligtvis, om du vill skapa en tabell med alla kolumner i den andra tabellen, kan du använda * istället för att lista kolumnerna efter SELECT . Se exemplet nedan:

Lösning 2:

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

Här är resultatet:

id namn kategori pris
105 ros blomma 5,70
115 tulpan blomma 6,50
123 solros blomma 7,50
155 orkidé blomma 9,50

Använd SELECT INTO är ett enkelt sätt att skapa en ny tabell baserat på en befintlig tabell i databasen.


  1. Infoga en bild i postgresql-databasen

  2. Okänd kolumn i "fältlista"-fel på MySQL Update-fråga

  3. Hur man returnerar utdata från lagrad procedur till en variabel i sql-server

  4. Skicka Dictionary<string,int> till lagrad procedur T-SQL