Установка PostgreSQL на Ubuntu 18.04



Инструкция по установке объектно-реляционной СУБД PostgreSQL на виртуальный сервер под управлением Ubuntu 18.04.

Что это такое?


PostgreSQL - реляционная СУБД, с дополнительным набором объектно-ориентированных функций. Postgres предлагает существенную дополнительную мощность за счет включения следующих четырех дополнительных базовых концепций, благодаря которым пользователи могут легко расширить систему: классы, наследование, типы, функции. Дополнительные функции обеспечивают гибкость: ограничения, триггеры, правила, целостность транзакций.


Роль в Postgres это учетная запись для авторизации, в ней неразличимы группы и пользователи.

Установка и подключение


Для установки необходимо обновить локальную базу пакетов:
sudo apt update
sudo apt upgrade
Установите PostgreSQL:
sudo apt install postgresql postgresql-contrib
После установки у вас появится пользователь postgres, добавьте его в группу sudo:
usermod -a -G sudo postgres
Установите пароль пользователю:
passwd postgres
Подключитесь от имени пользователя postgres:
sudo -i -u postgres
Для подключения к СУБД PostgreSQL, наберите:
psqlpsql -c "ALTER USER postgres WITH PASSWORD 'новый_пароль';"
Для выхода используйте команду:
\q

Создание новой роли


На текущий момент в системе есть только роль postgres для подключения к СУБД. Для создания роли используйте следующую команду:
sudo -u postgres createuser --interactive
Необходимо задать следующие параметры - имя пользователя, привилегии суперпользователя, возможность создания БД, возможность создания ролей:
Enter name of role to add: cloud
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n

Создание новой базы данных


Если вы работаете в системе как пользователь postgres, введите следующую команду:
createdb <имя_БД>
Например:
createdb cloudBase
Если вы подключены к другой учетной записи, введите:
sudo -u postgres createdb <имя_БД>
Например:
sudo -u postgres createdb cloudBase

Открытие приглашения Postgres с новой ролью


Создайте одноименного с ролью пользователя Ubuntu, введя информацию:
sudo adduser <имя_роли>
Например:
sudo adduser cloud
Пример системных сообщений:
Adding user `cloud' ...
Adding new group `cloud' (1001) ...
Adding new user `cloud' (1001) with group `cloud' ...
Creating home directory `/home/cloud' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for cloud
Enter the new value, or press ENTER for the default
        Full Name []: Ivan
        Room Number []: 100
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y
Для подключения используйте следующую команду:
sudo -u <роль> psql <имя_БД>
Например:
sudo -u cloud psql cloudBase

Создание и удаление таблиц


В общем случае команда для создания таблицы PostgreSQL выглядит следующим образом:
CREATE TABLE table_name (
column_name1 col_type (field_length) column_constraints,
column_name2 col_type (field_length),
column_name3 col_type (field_length)
);
Для проверки сформируйте таблицу:
CREATE TABLE playground (
equip_id serial PRIMARY KEY,
type varchar (50) NOT NULL,
color varchar (25) NOT NULL,
location varchar(25) check (location in ('north''south''west''east''northeast''southeast''southwest''northwest')),
install_date date
);


Эта команда создает таблицу описи игрового оборудования. Первый столбец - идентификатор оборудования, которое имеет тип serial. Этот тип данных является счетчиком. Также в этом столбце ограничение первичного ключа, которое задает условия для значений - уникальность и наличие значения.


Следующие две строки создают столбцы для типа оборудования и его цвета соответственно, каждый из которых не может быть пустым. После этого следует строка создания столбца местоположения с ограничением, на возможное значение. Последняя команда создает столбец даты, в который будет записана дата, когда вы установили оборудование.


Для двух столбцов, equip_id и install_date, не определена длина поля, так как некоторые типы данных не требуют жесткого указания длины, поскольку она подразумевается типом.


Для просмотра таблицы введите:
\d
Результат:
List of relations
 Schema |          Name           |   Type   | Owner
--------+-------------------------+----------+-------
 public | playground              | table    | cloud
 public | playground_equip_id_seq | sequence | cloud
(2 rows)

Добавление, выбор и удаление данных из таблицы
В качестве примера добавьте тестовые данные в созданную таблицу:
INSERT INTO playground (type, color, location, install_date) VALUES ('slide''blue''south''2017-04-28');
INSERT INTO playground (type, color, location, install_date) VALUES ('swing''yellow''northwest''2018-08-16');
Для просмотра содержимого всей таблицы используйте команду:
SELECT * FROM playground;
Результат:
 equip_id | type  | color  | location  | install_date
----------+-------+--------+-----------+--------------
        1 | slide | blue   | south     | 2017-04-28
        2 | swing | yellow | northwest | 2018-08-16
(2 rows) 

Удалить строку можно с помощью ключевого слова DELETE:
DELETE FROM playground WHERE type = 'slide';

Указанная команда удалит строку, в которой тип оборудования имеет значение slide.
Удаление и добавление столбцов таблицы


Для добавления столбца используйте следующую команду:
ALTER TABLE playground ADD last_maint date;
В результате таблица будет выглядеть следующим образом:
 equip_id | type  | color  | location  | install_date | last_maint
----------+-------+--------+-----------+--------------+------------
        2 | swing | yellow | northwest | 2018-08-16   |

Чтобы удалить столбец используйте команду:
ALTER TABLE playground DROP last_maint;

Обновление данных в таблице


Для обновление существующих записей используйте ключевое слово UPDATE:
UPDATE playground SET color = 'red' WHERE type = 'swing';
Данная команда изменяет значение поля цвет, где тип оборудования swing.

Комментарии

Популярные сообщения из этого блога

Права на папки и файлы (unix/chmod)

Автоматическое монтирование дисков и разделов в Linux или что такое fstab? Проблема Debian

Как подключить сетевой диск Windows в Linux