← Back to course

Перші Кроки з PostgreSQL

Перші Кроки з PostgreSQL

Вітаю в курсі PostgreSQL.

Так.

Ми заходимо у світ баз даних.

Не панікуй.

База даних — це не дракон, який живе під сервером.

Хоча іноді вона поводиться саме так.

PostgreSQL — одна з найпотужніших і найповажніших систем баз даних у світі.

Її використовують розробники, компанії, стартапи, банки, вебзастосунки, API, dashboard-и і, напевно, хоча б одна загадкова система, яку ніхто не наважується чіпати, бо “працює — не перезапускай”.

У цьому курсі ми будемо вивчати PostgreSQL крок за кроком.

Без магії.

Без страшної теорії одним шматком.

Без “прочитай 900 сторінок документації й досягни просвітлення”.

Ми будемо будувати розуміння через практику.

Сьогодні починаємо з основ.

Що таке PostgreSQL.

Як він працює.

Як його встановити.

Як відкрити shell PostgreSQL.

Як створити базу даних.

Як створити таблицю.

Як вставити дані.

Як прочитати дані.

Маленькі кроки.

Справжній прогрес.

Дуже базоданно.

Що Ти Вивчиш

У цій лекції ти вивчиш:

Наприкінці цієї лекції в тебе буде робоча база PostgreSQL на твоєму компʼютері.

Не тільки теорія.

Справжня база даних.

Маленька.

Свіжа.

Готова зберігати дані.

Як блокнот.

Але з більшою кількістю крапок з комою.

Що Таке PostgreSQL?

PostgreSQL — це реляційна система керування базами даних.

Звучить серйозно.

Бо це серйозно.

Але ідея проста.

PostgreSQL зберігає дані.

Ти можеш використовувати його, щоб зберігати:

Вебсторінка може забути речі після оновлення.

База даних памʼятає.

Це її робота.

PostgreSQL дуже добре памʼятає.

Іноді занадто добре.

Видаляй обережно.

Що Таке База Даних?

База даних — це місце, де дані зберігаються організовано.

Уяви базу даних як цифрову шафу.

Всередині шафи є таблиці.

Кожна таблиця зберігає один тип інформації.

Наприклад:

Database: online_shop

Tables:
  users
  products
  orders

Таблиця users зберігає користувачів.

Таблиця products зберігає товари.

Таблиця orders зберігає замовлення.

Ідея проста.

Дуже потужна.

Як коробки в гаражі.

Тільки PostgreSQL зазвичай не забуває, куди поклав викрутку.

Зазвичай.

Що Таке Таблиця?

Таблиця зберігає дані в рядках і колонках.

Приклад:

таблиця users

id | name   | email
---|--------|------------------
1  | Anna   | anna@example.com
2  | Marco  | marco@example.com
3  | Viktor | viktor@example.com

Кожна колонка описує тип даних.

Наприклад:

Кожен рядок — це один запис.

Один користувач.

Один товар.

Одне замовлення.

Таблиця схожа на електронну таблицю.

Але сильніша.

Більш структурована.

І менш імовірно, що її знищить хтось, випадково перетягнувши комірку о другій ночі.

Що Таке SQL?

SQL означає Structured Query Language.

Це мова, яку ми використовуємо для розмови з базами даних.

Через SQL ми можемо сказати:

SELECT * FROM users;

Це означає:

Дай мені всіх користувачів.

Можемо також сказати:

INSERT INTO users (name, email)
VALUES ('Anna', 'anna@example.com');

Це означає:

Додай нового користувача.

SQL — це не JavaScript.

SQL має свій стиль.

Свої правила.

Свою драму.

Але це не неможливо.

Ти вивчиш його крок за кроком.

SQL — це як давати інструкції дуже серйозному бібліотекарю.

Якщо інструкція чітка, бібліотекар дає тобі дані.

Якщо інструкція неправильна, бібліотекар мовчки засуджує тебе повідомленням про помилку.

Встановлення PostgreSQL

