Kopiowanie tabeli w SQL - jak to zrobić? Jak skopiować dane z jednej tabeli do drugiej?


Do kopiowania danych z jednej tabeli i układania ich w drugiej służy instrukcja INSERT INTO SELECT.
Ważne! By kopiowanie tabeli lub tylko wybranych wartości w tabelach było możliwe, odpowiadające sobie typy kolumn w dwóch tabelach powinny być ze sobą kompatybilne.

Składnia SQL

Kopiowanie tabeli - wszystkie dane z pierwszej trafią do drugiej. Zakres danych można zawęzić wykorzystując klauzulę WHERE.

INSERT INTO destinationTable -- tabela do której chcemy skopiować
SELECT * FROM sourceTable -- tabela z której kopiujemy
WHERE someCondition

Kopiowanie wybranych kolumn z jednej tabeli do drugiej.

INSERT INTO destinationTable (column1, column2, ...) -- wybieramy kolumny do których kopiujemy
SELECT (column1, column2, ...) -- wybieramy kolumny do skopiowania. Ważna kolejność!
FROM sourceTable  
WHERE someConditions

Przykłady 

Jako przykład posłużą poniższe tabele (bardzo proste). Tabela Car została wypełniona danymi w celu łatwiejszego zrozumienia tematu. Skrypt SQL tworzący strukturę danych:

CREATE TABLE Car (
    Id INT,
    Name VARCHAR(20),
    Speed INT
)
CREATE TABLE Vehicle(
    Id INT,
    Name VARCHAR(20),
    Speed INT
)


Kopiowanie tabeli - dane z wszystkich kolumn tabeli źródłowej trafią do kolumn w tabeli docelowej

INSERT INTO Vehicle -- tabela do której chcemy skopiować
SELECT *  -- wybieramy wszystkie kolumny
FROM Car -- tabela z której kopiujemy

Efekt wykonania powyższej instrukcji poniżej (na zielono zaznaczono skopiowane wartości). Jak widać cały zbiór danych został przekopiowany.


Kopiowanie wybranych wierszy z jednej tabeli do drugiej

INSERT INTO Vehicle -- tabela do której chcemy skopiować
SELECT * -- wybieramy wszystkie kolumny
FROM Car  -- tabela z której kopiujemy
WHERE Car.Id < 4  -- warunek który muszą spełnić kopiowane kolumny

Efekt wykonania powyższej instrukcji poniżej (na zielono zaznaczono skopiowane wartości)


Kopiowanie wybranych kolumn z jednej tabeli do drugiej tabeli

INSERT INTO Mark (Id, Title) -- kolumny jawnie zdefiniowane
SELECT Car,Id, Car.Name -- wybieramy jawnie kolumny
FROM Car  -- tabela z której kopiujemy

Efekt wykonania powyższej instrukcji poniżej (na zielono zaznaczono skopiowane wartości)


© 2021 - SkillsTest.pl | | Regulamin | Polityka Prywatnosci