Database
 sql >> Baza danych >  >> RDS >> Database

Jak utworzyć tabelę z zapytania SQL

Problem:

Chcesz utworzyć nową tabelę w bazie danych z danymi zdefiniowanymi przez zapytanie SQL.

Przykład:

Chcielibyśmy stworzyć tabelę gamer na podstawie zapytania SQL. W tym zapytaniu wybieramy dane z innej tabeli o nazwie championship przedstawione poniżej.

id gracz wynik championship_date
1 alicja 14 2020-08-10
2 nadzorca 10 2020-09-28
3 szczęśliwy 0 2020-08-10
4 lukas 6 2020-08-10
5 oli 12 2020-08-10
6 wielki gracz 7 2020-09-12

W bazie danych utwórzmy nową tabelę o nazwie gamer który będzie przechowywać dane we wszystkich kolumnach zdefiniowanych w tabeli championship (id , gamer , score i championship_date ).

Rozwiązanie 1:

CREATE TABLE gamer 
AS  
SELECT
  *
FROM championship;

Dyskusja:

Jeśli chcesz utworzyć nową tabelę, pierwszym krokiem jest użycie CREATE TABLE klauzulę i nazwę nowej tabeli (w naszym przykładzie:gamer ). Następnie użyj AS słowo kluczowe i podaj SELECT instrukcja, która wybiera dane do nowej tabeli. W naszym przykładzie wybraliśmy wszystkie kolumny z tabeli championship używając gwiazdki (*). Zestaw wyników wyświetla wszystkie rekordy w tabeli championship .

Jeśli jednak chcesz utworzyć tabelę tylko z podzbiorem rekordów, możesz określić wybrane zapytanie, jak w poniższym przykładzie.

Rozwiązanie 2:

CREATE TABLE gamer 
AS  
SELECT
  gamer, score, championship_date
FROM championship 
WHERE championship_date <= 2020-08-10;

Oto zestaw wyników:

gracz wynik championship_date
alicja 14 2020-08-10
szczęśliwy 0 2020-08-10
lukas 6 2020-08-10
oli 12 2020-08-10

SELECT zapytanie pobiera tylko rekordy z championship_date data równa lub starsza niż 2020-08-10 (WHERE championship_date <= 2020-08-10 ). Nowa tabela przechowuje mniej kolumn niż w poprzednim przykładzie (SELECT gamer, score, championship_date ) bez kolumny id .

Podobnym rozwiązaniem tego problemu jest użycie SELECT INTO klauzula, aby utworzyć nową tabelę i skopiować dane z innej tabeli. Spójrz na kod:

Rozwiązanie 3:

SELECT
  gamer, score, championship_date
INTO gamer
FROM championship 
WHERE championship_date <= 2020-08-10;

Wynikowa tabela jest taka sama. Zauważ, że ta konstrukcja nie występuje w standardzie SQL. W tym poleceniu SQL najpierw piszemy SELECT , następnie lista kolumn, następnie słowo kluczowe INTO , a na końcu nazwę nowej tabeli, którą chcemy utworzyć. Następnie możesz dodać WHERE i inne klauzule SQL, takie jak GROUP BY lub HAVING aby filtrować rekordy dla nowej tabeli.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pakiet hostingowy na Chocolatey

  2. Jak tworzyć liczby pięter w SQL

  3. Klauzula SQL GROUP BY dla początkujących

  4. Top 9 systemów zarządzania bazami danych dla szablonów Joomla

  5. Minimalizowanie wpływu poszerzenia kolumny TOŻSAMOŚĆ – część 3