PostgreSQL поддерживает все основные операционные системы. Процесс установки прост, поэтому я постараюсь рассказать о нем как можно быстрее.
Загрузить установщик можно с веб-сайта EDB. EDB больше не предоставляет пакеты для систем GNU/Linux. Вместо этого они рекомендуют вам использовать диспетчер пакетов твоего дистрибутива.
Установщики включают в себя разные компоненты, вот самые важные из них:
- Сервер PostgreSQL (очевидно)
- pgAdmin, графический инструмент для управления базами данных
- Менеджер пакетов для загрузки и установки дополнительных инструментов и драйверов
Windows
Скачав установщик, запустите его как любой другой исполняемый файл. Процесс довольно прямолинеен, но некоторые вещи все же заслуживают внимания.
Диалоговое окно «Выбрать компоненты» позволяет выборочно устанавливать компоненты. Если у вас нет веской причины что-то менять — оставляйте все как есть.

По умолчанию PostgreSQL создает суперпользователя с именем postgres (воспринимайте его как учетную запись администратора сервера базы данных).
Во время установки вам нужно будет указать пароль для суперпользователя (root).
Позже вы сможете создать других пользователей и назначать им отдельные доступы и роли, а сейчас понадобится учетная запись суперпользователя, чтобы начать использовать СУБД.

Чтобы запустить сервер разработки на вашем компьютере или localhost, необходимо назначить ему порт.
Порт по умолчанию — 5432. Если вы устанавливаете PostgreSQL впервые, то он скорее всего свободен. Если окажется, что этот порт уже занят другим экземпляром PostgreSQL, вы можете указать другое значение, например 5433.

После завершения установки вы сможете запустить SQL Shell, поставляемый с Postgres.
Шаг за шагом вы выберете сервер, какую базу данных использовать, порт, имя пользователя и пароль.
Используйте данные, которые вы вводили на предыдущих шагах.

Поздравляю! Настройка для Windows завершена, и теперь базу можно полноценно использовать.
GNU/Linux
Изначально POSTGRE был разработан под Linux, впоследствии епо портировали и на Windows. Его можно найти в репозиториях большинства дистрибутивов Linux. Я буду описывать установку для UBUNTU/DEBIAN. На остальных версиях Linux все делается аналогично, разнятся только команды установки.
|
1 |
sudo apt-get install postgresql |
Запуск оболочки PostgreSQL
После установки PostgreSQL, нужно запустить оболочку(shell), с помощью которой вы получите возможность управлять базой данных. Открыть терминал можно командой:
|
1 |
psql -U postgres |
psql — это оболочка Postgres, аргумент -U используется для указания пользователя.
Поскольку вы еще не создавали других пользователей, вы войдете в систему как суперпользователь postgres.
После этого нужно будет ввести пароль суперпользователя, который вы выбрали во время установки.
Как только пароль установлен, база данных PostgreSQL готова к работе!
Если сервер PostgreSQL по какой-то причине не запускается, можно попробовать запустить его вручную.
|
1 |
sudo systemctl start postgres |
Понимание модели клиент-сервер
Я уже упоминал PostgreSQL Server как важный компонент базы данных. Но что такое сервер в этом контексте и зачем он нам нужен?
Для начала необходимо понимать модель клиент-сервер.
Почти все СУБД (PostgreSQL, MySQL и другие) следуют клиент-серверной модели. В ней база данных находится на сервере, и клиент отправляет запросы на сервер, который их обрабатывает.
Под клиентом здесь подразумевается бекэнд нашего приложения, а запросы в — это SQL операции, такие как SELECT, INSERT, UPDATE и DELETE.

