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

Jak utworzyć jedną tabelę z innej tabeli w SQL?

Problem:

Chcesz utworzyć nową tabelę z danymi skopiowanymi z innej tabeli.

Przykład:

Nasza baza danych zawiera tabelę o nazwie product z danymi w następujących kolumnach:id (klucz podstawowy), name , category i price .

id nazwa kategoria cena
105 róża kwiat 5,70
108 biurko meble 120,00
115 tulipan kwiat 6,50
123 słonecznik kwiat 7,50
145 gitara muzyka 300,00
155 storczyk kwiat 9,50
158 flet muzyka 156,00

W bazie danych utwórzmy nową tabelę o nazwie florist który będzie przechowywać następujące kolumny:id , name i price . Te kolumny pochodzą z tabeli product ale tylko z kategorii kwiat .

Należy zauważyć, że tworzymy nową tabelę. Stół florist nie istnieje w tej bazie danych.

Struktura CREATE TABLE AS SELECT

Aby utworzyć nową tabelę z innej tabeli, możesz użyć CREATE TABLE AS SELECT . Ta konstrukcja to standardowy SQL. Spójrz na poniższy kod SQL:

Rozwiązanie 1:

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

Oto wynik zapytania:

id nazwa kategoria cena
105 róża kwiat 5,70
115 tulipan kwiat 6,50
123 słonecznik kwiat 7,50
155 storczyk kwiat 9,50

Korzystanie z CREATE TABLE , możesz utworzyć nową tabelę, kopiując dane z innej tabeli. W tym przypadku najpierw używamy CREATE TABLE klauzula z nazwą nowej tabeli (w naszym przykładzie:florist ), następnie piszemy AS i SELECT zapytanie z nazwami kolumn (w naszym przykładzie:* ), a następnie piszemy FROM następnie nazwa tabeli, z której zbierane są dane (w naszym przykładzie:product ). Następnie możesz użyć dowolnej klauzuli SQL:WHERE , GROUP BY , HAVING itp.

Nowa tabela florist będzie zawierać definicję kolumn z product tabela (id , name , category i price ). Liczba wierszy jest ograniczona za pomocą klauzuli WHERE, filtrującej rekordy tak, aby pobierać tylko dane z kategorii kwiat .

Struktura SELECT INTO

Innym rozwiązaniem jest użycie SELECT INTO . Ta składnia jest niestandardową składnią SQL, ale jest obsługiwana przez wiele popularnych baz danych.

Rozwiązanie 2:

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

Oto wynik:

id nazwa cena
105 róża 5,70
115 tulipan 6,50
123 słonecznik 7,50
155 storczyk 9,50

Dyskusja:

Jeśli chcesz utworzyć nową tabelę na podstawie struktury i danych z innej tabeli, możesz użyć SELECT INTO klauzula. Najpierw napisz SELECT klauzula, po której następuje lista kolumn (w naszym przykładzie:id , name i price ) z istniejącej tabeli (w naszym przykładzie:product ).

Zauważ, że w tabeli jest więcej kolumn product . Wybraliśmy tylko te kolumny, które nas interesują.

Następnie użyj słowa kluczowego INTO z nazwą nowej tabeli, którą chcesz utworzyć (w naszym przykładzie:florist ). Następnie wpisz słowo kluczowe FROM z nazwą istniejącej tabeli (w naszym przykładzie:product ).

Jeśli chcesz wybrać przefiltrowane wiersze z tabeli, użyj WHERE klauzula. Po WHERE , wpisz warunki filtrowania danych (w naszym przykładzie:WHERE category=’flower’ ).

W tym przykładzie tworzymy nową tabelę florist która ma mniej kolumn niż tabela product (różnica to kategoria kolumny). Ta nowa tabela ma również mniej wierszy – tylko wiersze z kategorią kwiat .

Oczywiście, jeśli chcesz utworzyć tabelę, używając wszystkich kolumn z drugiej tabeli, możesz użyć * zamiast wymieniać kolumny po SELECT . Zobacz przykład poniżej:

Rozwiązanie 2:

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

Oto wynik:

id nazwa kategoria cena
105 róża kwiat 5,70
115 tulipan kwiat 6,50
123 słonecznik kwiat 7,50
155 storczyk kwiat 9,50

Używanie SELECT INTO to łatwy sposób na utworzenie nowej tabeli na podstawie istniejącej tabeli w bazie danych.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Porównanie wydajności maszyny wirtualnej Windows Azure, część 1

  2. Jak wykonać instrukcję IF w SQL?

  3. Jak utworzyć dokument Excel z programu Java za pomocą Apache POI

  4. Jak znaleźć minimalne wartości w kolumnach

  5. ETL kontra ELT:zakładamy, ty sędzio