Do tej pory pokazywałem działanie PostgreSQL na danych, które były już w testowej bazie, jednak trzeba wiedzieć jak dane do tabel dodawać. Dlatego też w tym wpisie przedstawię pierwszą część użycia Inserta.
SQL Insert Nieco Teorii…
Sam schemat Inserta jest raczej oczywisty. Potrzebna jest tabela, do której dane mają zostać dodane, oczywiście konieczne jest umieszczenie danych dokładnie w takiej kolejności, w jakiej zostały utworzone w tabeli.
Tłumacząc poniższy schemat, będzie tak: dodaj do nazwa_tabeli do konkretnych kolumn, wartości z nawiasów. Zarówno kolumny, jak i wartości oddzielone zostają przecinkiem.
1 2 |
INSERT INTO nazwa_tabeli(kolumna1, kolumna2, …) VALUES (wartosc1, wartosc2, …); |
Jednak są dodatkowe rzeczy, które warto znać, dodaje się je zawsze po VALUES.
I tak:
1 2 |
RETURNING *; - wyświetli wszystkie dodane pozycje w Insert. RETURNING id; - wyświetli tylko id dodanego wpisu. |
Przykłady, Przykłady…
Na początek utwórz nową tabelę, która będzie nazywała się searchengine, będzie zawierała kilka kolumn: id, url, name, description, update.
Na początek tabela zostanie usunięta, jeżeli oczywiście istnieje, następnie ponownie zostanie utworzona z ww. kolumnami.
1 2 3 4 5 6 7 |
DROP TABLE IF EXISTS searchengine; CREATE TABLE searchengine ( id SERIAL PRIMARY KEY, url VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, description VARCHAR (255), update DATE ); |
Pierwsze dodanie danych do nowo utworzonej tabeli.
1 |
INSERT INTO searchengine (url, name) VALUES('https://google.com','Google'); |
Po poprawnym, dodaniu rekordu, otrzymasz poniższą odpowiedź.
Przy pomocy SELECT * FROM searchengine; wyświetli się poniższa informacja.
Jak widzisz, INSERT automatycznie dodał null tam, gdzie nie miał danych do wprowadzenia.
Przy poniższym dodaniu danych do tabeli użyj RETURNING id, dzięki, czemu wyświetli się w odpowiedzi id nowo dodanego rekordu.
1 2 3 |
INSERT INTO searchengine (url, name) VALUES('bing.com','Bing') RETURNING id; |
Teraz po ponownym wykonaniu SELECT * FROM searchengine; pojawi się taki widok.
Jak widzisz, id ma wartość 2, ponieważ jest to drugi w kolei rekord w tej tabeli.
Jednak takie podejście nie jest zbyt optymalne, czy można lepiej? Tak możesz za jednym wywołaniem Insert, dodać kilka rekordów do tabeli. Poniżej przykład takiego podejścia, oczywiście możesz użyć RETURNING id;
1 2 3 4 5 |
INSERT INTO searchengine (url, name) VALUES ('https://www.yahoo.com','Yahoo'), ('https://www.DuckDuckGo.com','DuckDuckGo') RETURNING id; |
Jak widzisz bez żadnych zmian w szablonie INSERT, możesz dodać jednorazowo kilka rekordów. RETURNING pokazał dwa nowe rekordy, natomiast SELECT * FROM searchengine; wszystkie obecne rekordy w tabeli.
Podsumowanie
Widzisz, że INSERT nie jest trudny, nie jest również niebezpieczny, ponieważ modyfikuje co prawda tabelę, ale nie dane, które już wcześnie tam były. Bardziej niebezpieczne jest używanie UPDATE, o czym w kolejnym wpisie.
Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.
Link do formularza tutaj: https://beitadmin.pl/pomysly
Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).