CodeGym /Kursy /All lectures for PL purposes /Wstawianie danych do tabeli

Wstawianie danych do tabeli

All lectures for PL purposes
Poziom 1, Lekcja 266
Dostępny

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 table (column1, column2, column3) VALUES (value1, value2, value3), (value1, value2, value3), (value1, value2, value3);

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 ('Rabinovich', 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 table (column1, column2, column3) SELECT-request;

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.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION