Skip to content

Latest commit

 

History

History
179 lines (122 loc) · 8.96 KB

File metadata and controls

179 lines (122 loc) · 8.96 KB

Бази даних. Основи PostgreSQL

Вступ

PSQL відноситься до реляційних СУБД (система управління базами даних), що означає, що в основі проектування та побудови даних лежать зв'язки між ними, і саме зв'язками між даними необхідно керуватися під час проектування баз даних.

Бази даних призначені для роботи з інформацією: зберігання та збереження, пошук та редагування даних, підпорядкованих якійсь структурі.

Найбільшою одиницею зберігання даних є база даних - набір таблиць, зв'язків між ними та інших елементів - тригерів, уявлень, тимчасових таблиць тощо.

в СУБД може бути скільки завгодно баз даних.

Основою однієї бази даних таблиця. Зовні вона нагадує табличку в екселі. У таблиці в "заголовку" знаходяться імена полів, а кожен "ряд", названий за теорією баз даних записом, містить один запис значення для кожного поля. Якщо таблиця Student, наприклад, містить імена студентів(name) та їх вік(age), то говорять, що у таблиці Student поля name і age. Кожен студент, записаний у таблицю, є одним записом, і виглядає це приблизно так:

Student

name age
Mark 21
Jeny 22
Tom 21

Розглянемо питання створення бази даних та таблиць детальніше.

Підключення до СУБД PostgreSQL

Якщо в системі встановлено СУБД PostgreSQL, можна запустити відповідну консольну програму PostgreSQL, яка дозволяє виконувати всі доступні операції з базами даних.

PostgreSQL не вміє працювати без бази даних. Ще до підключення до СУБД PostgreSQL необхідно створити їй базу даних або вибрати одну з існуючих. Для перегляду існуючих баз даних є зовнішня команда консолі:

➜ psql -l
                         List of databases
   Name    | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------+----------+---------+-------+-------------------
 postgres  | bandy | UTF8     | C       | C     |
 template0 | bandy | UTF8     | C       | C     | =c/bandy         +
 template1 | bandy | UTF8     | C       | C     | =c/bandy         +
 test      | bandy | UTF8     | C       | C     |
(4 rows)

Консольна команда для створення бази даних у PostgreSQL.

createdb test

Після цього підключаємося до неї:

psql test

Загальний вигляд команди підключення:

psql -U {{ user }} -d {{ dbname }} -h {{ host }}

Про всяк випадок вкажу команду створення спеціального користувача для роботи з PostgreSQL з усіма можливостями:

# Створення користувача з паролем
CREATE USER postgres WITH SUPERUSER PASSWORD 'password';
# Передача прав на основну настроювальну базу даних новому користувачу
ALTER DATABASE postgres OWNER TO postgres;
# (НЕБЕЗПЕЧНО) Видалення користувача, під яким зайшли (НЕБЕЗПЕЧНО)
DROP USER USER_NAME;

Створення баз даних та таблиць

Створення своєї бази даних зсередини консолі psql - справа нескладна:

create database test;
CREATE DATABASE

База создана. Переключимся в нее и добавим к ней первую табличку, тут будет немного посложнее:

\c test
You are now connected to database "test" as user "bandy".

create table cars(id serial, brand text not null);
CREATE TABLE

Типи даних у psql

Подивимося на результуючу таблицю:

\d cars
                            Table "public.cars"
 Column |  Type   | Collation | Nullable |             Default
--------+---------+-----------+----------+----------------------------------
 id     | integer |           | not null | nextval('cars_id_seq'::regclass)
 brand  | text    |           | not null |

Команда \d (скорочення від describe) з ім'ям таблиці виводить короткий опис таблиці.

Вибір бази даних, перегляд таблиць

Отже, ми в консолі psql. Переглянемо перелік наявних баз даних. Команда \l показує всі наявні та доступні вашому користувачеві бази даних.

Далі ми на прикладі вбудованої бази даних розберемося, як вибирати конкретну базу даних та знайомитись з її таблицями:

\c postgres
You are now connected to database "postgres" as user "bandy".

Командою c користувач говорить СУБД про те, що хоче працювати з базою даних postgres, однойменною з самою СУБД. Далі, аналогічно команді l для демонстрації доступних баз даних, застосовна команду \dt для демонстрації списку доступних таблиць.

Інші операції з таблицями та базами даних

Для зміни існуючої таблиці є команда alter table:

alter table cars add column model varchar(100) not null;
ALTER TABLE

\d cars
                                    Table "public.cars"
 Column |          Type          | Collation | Nullable |             Default
--------+------------------------+-----------+----------+----------------------------------
 id     | integer                |           | not null | nextval('cars_id_seq'::regclass)
 brand  | text                   |           | not null |
 model  | character varying(100) |           | not null |

Ми додали до таблиці машин колонку із моделлю машини, використавши команду alter table. Тим самим шляхом видалимо цю колонку:

alter table cars drop column model;
ALTER TABLE
\d cars
                            Table "public.cars"
 Column |  Type   | Collation | Nullable |             Default
--------+---------+-----------+----------+----------------------------------
 id     | integer |           | not null | nextval('cars_id_seq'::regclass)
 brand  | text    |           | not null |

Команда alter table досить складна, але багато що дозволяє. Команда, як і при створенні таблиці, дозволяє додавати і видаляти колонки, змінювати їх різними способами, додавати на них різні індекси, вішати ключі на таблиці і видаляти їх і так далі.

Для видалення таблиць є дві цікаві команди:

drop table з ім'ям таблиці просто видаляє таблицю. truncate table з ім'ям таблиці видаляє лише вміст таблиці, не змінюючи її структури. Serial, якщо він є, зберігатиме своє значення, але є можливість скинути його в нуль, додавши параметр RESTART IDENTITY:

TRUNCATE fattable RESTART IDENTITY;

База даних видаляється командою drop database з ім'ям таблиці та крапкою коми в кінці.

Корисні посилання

Домашнє завдання

Наступний Урок