Тобі потрібно встановити PostgreSQL у системі.

Вибери команду для своєї Linux-дистрибуції.

Arch Linux

sudo pacman -S postgresql

Ініціалізуй database cluster:

sudo -iu postgres initdb -D /var/lib/postgres/data

Запусти PostgreSQL:

sudo systemctl enable --now postgresql

Перевір статус:

systemctl status postgresql

Якщо бачиш active (running), добре.

PostgreSQL живий.

І, можливо, вже оцінює твій SQL.

Ubuntu або Debian

sudo apt update
sudo apt install postgresql postgresql-contrib

Запусти PostgreSQL:

sudo systemctl enable --now postgresql

Перевір статус:

systemctl status postgresql

Fedora

sudo dnf install postgresql-server postgresql-contrib

Ініціалізуй PostgreSQL:

sudo postgresql-setup --initdb

Запусти PostgreSQL:

sudo systemctl enable --now postgresql

Перевір статус:

systemctl status postgresql

Добре.

Тепер PostgreSQL має працювати.

Якщо ні — не панікуй.

Встановлення бази даних іноді поводиться як кіт, який заходить у коробку.

Має працювати.

Але іноді потребує заохочення.

Відкрий PostgreSQL через psql

PostgreSQL має термінальний інструмент під назвою psql.

psql дозволяє напряму розмовляти з PostgreSQL.

Відкрий його так:

sudo -iu postgres psql

Ти маєш побачити щось таке:

postgres=#

Це означає, що ти всередині shell PostgreSQL.

Вітаю.

Тепер ти напряму розмовляєш із базою даних.

Використовуй свої сили відповідально.

Щоб вийти з psql, введи:

\q

Важливо:

Команди PostgreSQL часто потребують крапки з комою:

SELECT version();

Але спеціальні команди psql, такі як \q, \l і \dt, не потребують крапки з комою.

Так.

Є два типи команд.

Бо бази даних люблять тримати початківців у тонусі.

Перевір Версію PostgreSQL

Всередині psql виконай:

SELECT version();

Ти маєш побачити інформацію про версію PostgreSQL.

Це підтверджує, що PostgreSQL працює.

Ти щойно запитав базу даних:

Хто ти?

І вона відповіла.

Ввічливо.

З надлишком інформації.

Покажи Бази Даних

Всередині psql виконай:

\l

Це показує список баз даних.

Ти можеш побачити бази типу:

postgres
template0
template1

Це стандартні бази даних.

Не видаляй їх.

Вони важливі.

PostgreSQL створив їх з системних причин.

Коли PostgreSQL створює щось під назвою template0, просто залиш це в спокої.

Воно знає речі.

Створи Першу Базу Даних

Тепер створи свою першу базу даних.

Всередині psql виконай:

CREATE DATABASE learning_postgresql;

Не забудь крапку з комою.

Якщо все працює, PostgreSQL скаже:

CREATE DATABASE

Тепер знову покажи бази даних:

\l

Ти маєш побачити:

learning_postgresql

Вітаю.

Ти створив базу даних.

Маленьке королівство для твоїх даних.

Замку ще немає.

Але земля вже є.

Підключися до Бази Даних

Щоб підключитися до нової бази даних, виконай:

\c learning_postgresql

Ти маєш побачити щось схоже:

You are now connected to database "learning_postgresql"

Тепер prompt може змінитися:

learning_postgresql=#

Це означає, що ти працюєш всередині своєї нової бази даних.

Добре.

Будь обережний.

Тепер ти дієш у своєму королівстві даних.

Маленькому королівстві.

Але це рахується.

Створи Першу Таблицю

Тепер створи таблицю з назвою students.

Виконай:

CREATE TABLE students (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  age INTEGER,
  email VARCHAR(150)
);

Це створює таблицю з чотирма колонками:

Розберімо це.

id SERIAL PRIMARY KEY

Створює автоматично зростаючий ідентифікатор.

PostgreSQL автоматично дасть кожному рядку номер.

