Podsumowanie: w tym samouczku dowiesz się, jak używać instrukcji SQL INSERT do wstawiania danych do tabel.
Instrukcja INSERT
wstawia jeden lub więcej wierszy do tabeli. Instrukcja INSERT
jest czasami nazywana instrukcją INSERT INTO
.
Instrukcja SQL INSERT – wstaw jeden wiersz do table
Poniższy rysunek ilustruje instrukcję INSERT
, która wstawia pojedynczy wiersz do istniejącej tabeli.
1
2
|
INSERT INTO table (kolumna1, kolumna2, …)
VALUES (wartość1, wartość2, …);
|
Aby wstawić wiersz do tabeli, musisz określ trzy rzeczy:
- Najpierw tabelę, do której chcesz wstawić nowy wiersz, w klauzuli
INSERT INTO
. - Po drugie, rozdzielona przecinkami lista kolumn w tabeli otoczona nawiasami.
- Po trzecie, rozdzielona przecinkami lista wartości w nawiasach w
VALUES
klauzula.
Lista kolumn musi mieć taką samą liczbę elementów jak lista wartości, w przeciwnym razie silnik bazy danych wyświetli błąd.
Przyjrzyjmy się przy następującej shippers
tabeli:
INSERT
wstawia nowy wiersz do tabeli shippers
:
1
2
|
INSERT INTO spedytorów (nazwa firmy, telefon)
VALUES („Alliance Shippers”, „1-800-222-0451”);
|
Dwie stałe, "Alliance Shippers"
i "1-800-222-0451"
są określone w klauzuli VALUES
. Silnik bazy danych wstawił je odpowiednio do kolumn companyname
i phone
.
Po wykonaniu instrukcji serwer bazy danych zwraca komunikat wskazujący liczbę wierszy, których to dotyczy. W tym przypadku otrzymujemy komunikat „Dotyczy 1 wiersza” informujący, że nowy wiersz został pomyślnie wstawiony.
Zauważ, że nie określiliśmy shipperID
kolumna na liście kolumn, ponieważ kolumna shipperID
jest kolumną AUTO INCREMENT
, silnik bazy danych automatycznie generuje następną sekwencję za każdym razem, gdy nowy wiersz jest wstawiany do tabeli.
Aby pomóc Ci napisać mniej kodu, SQL udostępnia krótszą formę instrukcji INSERT
w następujący sposób:
1
2
|
INSERT INTO table
VALUES (wartość1, wartość2, …)
|
W tym formularzu lista wartości musi mieć tę samą kolejność, co lista kolumn w tabeli. Jeśli używasz tej formy elementu , musisz podać wartości dla wszystkich kolumn z wyjątkiem kolumny AUTO INCREMENT
.
Dobrą praktyką jest używanie nazw kolumn w INSERT
, aby ułatwić obsługę kodu.
Następująca instrukcja INSERT
ma taki sam skutek jak ta powyżej:
1
2
|
INSERT INTO shipper
VALUES (” Alliance Shippers „,” 1-800-222-0451 „);
|
Instrukcja SQL INSERT – wstaw wiele wierszy do tabeli
Instrukcja INSERT
umożliwia również wstawianie wielu wierszy do tabeli przy użyciu jednej instrukcji w następujący sposób:
1
2
3
4
|
INSERT INTO nazwa_tabeli (kolumna1, kolumna2…)
VALUES (wartość1, wartość2,…),
(wartość1, wartość2,…) ,
…
|
W tym formularz, musisz podać wiele list wartości, każda lista jest oddzielona przecinkiem.
Następująca instrukcja INSERT
wstawia dwa wiersze do tabeli shippers
:
1
2
3
|
INSERT INTO nadawców (nazwa firmy, telefon)
VALUES („UPS”, „1-800-782-7892”),
(„DHL”, „1-800-225-5345”)
|
SQL Instrukcja INSERT – kopiuj dane tabeli
Zamiast określać listę wartości, możesz użyć instrukcji SELECT, aby wybrać wartości z innej tabeli i przekazać je do INSERT
komunikat. Umożliwia to skopiowanie danych z tabeli do innej tabeli.
Poniższa instrukcja ilustruje, jak skopiować dane z another_table
do table
:
1
2
3
4
5
6
7
|
INSERT INTO table (kolumna1, kolumna2, …)
SELECT
kolumna1, kolumna2, …
FROM
inna_tabela
GDZIE
stan
|
Lista kolumn w klauzuli SELECT
musi odpowiadać liście kolumn w INSERT INTO
klauzula. Jeśli chcesz skopiować tylko częściowe dane, musisz określić warunek w klauzuli WHERE.
Załóżmy, że masz tymczasową tabelę o nazwie shippers_tmp
, która ma takie same strukturę jako tabelę shippers
. Aby skopiować dane z tabeli shippers
do tabeli shippers_tmp
, użyj następującej instrukcji:
1
2
3
4
5
|
INSERT INTO shippers_tmp (identyfikator nadawcy, nazwa, numer telefonu)
SELECT
identyfikator nadawcy, nazwa firmy, telefon
OD
spedytorów
|
W tym samouczku nauczyłeś się, jak używać instrukcji INSERT
do wstawiania jednego lub więcej wierszy do tabeli. Ponadto dowiedziałeś się również, jak skopiować dane z tabeli do innej tabeli za pomocą instrukcji INSERT SELECT INTO
.
- Czy ten samouczek pomocne?
- Tak Nie