Wstawianie danych do tabel w SQL

Jedną z podstawowych funkcji SQL’a jest wstawianie nowych danych do wcześniej utworzonych tabel w bazie danych. Prawdę mówiąc, jest to jedna z fundamentalnych możliwości oferowanych przez SQL. Czym była by baza danych, do której nie można było by nic zapisać?

Fot: 123net, CC BY-SA 3.0.

Fot: 123net, CC BY-SA 3.0.

W SQL do zapisywania nowych informacji w wybranej wcześniej tabeli używamy polecenia INSERT ... INTO ... VALUES .... Przyjrzyjmy się jego ogólnej składni:

lub:

W poprzednim artykule (dotyczącym tworzenia tabel w SQL) pokazałem jak stworzyć tabelę (nazwa: tab1) przechowującą ID, Imię oraz Nazwisko. Prezentuje się ona tak:

ID Imie Nazwisko

Oczywiście tabela ta nie zawiera, żadnych danych (jest pusta).

Przy napisaniu zapytania SQL wstawiającego nowe dane zakładamy, że nie została zdefiniowana auto inkrementacja klucza podstawowego (kolumna ID) oraz przyjmujemy, że kolumna ID nie może być pusta (NOT NULL). Przykładowe zdanie SQL wstawiające nowy wiersz będzie wyglądało więc tak:

Efekt:

ID Imie Nazwisko
1 Jan Kowalski

Możemy oczywiście zrezygnować na przykład z podania imienia:

Efekt:

ID Imie Nazwisko
1 Jan Kowalski
2 Null Nowak

Istnieje również możliwość jawnego wstawienia wartości NULL:

Efekt:

ID Imie Nazwisko
1 Jan Kowalski
2 Null Nowak
3 Null Szczypczyk

Wartości domyślne (Default)

Kolumna tabeli może mieć zadeklarowaną domyślną wartość czyli taką, która zostanie zapisana w przypadku nie podania innej. Tak więc, jeżeli w naszej kwerendzie zapomnielibyśmy podania na przykład imienia, w kolumnie imie mogło by się pojawić przykładowo słowo „anonim”.

Informację na temat wartości domyślnej dodajemy do danej kolumny za pomocą słowa kluczowego DEFAULT:

MsSQL:

MySQL:

Teraz kiedy dla kolumny Imie nie podamy żadnej wartości domyślnie zostanie wstawione słowo „anonim”.

Można to oczywiście zrobić jawnie:

Efekt:

ID Imie Nazwisko
1 Jan Kowalski
2 Null Nowak
3 Null Szczypczyk
4 anonim Null

Wstawianie wielu wierszy na raz

Do tej pory wykorzystaliśmy instrukcję INSERT INTO do wstawiania tylko jedno wiersza za jednym razem. Jest to trochę uciążliwy zabieg, gdy do zapisania mamy kilka danych. Oczywiście jak to zwykle bywa projektanci SQL’a pomyśleli również o tym.

Przykład wstawiania dwóch wierszy na raz:

Efekt:

ID Imie Nazwisko
1 Jan Kowalski
2 Null Nowak
3 Null Szczypczyk
4 anonim Null
5 Michał Jakubiak
6 Mikołaj Roznerski

Wstawianie danych z innej tabeli

W SQL można również wstawić dane bezpośrednio z innej tabeli. Wykonujemy to nieco modyfikując zapytanie SELECT:

, , , , , , , , ,