Blog IT, Blog Marketing

Zapytanie INSERT bez tajemnic

Zapytanie INSERT bez tajemnic

Marcin Sarna , 18.03.2021 r.

Jak się posługiwać jednym z podstawowych zapytań SQL? Bądź jak Pani ze zdjęcia i stań się Squadron Leader (SQL).

Wstawiamy jeden wiersz do tabeli

Instrukcja INSERT służy do dodawania danych do tabeli. Polecenie INSERT INTO wstawia jeden lub wiele wierszy do tabeli MySQL. W zależności od liczby wierszy, które chcesz dodać, składnia nieco się różni.

Podczas wstawiania pojedynczego wiersza do tabeli MySQL składnia jest następująca:

INSERT INTO table_name(column_1,column_2,column_3) 
VALUES (value_1,value_2,value_3);

W zapytaniu INSERT INTO należy podać następujące informacje:

  1. table_name: tabela MySQL, do której chcesz dodać nowy wiersz
  2. (column_1,column_2,column_3): lista kolumn, które będą zawierać nowy wiersz; kolumny są oddzielone przecinkiem w nawiasach okrągłych
  3. [li] (value_1,value_2,value_3) [/li]: lista wartości oddzielonych przecinkiem w nawiasach okrągłych, które będą używane w każdej odpowiedniej kolumnie

Liczba kolumn i wartości musi być taka sama inaczej zapytanie nie wykona się.

Wstawiamy kilka wierszy

Podczas wstawiania wielu wierszy do tabeli MySQL składnia jest następująca:

INSERT INTO table_name (column_1, column_2, column_3, ...) 
VALUES
(value_list_1),
(value_list_2),
...
(value_list_n);

W tym miejscu należy wprowadzić następujące informacje:

  1. table_name: tabela, do której chcesz wstawić dane
  2. column_1, column_2, column_3: lista kolumn do przechowywania danych; kolumny są oddzielone przecinkiem w nawiasach okrągłych
  3. value_list_1 / 2 /.../ n: lista wartości do wstawienia w jednym wierszu; wartości są oddzielone przecinkiem w nawiasach okrągłych a liczba wartości na każdej liście musi odpowiadać liczbie kolumn określonej w (column_1, column_2, column_3, ...)

Ponadto wiersze są oddzielone przecinkami w klauzuli VALUES.

Przykłady zapytań INSERT

Przyjrzyjmy się kilku przykładom użycia instrukcji MySQL INSERT podczas wykonywania zadań związanych z danymi. Załóżmy, że mamy trzy tabele: Customers, Products, i [i]Smartphones.

Tego polecenia można użyć, gdy konieczne jest dodanie wartości i kolumn dla określonych wierszy. Na przykład dodaj dane tylko dla kolumn FirstName i LastName w tabeli Customers:

 INSERT INTO Customers(ID, FirstName, LastName)
VALUES ('1', 'User', 'Test');

Tego polecenia można użyć w celu dodania wartości do wszystkich kolumn. Na przykład dodaj wartości do tabeli Products. Pamiętaj, że kolejność wartości powinna odpowiadać kolejności kolumn w tabeli.

INSERT INTO Products
VALUES ('01', 'iPhoneX', 'Apple', 35000, 3);

Tego polecenia można użyć, gdy dla kolumny określono wartość domyślną. Na przykład domyślna wartość kolumny ProductCount w tabeli Products jest równa 0. Aby wstawić wartość domyślną, wykonaj jedno z następujących zapytań:

INSERT INTO Products(ProductName, Manufacturer, Price, ProductCount)
VALUES ('Nokia 9', 'HD Global', '41000', DEFAULT);
INSERT INTO Products (ProductName, Manufacturer, Price, ProductCount)
VALUES ('Nokia 9', 'HD Global', '41000', NULL);

Aby wstawić wartości do kolumn, możemy użyć klauzuli SET zamiast klauzuli VALUES.

INSERT INTO Customers SET ID=2, FirstName='User2';

Użycie klauzuli SELECT w instrukcji MySQL INSERT INTO umożliwia wstawianie wierszy wygenerowanych przez instrukcję SELECT do docelowej tabeli MySQL:

INSERT INTO Products SELECT * FROM Smartphones;

W tym przypadku instrukcja INSERT INTO kopiuje wiersze pobrane za pomocą instrukcji SELECT z tabeli Smartphones i wstawia je do tabeli Products.

Jeśli chcesz pobrać określone wiersze na podstawie warunku, zastosuj opcje filtrowania w klauzuli WHERE. Pamiętaj, że struktura obu tabel powinna być zgodna; w przeciwnym razie zapytanie się nie uda:

INSERT INTO Products SELECT * FROM Smartphones WHERE Price=34000;

To polecenie dodaje do wartości tabeli Products wartości z tabeli Smartphones, gdzie cena jest równa 34000.

Sprawdź oferty pracy na TeamQuest

Możesz także skopiować i wstawić określone kolumny z innej tabeli. Jednak w tym przypadku upewnij się, że w tabeli docelowej nie ma rekordu o określonej nazwie; w przeciwnym razie zapytanie nie powiedzie się i wystąpi błąd.

Ignorowanie błędów

W przypadku wystąpienia błędów lub nieoczekiwanego zachowania podczas wstawiania wierszy do tabeli MySQL, wykonywanie instrukcji jest przerywane. Wiersze z prawidłowymi i nieprawidłowymi wartościami nie są dodawane do tabeli. Na przykład wykonaj następujące zapytanie:

INSERT INTO Products VALUES ('01', 'iPhoneX', 'Apple', 35000, 3);

To zapytanie zwróci błąd jeżeli rekord o tym identyfikatorze już istnieje. To teraz zmodyfikuj instrukcję za pomocą IGNORE. Umożliwia wstawianie wierszy z prawidłowymi wartościami, ale pomija wiersze z nieprawidłowymi wartościami:

INSERT IGNORE INTO Products VALUES ('01', 'iPhoneX', 'Apple', 35000, 3);

W rezultacie skrypt został wykonany bez błędów. MySQL powiadomi Cię, że wiersze zostały dodane do tabeli.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej