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

Вітаю в курсі PostgreSQL.
Так.
Ми заходимо у світ баз даних.
Не панікуй.
База даних — це не дракон, який живе під сервером.
Хоча іноді вона поводиться саме так.
PostgreSQL — одна з найпотужніших і найповажніших систем баз даних у світі.
Її використовують розробники, компанії, стартапи, банки, вебзастосунки, API, dashboard-и і, напевно, хоча б одна загадкова система, яку ніхто не наважується чіпати, бо “працює — не перезапускай”.
У цьому курсі ми будемо вивчати PostgreSQL крок за кроком.
Без магії.
Без страшної теорії одним шматком.
Без “прочитай 900 сторінок документації й досягни просвітлення”.
Ми будемо будувати розуміння через практику.
Сьогодні починаємо з основ.
Що таке PostgreSQL.
Як він працює.
Як його встановити.
Як відкрити shell PostgreSQL.
Як створити базу даних.
Як створити таблицю.
Як вставити дані.
Як прочитати дані.
Маленькі кроки.
Справжній прогрес.
Дуже базоданно.
Що Ти Вивчиш
У цій лекції ти вивчиш:
- що таке PostgreSQL;
- що таке база даних;
- що таке таблиця;
- що таке SQL;
- як встановити PostgreSQL;
- як запустити PostgreSQL;
- як відкрити
psql; - як створити першу базу даних;
- як створити першу таблицю;
- як вставити дані;
- як читати дані через
SELECT; - як безпечно вийти з 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
Кожна колонка описує тип даних.
Наприклад:
id;name;email.
Кожен рядок — це один запис.
Один користувач.
Один товар.
Одне замовлення.
Таблиця схожа на електронну таблицю.
Але сильніша.
Більш структурована.
І менш імовірно, що її знищить хтось, випадково перетягнувши комірку о другій ночі.
Що Таке 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;name;age;email.
Розберімо це.
id SERIAL PRIMARY KEY
Створює автоматично зростаючий ідентифікатор.
PostgreSQL автоматично дасть кожному рядку номер.
name VARCHAR(100) NOT NULL
Створює текстову колонку для імені студента.
NOT NULL означає, що імʼя обовʼязкове.
Жодних загадкових студентів без імені.
age INTEGER
Створює числову колонку.
email VARCHAR(150)
Створює текстову колонку для email.
Добре.
Тепер у нас є таблиця.
Шафа бази даних отримала свою першу шухляду.
Дуже емоційно.
Для баз даних.
Покажи Таблиці
Щоб показати таблиці в поточній базі даних, виконай:
\dt
Ти маєш побачити:
students
Якщо бачиш цю таблицю — добре.
Твоя таблиця існує.
Якщо не бачиш, перевір:
- чи ти підключився до правильної бази даних?
- чи закінчив команду
CREATE TABLEкрапкою з комою? - чи PostgreSQL показав помилку?
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.
Вона має мати:
id;title;author;year_published.
Приклад:
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 зберігає дані;
- база даних містить таблиці;
- таблиці містять рядки й колонки;
- SQL використовується для розмови з базами даних;
psqlдозволяє використовувати PostgreSQL з термінала;CREATE DATABASEстворює базу даних;\cпідключає до бази даних;CREATE TABLEстворює таблицю;INSERT INTOдодає дані;SELECTчитає дані;\dtпоказує таблиці;\d table_nameпоказує структуру таблиці;- крапки з комою мають значення.
Це сильний початок.
Тепер у тебе встановлений PostgreSQL.
Ти створив базу даних.
Ти створив таблицю.
Ти вставив дані.
Ти вибрав дані.
Це вже основний ритм баз даних:
Створи структуру.
Поклади дані всередину.
Дістань дані назовні.
Усе інше будується на цьому.
Дуже повільно.
Дуже потужно.
Дуже PostgreSQL.
Наступна Лекція
У наступній лекції ми глибше розберемо бази даних і таблиці.
Подивимось на:
- колонки;
- рядки;
- проєктування таблиць;
- назви;
- базову організацію даних;
- чому структура має значення.
Бо поганий дизайн таблиці — це як безлад у гаражі.
Спочатку здається, що все нормально.
Потім одного дня тобі потрібен один кабель.
І все падає.