Для разработки любого бекэнда, тебе нужен локальный сервер для экспериментов и тестирования. Этот локальный сервер аналогичен удаленному, но работает прямо на вашем компьютере.
С точки зрения клиента удаленный и локальный сервер идентичны. После разработки и тестирования вы можете заставить свой продукт взаимодействовать с удаленным сервером вместо локального, просто изменив пару параметров.
Некоторые базы данных не используют эту модель, например SQLite, которая хранит все в простом файле на диске. Это хорошо работает для небольших приложений, но для большинства реальных приложений тебе понадобится архитектура клиент-сервер.
Мета-команды PostgreSQL
Теперь, когда вы все настроили и готовы приступить к работе с базой данных, осталось разобрать несколько мета-команд. Это не SQL запросы, а команды специфичные для PostgreSQL.
В других системах управления базами данных есть их аналоги, но их синтаксис немного отличается.
Всем мета-командам предшествует обратная косая черта \, за которой следует фактическая команда.
Список всех баз данных
Чтобы получить список всех баз данных на сервере, ты можешь использовать команду \l.
На данный момент мы пока ничего не создали, а базы данных которые мы видим на экране — создаются по умолчанию при установке Postgres.
- postgres — это просто пустая база данных.
- «template0» и «template1» — это служебные базы данных, которые служат шаблоном для создания новых баз.
Вам пока не стоит беспокоиться о них. Если хочется изучить все детали, то посмотрите официальную документацию.
Подключаемся к базе данных PostgreSQL
Некоторые команды SQL требуют, чтобы вы сначала вошели в базу данных (например, для создания новой таблицы). Вы можете выбрать, в какую базу данных входить, при запуске SQL Shell.
Когда вы находитесь внутри оболочки (shell), то можно использовать команду \c (или \connect), за которой следует имя базы данных. Если бы у вас была другая база данных под названием hello_world, то подключиться к ней можно было бы так:
|
1 |
`\c hello_world |
Полностью в терминале у вас получится что-то такое (похожее):
|
1 2 3 |
postgres=# \c hello_world You are now connected to database "hello_world" as user "postgres". hello_world=# |
Обрати внимание, что приглашение оболочки изменилось с postgres на hello_world. Это значит, что теперь ты подключен к базе данных hello_world, а не postgres.
Получить список всех таблиц в базе данных
Как и в случае со списком существующих баз данных, ты можешь получить список таблиц внутри конкретной базы данных с помощью команды \dt.
Перед выполнением этой команды вам необходимо войти в базу данных.
Предположим, ты уже находишься внутри базы hello_world, и в ней есть таблица с именем my_table. Набрав \dt, ты получишь следующее:
|
1 2 3 4 |
List of relations Schema | Name | Type | Owner --------+----------+-------+---------- public | my_table | table | postgres |
Ты можешь увидеть имя таблицы и некоторую другую информацию, такую как схема (мы обсудим схемы в более сложных руководствах) и владельца.
Владелец (owner) — это пользователь, который создал таблицу.
Если ты создаешь других пользователей и используешь их для создания таблиц, то в последнем столбце будут именно они.
Список пользователей и ролей
Как ты уже знаешь, при установке Postgres создается суперпользователь с именем postgres. Список всех пользователей базы данных можно вывести на экран используя команду \dg.
|
1 2 3 4 |
List of roles Role name | Attributes | Member of ------------+------------------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} |
Обратите внимание, что первый столбец называется — роль (role name). И весь вывод на экран называется “список ролей” (List of roles), а не список пользователей.
В PostgreSQL пользователи и роли практически одинаковы.
У ролей есть атрибуты, которые определяют их разрешения, такие как создание баз данных или даже создание других новых ролей.
Любая роль с атрибутом LOGIN может рассматриваться, как пользователь.
Здесь мы видим только одну роль, суперпользователя по умолчанию.
В реальном мире все будет иначе, потому что использовать только суперпользователя все время опасно. Вместо этого создают другие роли с меньшими привилегиями. Это гарантирует, что никто не совершит нежелательных действий по ошибке.
Если у одной из ролей есть доступ только на чтение данных, то с помощью этой роли будет невозможно удалить таблицу или поле.
Твой первый SQL оператор
Наконец, мы все настроили и готовы к работе и знаем основные мета-команды, специфичные для PostgreSQL.
Теперь приступим к изучению языка запросов SQL.
Вот несколько базовых примеров, чтобы разобраться в структурированном языке запросов и получить представление о SQL. А более подробно мы рассмотрим операции CRUD это в следующей статье.
Создание новой базы данных
Первое, что вам нужно узнать при изучении баз данных, — это как создать базу данных. Создать базу можно сделать с помощью команды CREATE DATABASE, за которой следует имя базы данных:
|
1 |
CREATE DATABASE store; |
Команды и ключевые слова SQL обычно пишутся в верхнем регистре.
На самом деле это не является обязательным требованием, и обычно они нечувствительны к регистру.
То есть вы могли бы написать:
|
1 |
create database store; |
И все сработало бы нормально.
Но при написании операторов SQL обычно предпочтительнее прописные буквы. Это хорошая практика, потому что она может помочь вам визуально отличить ключевые слова SQL от других частей оператора, таких как имена таблиц и столбцов.
Заметьте, что все стандартные команды в PostgreSQL должны заканчиваться точкой с запятой ;. Это часть стандарта.
Для мета-команд PostgreSQL точка с запятой не нужна.
Создание таблиц
После того как вы создали новую базу данных, можно приступать к созданию таблиц.
Но, для начала, подключимся к новой базе данных с помощью команды \c, за которой следует имя базы данных:
|
1 |
\c store |
Теперь, когда мы подключены к базе данных (обратите внимание, что приглашение оболочки SQL теперь включает имя активной базы данных), мы готовы создать свою первую таблицу.
Таблица создается с помощью команды CREATE TABLE, за которой следует список столбцов таблицы и их типы данных в круглых скобках:
Это создаст таблицу под названием products, которая содержит 3 столбца:
idтипаINT(целое число)nameтипаTEXT(строка)quantityтакже типаINT
После создания таблицы перейдем к добавлению данных.
Вставка данных в таблицы PostgreSQL
Если вы раньше программировали на каком-либо языке программирования, вы должны быть знакомы с концепцией типов данных. Аналогично, SQL может хранить различные типы данных. Каждому столбцу в таблице присваивается определенный тип данных при создании таблицы. Все строки в таблице должны содержать данные одного типа для этого столбца. В Postgres встроена поддержка множества различных типов данных. Некоторые из них являются базовыми, в то время как другие более специализированы. Вы можете ознакомиться с документацией по типам данных, чтобы найти полный список. В следующей таблице перечислены основные и наиболее часто используемые типы данных:
Basic data types in PostgreSQL
| Name | Alias | Definition |
|---|---|---|
| integer | int, int4 | signed four-byte integer |
| smallint | int2 | signed two-byte integer |
| bigint | int8 | signed eight-byte integer |
| serial | auto-incrementing integer | |
| double precision | float8 | double precision floating-point number (8 bytes) |
| boolean | bool | logical Boolean (true/false) |
| character(n) | char(n) | fixed-length character string of length n |
| text | variable-length character string |
Вы можете указать тип данных столбца, используя имя или псевдоним. Псевдонимы поддерживаются по историческим причинам и для обратной совместимости. Как вы видели в предыдущей статье, типы данных указываются во время создания таблицы после названия каждого столбца:
|
1 2 3 4 5 6 |
CREATE TABLE products ( id INTEGER, name TEXT, price DOUBLE PRECISION, quantity INTEGER ) |
Вы можете добавить в таблицу дополнительные столбцы по своему усмотрению. В этих руководствах я стремлюсь показать вам, что вы можете делать с SQL. Что вы с этим делаете и как вы это делаете, полностью зависит от вас. На самом деле, вы не должны воспринимать это как набор инструкций, которым нужно следовать. Вместо этого было бы лучше разработать свои решения для структурирования базы данных, таблиц и связей между ними. Это поможет вам приобрести ценные навыки проектирования баз данных и научиться ориентироваться в официальной документации, чтобы найти то, что вам нужно.
Чтобы добавить данные в таблицу, используют команду INSERT INTO следующим образом:
|
1 |
INSERT INTO products (id, name, quantity) VALUES (1, 'first product', 20); |
Посмотрим на команду INSERT INTO подробнее:
- Команда
INSERT INTOозначает, что вы собираетесь вставить новые данные products— это имя таблицы в базе данных, в которую мы хотим вставить данные(id, name, quantity)— это список столбцов в нашей таблице, разделенных запятыми. Нам не нужно указывать все столбцы (иначе какой в смысл?). В некоторых случаях вы хотите выборочно вставлять данные в некоторые столбцы. Остальные столбцы будут автоматически заполнены значениями по умолчанию.VALUES (1, 'first product', 20)— это фактические данные, которые будут вставлены в таблицу. «1» — этоid, «first product» — этоname, «20» — этоquantity.
Выборка данных из SQL таблицы
Теперь, когда вы добавили в таблицу первую запись, вы можете использовать SQL для получения содержимого таблицы.
Выборка данных осуществляется с помощью команды SELECT, и это выглядит следующим образом:
|
1 |
SELECT id, name, quantity FROM products; |
Мы используем команду SELECT. За ней следует список столбцов, которые мы хотим получить.
Затем мы используем команду FROM, чтобы указать, из какой таблицы брать данные. На этот раз это таблица products.
|
1 2 3 |
id | name | quantity ---+---------------+---------- 1 | first product | 50 |
Для ситуаций когда ты хочешь выбрать все столбцы которые есть в таблице, ты можешь поставить звездочку вместо списка полей.
|
1 |
SELECT * FROM products; |
Звездочка означает: выбрать все столбцы. Результат останется прежним.
Вы должены обратить внимание на то, как команда SELECT выбирает столбцы и строки. Столбцы указываются в виде списка и разделяются запятыми. Затем команда переходит к выбору запрошенных строк.
Если условия не указаны (как в этом случае), будут выбраны все строки в таблице.
Позже мы увидим, как использовать условия с командой WHERE для создания эффективных запросов.
Обновление данных в PostgreSQL
Представьте, что вы запустили свое потрясающее приложение для магазина и получили первый заказ на один из продуктов.
Первое, что нужно сделать — это обновить доступное количество в вашем инвентаре, чтобы в дальнейшем у вас не возникли проблемы с отсутствием товара на складе.
Для обновления данных вы можете использовать команду UPDATE:
|
1 |
UPDATE products SET quantity=49 WHERE id=1; |
Давайте разберемся с тем как работает UPDATE.
Начинаем мы с ключевого слова UPDATE, за которым следует имя таблицы.
Затем мы используем SET, чтобы установить новые значения для наших столбцов.
После SET — пишем имена столбцов, которые хотим обновить.
За ними — знак равенства и новое обновленное значение.
Также вы можете обновить сразу несколько столбцов, разделив их запятыми:
|
1 |
UPDATE products SET name='new name', quantity=49 WHERE id=1; |
Но стоп, какие строки обновляются этой командой?
Вы уже должны были догадаться об этом. Чтобы указать, какие строки следует обновить новыми значениями, мы используем команду WHERE, за которым следует условие.
В этом случае мы сопоставляем строки, используя их столбец id, и обновляем строку с id 1.
Удаление данных из SQL таблицы
Теперь рассмотрим случай, когда вы прекратили продажу определенного продукта и захотели полностью удалить его из своей базы данных.
Для этого можно использовать команду DELETE:
|
1 |
DELETE FROM products WHERE id=1; |
Как и при обновлении данных, чтобы определить, какие именно строки мы хотим удалить, нам нужно условие WHERE.
Удаление таблиц в PostgreSQL
Если вдруг вы решили изменить структуру базы и для этого нужно удалить всю таблицу, то вам подойдет команда DROP TABLE:
|
1 |
DROP TABLE products; |
Это приведет к удалению всей таблицы products из базы данных.
На быть очень остороженым с командой DELETE!
Я бы не позавидовал тому, кто “случайно” удалит не ту таблицу из базы данных, насколько я знаю восстановить ее можно, пока не наступили физические изменения базы, потом никак
Удаление баз данных PostgreSQL
Точно так же ты можешь удалить из системы всю базу данных:
|
1 |
DROP DATABASE store; |
По материалам: Databases, Roles, and Tables in PostgreSQL