name VARCHAR(100) NOT NULL

Створює текстову колонку для імені студента.

NOT NULL означає, що імʼя обовʼязкове.

Жодних загадкових студентів без імені.

age INTEGER

Створює числову колонку.

email VARCHAR(150)

Створює текстову колонку для email.

Добре.

Тепер у нас є таблиця.

Шафа бази даних отримала свою першу шухляду.

Дуже емоційно.

Для баз даних.

Покажи Таблиці

Щоб показати таблиці в поточній базі даних, виконай:

\dt

Ти маєш побачити:

students

Якщо бачиш цю таблицю — добре.

Твоя таблиця існує.

Якщо не бачиш, перевір:

PostgreSQL зазвичай каже, що пішло не так.

Не завжди мʼяко.

Але каже.

Встав Дані

Тепер додамо студентів.

Виконай:

INSERT INTO students (name, age, email)
VALUES ('Anna', 22, 'anna@example.com');

PostgreSQL має сказати:

INSERT 0 1

Це означає, що один рядок було вставлено.

Тепер додай ще студентів:

INSERT INTO students (name, age, email)
VALUES ('Marco', 28, 'marco@example.com');
INSERT INTO students (name, age, email)
VALUES ('Viktor', 33, 'viktor@example.com');

Тепер у нас є дані.

Справжні дані.

Небагато даних.

Але достатньо, щоб база даних відчула себе корисною.

Як дати блокноту першу сторінку.

Читай Дані через SELECT

Щоб прочитати всіх студентів, виконай:

SELECT * FROM students;

Ти маєш побачити щось схоже:

id |  name  | age |       email
---+--------+-----+-------------------
1  | Anna   | 22  | anna@example.com
2  | Marco  | 28  | marco@example.com
3  | Viktor | 33  | viktor@example.com

Це твій перший SQL-запит.

Розберімо його.

SELECT

означає:

Отримай дані.
*

означає:

Усі колонки.
FROM students

означає:

З таблиці students.

Отже:

SELECT * FROM students;

означає:

Отримай усі колонки з усіх студентів.

Просто.

Потужно.

Іноді занадто потужно.

У реальних застосунках часто уникають SELECT *, якщо не потрібні всі колонки.

Але для навчання це ідеально.

Вибери Конкретні Колонки

Можна вибрати тільки деякі колонки:

SELECT name, email FROM students;

Результат:

 name  |       email
-------+-------------------
 Anna  | anna@example.com
 Marco | marco@example.com
 Viktor| viktor@example.com

Це корисно, коли тобі не потрібні всі дані.

Можливо, тобі потрібні імена й email.

А не вік.

Тому ти просиш тільки імена й email.

PostgreSQL цінує точні запити.

Люди теж.

Зазвичай.

SQL Keywords

Ти можеш помітити, що SQL keywords пишуться великими літерами:

SELECT * FROM students;

Але це також працює:

select * from students;

SQL здебільшого не чутливий до регістру для keywords.

Але писати keywords великими літерами робить запити читабельнішими.

Тому в цьому курсі ми будемо писати:

SELECT
FROM
WHERE
INSERT
UPDATE
DELETE

Це не обовʼязково.

Але це хороша звичка.

Хороші звички роблять майбутній debugging менш болючим.

Не безболісним.

Менш болючим.

Крапки з Комою Мають Значення

В SQL команди зазвичай закінчуються крапкою з комою:

SELECT * FROM students;

Якщо забути крапку з комою, psql чекатиме продовження.

Приклад:

SELECT * FROM students

Після цього prompt може змінитися й чекати.

Можеш завершити команду, ввівши:

;

Це класичний момент початківця.

Ти думаєш, що PostgreSQL завис.

А він просто чекає.

Як офіціант, який не йде, бо ти не закінчив речення.

Корисні Команди psql

Ось кілька корисних команд psql:

\l

Показати бази даних.

\c database_name

Підключитися до бази даних.

\dt

Показати таблиці.

