sql >> Databáze >  >> RDS >> Database

Jak vytvořit jednu tabulku z jiné tabulky v SQL

Problém:

Chcete vytvořit novou tabulku s daty zkopírovanými z jiné tabulky.

Příklad:

Naše databáze obsahuje tabulku s názvem product s údaji v následujících sloupcích:id (primární klíč), name , category a price .

id jméno kategorie cena
105 růže květina 5,70
108 stůl nábytek 120,00
115 tulipán květina 6,50
123 slunečnice květina 7,50
145 kytara hudba 300,00
155 orchideje květina 9,50
158 flétna hudba 156,00

V databázi vytvoříme novou tabulku s názvem florist ve kterém budou uloženy následující sloupce:id , name a price . Tyto sloupce pocházejí z tabulky product ale pouze z kategorie květina .

Je důležité si uvědomit, že vytváříme novou tabulku. Stolní florist v této databázi neexistuje.

Struktura CREATE TABLE AS SELECT

Chcete-li vytvořit novou tabulku z jiné tabulky, můžete použít CREATE TABLE AS SELECT . Tato konstrukce je standardní SQL. Podívejte se na kód SQL níže:

Řešení 1:

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

Zde je výsledek dotazu:

id jméno kategorie cena
105 růže květina 5,70
115 tulipán květina 6,50
123 slunečnice květina 7,50
155 orchideje květina 9,50

Pomocí CREATE TABLE , můžete vytvořit novou tabulku zkopírováním dat z jiné tabulky. V tomto případě nejprve použijeme CREATE TABLE klauzule s názvem nového stolu (v našem příkladu:florist ), dále napíšeme AS a SELECT dotaz na názvy sloupců (v našem příkladu:* ) a poté napíšeme FROM následovaný názvem tabulky, ze které jsou data shromažďována (v našem příkladu:product ). Potom můžete použít jakoukoli klauzuli SQL:WHERE , GROUP BY , HAVING , atd.

Nový stolní florist bude obsahovat definici sloupců z product tabulka (id , name , category a price ). Počet řádků je omezen pomocí klauzule WHERE, která filtruje záznamy tak, aby načítala pouze data z kategorie květina .

Struktura SELECT INTO

Dalším řešením je použít SELECT INTO . Tato syntaxe je nestandardní SQL, ale je podporována mnoha populárními databázemi.

Řešení 2:

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

Zde je výsledek:

id jméno cena
105 růže 5,70
115 tulipán 6,50
123 slunečnice 7,50
155 orchideje 9,50

Diskuse:

Pokud byste chtěli vytvořit novou tabulku na základě struktury a dat z jiné tabulky, můžete použít SELECT INTO doložka. Nejprve napište SELECT klauzule následovaná seznamem sloupců (v našem příkladu:id , name a price ) ze stávající tabulky (v našem příkladu:product ).

Všimněte si, že v tabulce product . Vybrali jsme pouze sloupce, které nás zajímají.

Dále použijte klíčové slovo INTO s názvem nového stolu, který chcete vytvořit (v našem příkladu:florist ). Poté napište klíčové slovo FROM s názvem stávající tabulky (v našem příkladu:product ).

Pokud chcete vybrat filtrované řádky z tabulky, použijte WHERE doložka. Po WHERE , napište podmínky pro filtrování dat (v našem příkladu:WHERE category=’flower’ ).

V tomto příkladu vytváříme novou tabulku florist která má méně sloupců než tabulka product (rozdíl je kategorie sloupců). Tato nová tabulka má také méně řádků – pouze řádky s kategorií květina .

Samozřejmě, pokud chcete vytvořit tabulku se všemi sloupci v druhé tabulce, můžete použít * místo výpisu sloupců za SELECT . Viz příklad níže:

Řešení 2:

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

Zde je výsledek:

id jméno kategorie cena
105 růže květina 5,70
115 tulipán květina 6,50
123 slunečnice květina 7,50
155 orchideje květina 9,50

Pomocí SELECT INTO je snadný způsob, jak vytvořit novou tabulku založenou na existující tabulce v databázi.


  1. Ladění příkazů SQL v SQL Developer

  2. Jak filtrovat výsledky dotazů v PostgreSQL

  3. mysql_insert_id alternativa pro postgresql

  4. Jak vytvořit dokument Excel z programu Java pomocí Apache POI