Kopiowanie/klonowanie
Problem o którym napisałem powyżej to tylko jeden z przykładów. Wyobraźcie sobię sytuację w której napisaliście niezwykle skomplikowaną procedurę składowaną, która wymaga przetestowania. Zamiast wykonywać ją na oryginalnej tabeli możecie w prosty i szybki sposób utworzyć kopię celem weryfikacji poprawności działania Waszego kodu.
W takiej sytuacji możemy zastosować różne podejścia, które są powiązane z konkretnym system zarządzania bazami danych. W ramach tego (i innych wpisów) używamy SQL Server Management Studio - ten przykład omówimy szczegółowo. Jeżeli jesteś jednak użytkownikiem baz danych Oracle lub MySQL nie zostawię Cię samego
W przypadku MySQL możecie użyć poniższego polecenia:
CREATE TABLE nowa_tabela LIKE oryginalna_tabela; -- tworzenie nowej tabeli
INSERT INTO nowa_tabela SELECT * FROM oryginalna_tabela; -- kopiowanie rekordów z oryginalnej tabeli
------------------- lub zapis skrócony -------------------
CREATE TABLE nowa_tabela SELECT * FROM oryginalna_tabela;
Dla użytkowników baz danych Oracle powyższe zapytanie przyjmuje postać:
CREATE TABLE nowa_tabela
AS (SELECT * FROM oryginalna_tabela);
Użytkownicy SQL Server mogą posłużyć się poniższym zapytaniem:
SELECT * INTO nowa_tabela FROM oryginalna_tabela
W naszym przypadku dokonamy kopiowania na bazie tabeli HumanResources.Department:
SELECT * INTO HumanResources.DepartmentV2 FROM HumanResources.Department
Kolejny krok to dodanie kilku rekordów, które nie znajdują się w oryginalnej tabeli celem porówniania działania klauzuli UNION oraz UNION ALL:
INSERT INTO HumanResources.DepartmentV2(Name, GroupName, ModifiedDate) VALUES ('Konstruktor', 'Dzial R&D', GETDATE())
INSERT INTO HumanResources.DepartmentV2(Name, GroupName, ModifiedDate) VALUES ('Projektent', 'Dzial Techniczny', GETDATE())
INSERT INTO HumanResources.DepartmentV2(Name, GroupName, ModifiedDate) VALUES ('Produkcja', 'Dzial Produkcji', GETDATE())
Porównaniem zajmiemy się jednak w osobnym wpisie, który możecie znaleźć tutaj -> SQL - UNION