\d table_name

Показати структуру таблиці.

Приклад:

\d students
\q

Вийти з psql.

Ці команди не є SQL.

Це спеціальні команди psql.

Тому вони починаються з \.

Backslash — це твоя термінальна чарівна паличка.

Дуже маленька паличка.

Перевір Структуру Таблиці

Виконай:

\d students

Ти маєш побачити структуру таблиці.

Вона покаже колонки, типи й обмеження.

Можеш побачити щось таке:

id    | integer
name  | character varying(100)
age   | integer
email | character varying(150)

Це допомагає перевірити таблицю.

Дуже корисно, коли забуваєш, що створив.

А ти забудеш.

Усі забувають.

Бази даних памʼятають.

Люди вдають.

Типові Помилки

Забути Крапку з Комою

Неправильно:

SELECT * FROM students

Правильно:

SELECT * FROM students;

SQL-команди зазвичай потребують ;.

Маленький символ.

Велике значення.

Як останній гвинт у полиці.

Не Підключитися до Правильної Бази

Можна створити таблицю в одній базі, а потім шукати її в іншій.

Приклад:

\c postgres
\dt

Ти можеш не побачити таблицю students.

Чому?

Бо ти створив її в:

learning_postgresql

Підключися назад:

\c learning_postgresql
\dt

Тепер таблиця зʼявиться.

Бази даних — це окремі світи.

Не шукай свої шкарпетки в будинку сусіда.

Плутати SQL і Команди psql

Це SQL:

SELECT * FROM students;

Це команда psql:

\dt

SQL-команди зазвичай закінчуються ;.

Команди psql зазвичай ні.

Різні інструменти.

Той самий термінал.

Легка плутанина.

Нормально.

Забути Лапки для Тексту

Неправильно:

INSERT INTO students (name, age, email)
VALUES (Anna, 22, anna@example.com);

Правильно:

INSERT INTO students (name, age, email)
VALUES ('Anna', 22, 'anna@example.com');

Текстові значення потребують одинарних лапок.

Числа — ні.

PostgreSQL суворий.

Як бухгалтер з клавіатурою.

Практика

Створи нову таблицю з назвою books.

Вона має мати:

Приклад:

CREATE TABLE books (
  id SERIAL PRIMARY KEY,
  title VARCHAR(150) NOT NULL,
  author VARCHAR(100),
  year_published INTEGER
);

Встав три книги:

INSERT INTO books (title, author, year_published)
VALUES ('Clean Code', 'Robert C. Martin', 2008);

Потім прочитай усі книги:

SELECT * FROM books;

Потім прочитай тільки назви:

SELECT title FROM books;

Це допоможе тобі потренувати:

Практика має значення.

PostgreSQL не входить у мозок тільки через очі.

Потрібні пальці.

Клавіатура.

Помилки.

І, можливо, кава.

Мінічелендж

Створи базу даних з назвою:

personal_library

Всередині створи таблицю з назвою:

books

Таблиця має зберігати:

Додай щонайменше пʼять книг.

Потім виконай:

SELECT * FROM books;

Бонус:

Вибери тільки:

title, author

Це просто.

Але це вже справжня структура бази даних.

Маленька база.

Справжня концепція.

Великий крок.

Підсумок

Сьогодні ти вивчив:

Це сильний початок.

Тепер у тебе встановлений PostgreSQL.

Ти створив базу даних.

Ти створив таблицю.

Ти вставив дані.

Ти вибрав дані.

Це вже основний ритм баз даних:

Створи структуру.

Поклади дані всередину.

Дістань дані назовні.

Усе інше будується на цьому.

Дуже повільно.

Дуже потужно.

Дуже PostgreSQL.

Наступна Лекція

У наступній лекції ми глибше розберемо бази даних і таблиці.

Подивимось на:

Бо поганий дизайн таблиці — це як безлад у гаражі.

Спочатку здається, що все нормально.

Потім одного дня тобі потрібен один кабель.

І все падає.