Problém:
Chcete vytvořit novou tabulku v databázi s daty definovanými SQL dotazem.
Příklad:
Rádi bychom vytvořili tabulku gamer na základě SQL dotazu. V tomto dotazu vybíráme data z jiné tabulky s názvem championship níže.
| id | hráč | skóre | datum_championátu |
|---|---|---|---|
| 1 | alice | 14 | 2020-08-10 |
| 2 | vedoucí | 10 | 28. 9. 2020 |
| 3 | šťastný muž | 0 | 2020-08-10 |
| 4 | lukas | 6 | 2020-08-10 |
| 5 | oli | 12 | 2020-08-10 |
| 6 | velký hráč | 7 | 2020-09-12 |
V databázi vytvoříme novou tabulku s názvem gamer která bude ukládat data ve všech sloupcích definovaných v tabulce championship (id , gamer , score a championship_date ).
Řešení 1:
CREATE TABLE gamer AS SELECT * FROM championship;
Diskuse:
Pokud byste chtěli vytvořit novou tabulku, prvním krokem je použít CREATE TABLE klauzule a název nové tabulky (v našem příkladu:gamer ). Poté použijte AS klíčové slovo a zadejte SELECT příkaz, který vybírá data pro novou tabulku. V našem příkladu jsme vybrali všechny sloupce z tabulky championship pomocí hvězdičky (*). Sada výsledků zobrazuje všechny záznamy v tabulce championship .
Pokud však chcete vytvořit tabulku pouze s podmnožinou záznamů, můžete specifikovat vybraný dotaz jako v příkladu níže.
Řešení 2:
CREATE TABLE gamer AS SELECT gamer, score, championship_date FROM championship WHERE championship_date <= 2020-08-10;
Zde je sada výsledků:
| hráč | skóre | datum_championátu |
|---|---|---|
| alice | 14 | 2020-08-10 |
| happyman | 0 | 2020-08-10 |
| lukas | 6 | 2020-08-10 |
| oli | 12 | 2020-08-10 |
SELECT dotaz načte pouze záznamy s championship_date datum stejné nebo starší než 2020-08-10 (WHERE championship_date <= 2020-08-10 ). V nové tabulce je uloženo méně sloupců než v předchozím příkladu (SELECT gamer, score, championship_date ) bez sloupce id .
Podobným řešením tohoto problému je použití SELECT INTO klauzule k vytvoření nové tabulky a zkopírování dat z jiné tabulky. Podívejte se na kód:
Řešení 3:
SELECT gamer, score, championship_date INTO gamer FROM championship WHERE championship_date <= 2020-08-10;
Výsledná tabulka je stejná. Všimněte si, že tato konstrukce není přítomna ve standardu SQL. V tomto SQL příkazu nejprve napíšeme SELECT , poté seznam sloupců a poté klíčové slovo INTO a nakonec název nové tabulky, kterou chceme vytvořit. Dále můžete přidat WHERE a další klauzule SQL jako GROUP BY nebo HAVING pro filtrování záznamů pro novou tabulku.