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ć?
W SQL do zapisywania nowych informacji w wybranej wcześniej tabeli używamy polecenia INSERT ... INTO ... VALUES ...
. Przyjrzyjmy się jego ogólnej składni:
INSERT INTO nazwaTabeli (kolumna1, kolumna2, itd) VALUES (wartosc1, wartosc2, itd);
lub:
INSERT INTO nazwaTabeli VALUES (wartosc);
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:
INSERT INTO tab1 (ID, Imie, Nazwisko) VALUES ('1', 'Jan', 'Kowalski');
Efekt:
ID | Imie | Nazwisko |
1 | Jan | Kowalski |
Możemy oczywiście zrezygnować na przykład z podania imienia:
INSERT INTO tab1 (ID, Nazwisko) VALUES ('2', 'Nowak');
Efekt:
ID | Imie | Nazwisko |
1 | Jan | Kowalski |
2 | Null | Nowak |
Istnieje również możliwość jawnego wstawienia wartości NULL
:
INSERT INTO tab1 (ID, Imie, Nazwisko) VALUES ('3', NULL, 'Szczypczyk');
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:
ALTER TABLE tab1 ALTER COLUMN imie SET DEFAULT 'anonim';
MySQL:
ALTER TABLE tab1 ALTER Imie SET DEFAULT 'anonim';
Teraz kiedy dla kolumny Imie
nie podamy żadnej wartości domyślnie zostanie wstawione słowo „anonim”.
Można to oczywiście zrobić jawnie:
INSERT INTO tab1 (ID, Imie) VALUES ('4', DEFAULT);
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:
INSERT INTO tab1 (ID, Imie, Nazwisko) VALUES ('5', 'Michał', 'Jakubiak'), ('6', 'Mikołaj', 'Roznerski');
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:
SELECT * INTO tabelaDoKtorejWstawiamyDane FROM tabelaZktorejPobieramyDane;
Korzystasz tylko z MySQL?
Planujesz wrócić do pisania o SQL?
Na dniach będę startował z serią o Javie, potem planuję kolejne materiały na temat trochę innego zagadnienia, a dalszych planów nie mam. Możliwe, że wrócę do tematyki baz danych ale czy konkretnie do SQL to zobaczymy.
Super!
Masz już jakiś plan na serię Javy? Będziesz opisywał sam język czy frameworki np. Hibernate, Spring?
Artykuły już są w zasadzie gotowe. Będzie to cykl wpisów poruszający zagadnienia wymagane do zaliczenia egzaminu certyfikacyjnego OCAJP I. W skrócie opis tego jak zachowuje się Java w różnych „niestandardowych” sytuacjach.