INSERT INTO VALUES() instrukcja
Wymyśliliśmy, jak tworzyć tabele, przyjrzyjmy się teraz szczegółowo, jak dodawać dane do tabeli za pomocą zapytania SQL.
W rzeczywistości jest to bardzo proste, ale istnieje kilka niuansów. Najprostsza opcja wstawiania danych do tabeli wymaga określenia dwóch rzeczy:
- nazwy kolumn
- wartości kolumn (dane)
Nazwy kolumn muszą być określone, ponieważ bardzo często kolumny mają wartości domyślne, które nie są określone podczas wstawiania danych. I zwykle każda tabela ma przynajmniej jedną taką kolumnę, na przykład id wiersza.
Ogólna postać zapytania o wstawienie danych do tabeli wygląda następująco:
INSERT INTO tabela (kolumna1, kolumna2, kolumna3) VALUES
(wartość1, wartość2, wartość3),
(wartość1, wartość2, wartość3),
(wartość1, wartość2, wartość3);
Na przykład, jeśli chcesz wstawić nowy rekord do tabeli użytkownika, zapytanie wyglądałoby tak:
INSERT INTO user (name, level, created_time) VALUES
(„Rabinowicz”, 5, ‘2022-06-06’);
INSERT INTO SELECT instrukcja
Innym częstym scenariuszem wstawiania danych do tabeli jest pobranie ich z innej tabeli, schematu, a nawet systemu DBMS.
Aby to zrobić, istnieje inny format zapytania INSERT INTO, w którym zamiast części VALUES można określić zapytanie w celu wybrania danych.
Ogólna forma takiego żądania jest następująca:
INSERT INTO tabela (kolumna1, kolumna2, kolumna3)
SELECT-wniosek;
Napiszmy zapytanie, które doda wszystkich użytkowników z tabeli pracowników do tabeli użytkowników:
INSERT INTO user (name, created_time)
SELECT employee.name, employee.join_date
FROM employee;
W tabeli pracownik mamy różne dane, ale z nich wybieramy tylko dwa pola – imię i nazwisko oraz czas przybycia do firmy.
Ponadto tabela użytkowników wymaga określenia poziomu użytkownika - poziomu. Pracownicy nie mają poziomu w tabeli pracowników, więc wykorzystamy fakt, że tabela użytkowników ma domyślną wartość dla pola poziomu. Po prostu nie określamy poziomu, a SQL ustawi wartość domyślną.
Załóżmy, że nie jesteśmy zadowoleni z wartości domyślnej i chcemy, aby poziom wynosił 99, i zastąpmy user.created_time dzisiejszą datą, wtedy możemy napisać to:
INSERT INTO user (name, level, created_time)
SELECT employee.name, 99, CURDATE()
FROM employee;
Można by zrobić dużo więcej, ale myślę, że na razie to wystarczy. Możesz przeczytać więcej na oficjalnej stronie MySQL.
GO TO FULL VERSION