← Back to course

Pierwsze Kroki z PostgreSQL

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ę:

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:

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:

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:

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ź:

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ć:

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ć:

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ć:

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ę:

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:

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.