Pierwsze Kroki z PostgreSQL

Witaj w kursie PostgreSQL.
Tak.
Wchodzimy do świata baz danych.
Nie panikuj.
Baza danych to nie smok mieszkający pod serwerem.
Chociaż czasami zachowuje się podobnie.
PostgreSQL to jeden z najpotężniejszych i najbardziej szanowanych systemów baz danych na świecie.
Używają go programiści, firmy, startupy, banki, aplikacje webowe, API, dashboardy i prawdopodobnie przynajmniej jeden tajemniczy system, którego nikt nie dotyka, bo “działa, nie restartuj”.
W tym kursie nauczymy się PostgreSQL krok po kroku.
Bez magii.
Bez strasznego zrzutu teorii.
Bez “przeczytaj 900 stron dokumentacji i osiągnij oświecenie”.
Będziemy budować zrozumienie przez praktykę.
Dzisiaj zaczynamy od podstaw.
Czym jest PostgreSQL.
Jak działa.
Jak go zainstalować.
Jak otworzyć shell PostgreSQL.
Jak stworzyć bazę danych.
Jak stworzyć tabelę.
Jak wstawić dane.
Jak odczytać dane.
Małe kroki.
Prawdziwy postęp.
Bardzo bazodanowo.
Czego Się Nauczysz
W tej lekcji nauczysz się:
- czym jest PostgreSQL;
- czym jest baza danych;
- czym jest tabela;
- czym jest SQL;
- jak zainstalować PostgreSQL;
- jak uruchomić PostgreSQL;
- jak otworzyć
psql; - jak stworzyć pierwszą bazę danych;
- jak stworzyć pierwszą tabelę;
- jak wstawić dane;
- jak czytać dane przez
SELECT; - jak bezpiecznie wyjść z PostgreSQL.
Na końcu tej lekcji będziesz mieć działającą bazę PostgreSQL na swoim komputerze.
Nie tylko teorię.
Prawdziwą bazę danych.
Małą.
Świeżą.
Gotową do przechowywania danych.
Jak notes.
Ale z większą liczbą średników.
Czym Jest PostgreSQL?
PostgreSQL to relacyjny system zarządzania bazą danych.
Brzmi poważnie.
Bo jest poważne.
Ale idea jest prosta.
PostgreSQL przechowuje dane.
Możesz używać go do przechowywania:
- użytkowników;
- produktów;
- wpisów blogowych;
- zamówień;
- komentarzy;
- faktur;
- zadań;
- wiadomości;
- wszystkiego, co twoja aplikacja musi pamiętać.
Strona internetowa może zapomnieć rzeczy po odświeżeniu.
Baza danych pamięta.
To jej praca.
PostgreSQL jest bardzo dobry w pamiętaniu.
Czasem aż za dobry.
Usuwaj ostrożnie.
Czym Jest Baza Danych?
Baza danych to miejsce, gdzie dane są przechowywane w uporządkowany sposób.
Wyobraź sobie bazę danych jak cyfrową szafę.
W środku masz tabele.
Każda tabela przechowuje jeden typ informacji.
Na przykład:
Database: online_shop
Tables:
users
products
orders
Tabela users przechowuje użytkowników.
Tabela products przechowuje produkty.
Tabela orders przechowuje zamówienia.
Prosta idea.
Bardzo potężna.
Jak pudełka w garażu.
Tylko że PostgreSQL zwykle nie zapomina, gdzie położył śrubokręt.
Zwykle.
Czym Jest Tabela?
Tabela przechowuje dane w wierszach i kolumnach.
Przykład:
tabela users
id | name | email
---|--------|------------------
1 | Anna | anna@example.com
2 | Marco | marco@example.com
3 | Viktor | viktor@example.com
Każda kolumna opisuje typ danych.
Na przykład:
id;name;email.
Każdy wiersz to jeden rekord.
Jeden użytkownik.
Jeden produkt.
Jedno zamówienie.
Tabela jest jak arkusz kalkulacyjny.
Ale mocniejsza.
Bardziej uporządkowana.
Mniej podatna na zniszczenie przez przypadkowe przeciągnięcie komórki o drugiej w nocy.
Czym Jest SQL?
SQL oznacza Structured Query Language.
To język, którego używamy do rozmowy z bazami danych.
Przez SQL możemy powiedzieć:
SELECT * FROM users;
To znaczy:
Daj mi wszystkich użytkowników.
Możemy też powiedzieć:
INSERT INTO users (name, email)
VALUES ('Anna', 'anna@example.com');
To znaczy:
Dodaj nowego użytkownika.
SQL nie jest JavaScriptem.
SQL ma swój własny styl.
Swoje zasady.
Swój dramat.
Ale nie jest niemożliwy.
Nauczysz się go krok po kroku.
SQL jest jak dawanie instrukcji bardzo poważnemu bibliotekarzowi.
Jeśli instrukcja jest jasna, bibliotekarz daje ci dane.
Jeśli instrukcja jest zła, bibliotekarz cicho ocenia cię komunikatem błędu.
Instalacja PostgreSQL
Musisz mieć PostgreSQL zainstalowany w systemie.
Wybierz komendę dla swojej dystrybucji Linuxa.
Arch Linux
sudo pacman -S postgresql
Zainicjalizuj klaster bazy danych:
sudo -iu postgres initdb -D /var/lib/postgres/data
Uruchom PostgreSQL:
sudo systemctl enable --now postgresql
Sprawdź status:
systemctl status postgresql
Jeśli widzisz active (running), dobrze.
PostgreSQL żyje.
Prawdopodobnie już ocenia twój SQL.
Ubuntu lub Debian
sudo apt update
sudo apt install postgresql postgresql-contrib
Uruchom PostgreSQL:
sudo systemctl enable --now postgresql
Sprawdź status:
systemctl status postgresql
Fedora
sudo dnf install postgresql-server postgresql-contrib
Zainicjalizuj PostgreSQL:
sudo postgresql-setup --initdb
Uruchom PostgreSQL:
sudo systemctl enable --now postgresql
Sprawdź status:
systemctl status postgresql
Dobrze.
Teraz PostgreSQL powinien działać.
Jeśli nie działa, nie panikuj.
Instalacja bazy danych czasami zachowuje się jak kot wchodzący do pudełka.
Powinna działać.
Ale czasem potrzebuje zachęty.
Otwórz PostgreSQL przez psql
PostgreSQL ma narzędzie terminalowe o nazwie psql.
psql pozwala ci rozmawiać bezpośrednio z PostgreSQL.
Otwórz je tak:
sudo -iu postgres psql
Powinieneś zobaczyć coś takiego:
postgres=#
To znaczy, że jesteś w shellu PostgreSQL.
Gratulacje.
Teraz rozmawiasz bezpośrednio z bazą danych.
Używaj swoich mocy odpowiedzialnie.
Aby wyjść z psql, wpisz:
\q
Ważne:
Komendy PostgreSQL często potrzebują średnika:
SELECT version();
Ale specjalne komendy psql, takie jak \q, \l i \dt, nie potrzebują średników.
Tak.
Są dwa rodzaje komend.
Bo bazy danych lubią utrzymywać początkujących w gotowości.
Sprawdź Wersję PostgreSQL
W środku psql uruchom:
SELECT version();
Powinieneś zobaczyć informacje o wersji PostgreSQL.
To potwierdza, że PostgreSQL działa.
Właśnie zapytałeś bazę danych:
Kim jesteś?
I odpowiedziała.
Grzecznie.
Z nadmiarem informacji.
Wyświetl Bazy Danych
W środku psql uruchom:
\l
To wyświetla bazy danych.
Możesz zobaczyć bazy takie jak:
postgres
template0
template1
To są domyślne bazy danych.
Nie usuwaj ich.
Są ważne.
PostgreSQL stworzył je z powodów systemowych.
Kiedy PostgreSQL tworzy coś o nazwie template0, po prostu zostaw to w spokoju.
Ono wie rzeczy.
Stwórz Pierwszą Bazę Danych
Teraz stwórz swoją pierwszą bazę danych.
W środku psql uruchom:
CREATE DATABASE learning_postgresql;
Nie zapomnij średnika.
Jeśli wszystko działa, PostgreSQL powie:
CREATE DATABASE
Teraz ponownie wyświetl bazy danych:
\l
Powinieneś zobaczyć:
learning_postgresql
Gratulacje.
Stworzyłeś bazę danych.
Małe królestwo dla twoich danych.
Zamku jeszcze nie ma.
Ale mamy ziemię.
Połącz Się z Bazą Danych
Aby połączyć się z nową bazą danych, uruchom:
\c learning_postgresql
Powinieneś zobaczyć coś podobnego:
You are now connected to database "learning_postgresql"
Teraz prompt może się zmienić:
learning_postgresql=#
To znaczy, że pracujesz w swojej nowej bazie danych.
Dobrze.
Bądź ostrożny.
Teraz działasz w swoim królestwie danych.
Małym królestwie.
Ale liczy się.
Stwórz Pierwszą Tabelę
Teraz stwórz tabelę o nazwie students.
Uruchom:
CREATE TABLE students (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INTEGER,
email VARCHAR(150)
);
To tworzy tabelę z czterema kolumnami:
id;name;age;email.
Zrozummy to.
id SERIAL PRIMARY KEY
Tworzy automatycznie rosnący identyfikator.
PostgreSQL automatycznie nada każdemu wierszowi numer.
name VARCHAR(100) NOT NULL
Tworzy kolumnę tekstową dla imienia studenta.
NOT NULL oznacza, że imię jest wymagane.
Żadnych tajemniczych studentów bez imienia.
age INTEGER
Tworzy kolumnę liczbową.
email VARCHAR(150)
Tworzy kolumnę tekstową dla emaila.
Dobrze.
Mamy tabelę.
Szafa bazy danych dostała pierwszą szufladę.
Bardzo emocjonalne.
Dla baz danych.
Pokaż Tabele
Aby pokazać tabele w aktualnej bazie danych, uruchom:
\dt
Powinieneś zobaczyć:
students
Jeśli widzisz tę tabelę, dobrze.
Twoja tabela istnieje.
Jeśli jej nie widzisz, sprawdź:
- czy połączyłeś się z właściwą bazą danych?
- czy zakończyłeś
CREATE TABLEśrednikiem? - czy PostgreSQL pokazał błąd?
PostgreSQL zwykle mówi, co poszło nie tak.
Nie zawsze miło.
Ale mówi.
Wstaw Dane
Teraz dodajmy studentów.
Uruchom:
INSERT INTO students (name, age, email)
VALUES ('Anna', 22, 'anna@example.com');
PostgreSQL powinien powiedzieć:
INSERT 0 1
To znaczy, że jeden wiersz został wstawiony.
Teraz dodaj więcej studentów:
INSERT INTO students (name, age, email)
VALUES ('Marco', 28, 'marco@example.com');
INSERT INTO students (name, age, email)
VALUES ('Viktor', 33, 'viktor@example.com');
Teraz mamy dane.
Prawdziwe dane.
Niewiele danych.
Ale wystarczająco, żeby baza danych poczuła się użyteczna.
Jak dać notesowi pierwszą stronę.
Czytaj Dane przez SELECT
Aby odczytać wszystkich studentów, uruchom:
SELECT * FROM students;
Powinieneś zobaczyć coś podobnego:
id | name | age | email
---+--------+-----+-------------------
1 | Anna | 22 | anna@example.com
2 | Marco | 28 | marco@example.com
3 | Viktor | 33 | viktor@example.com
To twoje pierwsze zapytanie SQL.
Zrozummy je.
SELECT
znaczy:
Pobierz dane.
*
znaczy:
Wszystkie kolumny.
FROM students
znaczy:
Z tabeli students.
Więc:
SELECT * FROM students;
znaczy:
Pobierz wszystkie kolumny ze wszystkich studentów.
Prosto.
Potężnie.
Czasem zbyt potężnie.
W prawdziwych aplikacjach często unikasz SELECT *, jeśli nie potrzebujesz każdej kolumny.
Ale do nauki jest idealne.
Wybierz Konkretne Kolumny
Możesz wybrać tylko niektóre kolumny:
SELECT name, email FROM students;
Wynik:
name | email
-------+-------------------
Anna | anna@example.com
Marco | marco@example.com
Viktor| viktor@example.com
To jest przydatne, gdy nie potrzebujesz wszystkich danych.
Może potrzebujesz imion i emaili.
Nie wieku.
Więc prosisz tylko o imiona i emaile.
PostgreSQL lubi precyzyjne prośby.
Ludzie też.
Zwykle.
Słowa Kluczowe SQL
Możesz zauważyć, że słowa kluczowe SQL są pisane wielkimi literami:
SELECT * FROM students;
Ale to też działa:
select * from students;
SQL jest w większości niewrażliwy na wielkość liter dla słów kluczowych.
Ale pisanie słów kluczowych wielkimi literami sprawia, że zapytania są czytelniejsze.
Dlatego w tym kursie będziemy pisać:
SELECT
FROM
WHERE
INSERT
UPDATE
DELETE
To nie jest obowiązkowe.
Ale to dobry nawyk.
Dobre nawyki sprawiają, że przyszłe debugowanie jest mniej bolesne.
Nie bezbolesne.
Mniej bolesne.
Średniki Mają Znaczenie
W SQL komendy zwykle kończą się średnikiem:
SELECT * FROM students;
Jeśli zapomnisz średnika, psql czeka na dalszy input.
Przykład:
SELECT * FROM students
Wtedy prompt może się zmienić i czekać.
Możesz zakończyć komendę, wpisując:
;
To klasyczny moment początkującego.
Myślisz, że PostgreSQL się zawiesił.
A on tylko czeka.
Jak kelner, który nie odchodzi, bo nie skończyłeś zdania.
Przydatne Komendy psql
Oto kilka przydatnych komend psql:
\l
Wyświetla bazy danych.
\c database_name
Łączy z bazą danych.
\dt
Pokazuje tabele.
\d table_name
Pokazuje strukturę tabeli.
Przykład:
\d students
\q
Wychodzi z psql.
Te komendy nie są SQL.
To specjalne komendy psql.
Dlatego zaczynają się od \.
Backslash to twoja terminalowa różdżka.
Bardzo mała różdżka.
Sprawdź Strukturę Tabeli
Uruchom:
\d students
Powinieneś zobaczyć strukturę tabeli.
Pokaże kolumny, typy i ograniczenia.
Możesz zobaczyć coś takiego:
id | integer
name | character varying(100)
age | integer
email | character varying(150)
To pomaga sprawdzić tabelę.
Bardzo użyteczne, kiedy zapomnisz, co stworzyłeś.
A zapomnisz.
Wszyscy zapominają.
Bazy danych pamiętają.
Ludzie udają.
Typowe Błędy
Zapomnienie Średnika
Źle:
SELECT * FROM students
Poprawnie:
SELECT * FROM students;
Komendy SQL zwykle potrzebują ;.
Mały symbol.
Duże znaczenie.
Jak ostatnia śrubka w półce.
Brak Połączenia z Właściwą Bazą
Możesz stworzyć tabelę w jednej bazie, a potem szukać jej w innej.
Przykład:
\c postgres
\dt
Możesz nie zobaczyć tabeli students.
Dlaczego?
Bo stworzyłeś ją w:
learning_postgresql
Połącz się z powrotem:
\c learning_postgresql
\dt
Teraz tabela się pojawi.
Bazy danych są osobnymi światami.
Nie szukaj swoich skarpetek w domu sąsiada.
Mylenie SQL i Komend psql
To jest SQL:
SELECT * FROM students;
To jest komenda psql:
\dt
Komendy SQL zwykle kończą się ;.
Komendy psql zwykle nie.
Różne narzędzia.
Ten sam terminal.
Lekka dezorientacja.
Normalne.
Zapomnienie Cudzysłowów dla Tekstu
Źle:
INSERT INTO students (name, age, email)
VALUES (Anna, 22, anna@example.com);
Poprawnie:
INSERT INTO students (name, age, email)
VALUES ('Anna', 22, 'anna@example.com');
Wartości tekstowe potrzebują pojedynczych cudzysłowów.
Liczby nie.
PostgreSQL jest surowy.
Jak księgowy z klawiaturą.
Praktyka
Stwórz nową tabelę o nazwie books.
Powinna mieć:
id;title;author;year_published.
Przykład:
CREATE TABLE books (
id SERIAL PRIMARY KEY,
title VARCHAR(150) NOT NULL,
author VARCHAR(100),
year_published INTEGER
);
Wstaw trzy książki:
INSERT INTO books (title, author, year_published)
VALUES ('Clean Code', 'Robert C. Martin', 2008);
Potem odczytaj wszystkie książki:
SELECT * FROM books;
Potem odczytaj tylko tytuły:
SELECT title FROM books;
To pomoże ci przećwiczyć:
- tworzenie tabel;
- wstawianie wierszy;
- czytanie wierszy;
- wybieranie kolumn.
Praktyka ma znaczenie.
PostgreSQL nie wchodzi do głowy tylko przez oczy.
Potrzebujesz palców.
Klawiatury.
Błędów.
I może kawy.
Mini Wyzwanie
Stwórz bazę danych o nazwie:
personal_library
W środku stwórz tabelę o nazwie:
books
Tabela powinna przechowywać:
- tytuł książki;
- autora;
- kategorię;
- rok publikacji.
Dodaj przynajmniej pięć książek.
Potem uruchom:
SELECT * FROM books;
Bonus:
Wybierz tylko:
title, author
To proste.
Ale to już prawdziwa struktura bazy danych.
Mała baza.
Prawdziwa koncepcja.
Duży krok.
Podsumowanie
Dzisiaj nauczyłeś się:
- PostgreSQL przechowuje dane;
- baza danych zawiera tabele;
- tabele zawierają wiersze i kolumny;
- SQL służy do rozmowy z bazami danych;
psqlpozwala używać PostgreSQL z terminala;CREATE DATABASEtworzy bazę danych;\cłączy z bazą danych;CREATE TABLEtworzy tabelę;INSERT INTOdodaje dane;SELECTczyta dane;\dtwyświetla tabele;\d table_namepokazuje strukturę tabeli;- średniki mają znaczenie.
To mocny początek.
Masz teraz zainstalowany PostgreSQL.
Stworzyłeś bazę danych.
Stworzyłeś tabelę.
Wstawiłeś dane.
Wybrałeś dane.
To już jest główny rytm baz danych:
Stwórz strukturę.
Włóż dane.
Wyciągnij dane.
Wszystko inne buduje się na tym.
Bardzo powoli.
Bardzo potężnie.
Bardzo PostgreSQL.
Następna Lekcja
W następnej lekcji dowiemy się więcej o bazach danych i tabelach.
Popatrzymy głębiej na:
- kolumny;
- wiersze;
- projektowanie tabel;
- nazewnictwo;
- podstawową organizację danych;
- dlaczego struktura ma znaczenie.
Bo zły projekt tabeli jest jak bałagan w garażu.
Na początku wygląda dobrze.
Potem pewnego dnia potrzebujesz jednego kabla.
I wszystko się zawala.