pgAdmin для начинающих
В данной работе показаны начальные приемы работы с pgAdmin
Примечание 1: ЛКМ, ПКМ — левая, правая кнопка мыши
Вопросы:
01 Установка PostgreSQL и PgAdmin
02 Создание базы данных в правильной кодировке
03 Создание таблиц в pgAdmin
04 Создание столбцов
05 PgAdmin — первичный ключ в PostgreSQL
06 Создание базовых колонок
07 Код таблицы DDL в PostgreSQL
08 Поле ID Autoincrement
09 Создание Foreign key – внешний ключ
10 Взаимодействие через внешний ключ
11 pgAdmin — добавление тестовых данных вручную
01 Установка PostgreSQL и PgAdmin — https://www.postgresql.org/download/
Вместе с PostgreSQL уставливается и PgAdmin
Во время установки задаем пароль суперпользователя (мастер-пароль) базы данных.
Locale — English, United States
Проверить установку PostgreSQL можно так: в Windows находим Службы и в них
проверяем наличие службы PostgreSQL.
Служба_PostgreSQL.png
После установки PgAdmin появляется в меню
Пуск>Все программы>PostgreSQL(N)
При запуске программы нужно указать мастер-пароль, который
вы указывали при установке.
Также этот пароль понадобится при заходе в базу данных.
Проверка кодировки
Открываем Database > ПКМ на postgres > Properties > Definition
Параметр Encoding = UTF8
Важно обратить внимание на этот параметр и именно поэтому
мы выбирали локаль
Locale — English, United States
Если у вас кодировка UTF-8, то у вас будет меньше проблем
с экспортом и импортом данных.
Проверка_кодировки.png
02 Создание базы данных в правильной кодировке
Если кодировка вашей системы отличается от UTF-8:
вы все равно сможете создать свою базу c UTF-8
ПКМ На Databases > Create > Database
Во вкладке Definition можно вручную выбрать
Encoding — UTF — 8
Иногда система может потребовать использовать шаблон template0,
тогда его вы тоже можете выбрать в этой вкладке:
База_данных_в_ UTF-8.png
Также вам может потребоваться перенести все ваши таблицы
из старой базы в новую, это вы можете сделать через меню
Tools в верхней части программы — комады Backup и Restore
03 Создание таблиц в pgAdmin
На примере базы данных postgres находим Tables,
ПКМ > Create > Table
Создать_таблицу.png
Задаем название таблицы, эти названия не должны
пересекаться с ключевыми словами баз данных, иначе могут быть
неожиданности, Owner — postgres, в комментариях указываем
назначение таблицы и другую полезную информацию.
Если после создания таблица не отобразилась в списке Tables,
можно обновить данные
ПКМ на Tables > Refresh
Для примера создадим несколько таблиц:
category, priority, task, user_data
04 Создание столбцов
Создать столбцы можно двумя способами,
Кликаем на таблицу ПКМ > Properties > Columns
(можно создать сразу несколько колонок) или
Кликаем на таблицу ПКМ > Create > Column
(создаем по одной колонке)
Создать_колонки.png
Добавим следующие колонки в таблицу user_data:
почта — обязательное значение
пароль — обязательное значение
имя — обязательное значение
Колонки_для_user_data.png
После сохранения колонок можно сделать
ПКМ на таблице > Refresh
и увидеть наши колонки, развернув таблицу и подраздел
Columns.
Для редактирования колонок в дальнейшем
мы точно также делаем:
ПКМ на таблице > Properties > Columns
и в окне, где показаны все столбцы кликаем на значок
редактирования слева от нужного столбца.
05 PgAdmin — первичный ключ в PostgreSQL
В таблице user_data создаем новое поле id типа bigint
(аналог long в Java). Добавляем полю параметр Not Null и
primary key.
id_первичный_ключ.png
Когда мы накладываем ограничение Primary key
в поле id мы можем сохранять только уникальные значения.
Все остальные поля в строке могут быть одинаковыми,
важно, чтобы id был разный. Столбец с Primary key
чаще всего обозначается PK
id_разный.png
06 Создание базовых колонок
Заполните колонками таблицу task:
title — text — not null
completed — numeric — not null
task_date — timestamp without time zone
id — bigint — not null — Primary key
Увидеть результат создания можно так:
Делаем Refresh, через ПКМ на таблице > Refresh
и разворачиваваем таблицу ЛКМ до колонок
Вид_колонок.png
Заполните столбцами таблицу priority:
title — text — not null
color — text — not null
id — bigint — not null — primary key
Заполните столбцами таблицу category:
title — text — not null
id — bigint — not null — primary key
07 Код таблицы DDL в PostgreSQL
Мы создали таблицы в pgAdmin средствами самой программы,
вводя в поля нужные значения и используя переключатели.
Тоже самое можно сделать с помощью
DDL – Data Definition Language (язык описания данных)
Это так называемый SQL запрос для создания таблицы.
Мы можем посмотреть этот код (в режиме чтения), выбрав слева
нужную таблицу, а справа, соотвестствующую вкладку.
В дальнейшем вам нужно научиться создавать таблицы и тем
и другим способом
Код_создания_таблицы.png
08 Поле ID Autoincrement
Автоинкременент или автоматическая нумерация —
это автоматическое увеличение значения в колонке
(чаще всего id) средствами самой базы данных.
Это удобно и часто используется. Программист думает
о заполнении таблицы данными, а нумерацию
делает сама БД.
Давайте отредактируем настройки
наших таблиц и настроим столбец id на автонумерацию.
Автонумерация.png
Для этого как обычно:
ПКМ на названии таблицы > Properties > Columns
Слева от поля id нажимаем значок редактирования,
во вкладке Constraints выбираем Type — IDENTITY,
а Identity — ALWAYS.
После сохранения можно закрыть окно,
перейти во вкладу SQL и посмотреть как изменился
код, который задает создание столбца id.
id_автонумерация.png
Теперь он будет автоматически менять свое значение
при каждом добавлении новой строки с данными.
09 Создание Foreign key – внешний ключ
Foreign key — внешний ключ или можно сказать ссылка на другую таблицу.
Попробуем сделать ссылки из таблицы task на таблицу category и
priority. Смысл этих ссылок — это выражение в таблице,
какая категория у задачи и какой приоритет.
Создаем ключ (поле, столбец, колонку) category_id на таблицу category
и поле id через вкладку Columns и сохраняем его.
Пока поле никуда не ссылается
ПКМ на task > Properties > Columns
Создаем_category_id.png
Следующим шагом заходим в Ограничения и выбираем Внешние ключи
ПКМ на task > Properties > Constraints > Foreign Key
Вводим название Ограничения — category_fkey, далее редактируем это поле
(значок карандаша слева), вкладка Columns,
Local column — указываем нашу колонку — category_id
поле References — надо указать таблицу, на которую ссылаемся
поле Referencing — указываем колонку на которую ссылаемся
Далее нажимаем «+» на уровне Columns и Save.
Связываем_ключ_с_таблицей.png
После закрытия окна, во вкладке SQL можем наблюдать
изменения в коде создания — CONSTRAINT category_fkey.
Теперь при создании очередной строки в task мы должны указывать
только существующие id из таблицы category иначе строку создать не
получится.
10 Взаимодействие через внешний ключ
Давайте добавим внешние ключи для остальных таблиц в pgAdmin.
Начнем с колонки priority_id. Делаем все тоже самое, создаем и сохраняем
сохраняем внешний ключ, потом «привязываем» его к другой таблице.
Тоже самое делаем с таблицей user_data. В таблице task создаем
для неё ключ user_id. Этот ключ должен содержать параметр not null.
Задание должно иметь владельца, иначе оно бессмысленно.
Также это значит, что мы не можем добавить данные в таблицу task
без заполнения таблицы user.
Для таблицы task в pgAdmin должно получиться что-то такое:
task_внешние_ключи.png
В таблице category должны храниться все назначенные категории
всеми пользователями, поэтому в таблице category тоже нужно сделать
внешний ключ на таблицу пользователей. Таблицу priority
связываем с таблицей user_data аналогичным способом.
11 PgAdmin — добавление тестовых данных вручную
После выстраивания всей системы базы данных бывает полезно проверить
правильность настроек добавлением некторого количества тестовых данных.
Для этого сначала заполняем данными таблицу user_data,
т.к. от неё зависят все остальные. Для этого:
заполнение_данными.png
ПКМ на user_data > View/Edit Data > All Rows
и заполняем ячейки вручную в правой нижней части окна
согласно ограничениям, которые мы вписали для этой таблицы
(например id не заполняем, он заполняется автоматически).
После внесения нескольких тестовых пользователей,
их данные можно использовать в других таблицах.
После user_id мы заполняем несколько значений в category и
priority, а потом на основании этих трех таблиц мы можем
сделать несколько тестовых строк в task
в pgAdmin У нас есть возможность каскадно удалять данные.
Если мы хотим удалить в user_data всех пользователей
и удалить все данные в остальных таблицах, которые ссылаются
на эту таблицу мы можем сделать так:
ПКМ на user_data > Truncate > Truncate Cascade
Примечание 2: Спасибо вам за проявленный интерес к данной работе
Вы можете форкнуть данную работу и дополнить или исправить
что-то по своему усмотрению (переделать под себя).
Установка
Когда вы изучаете новый язык, самым важным аспектом является практика. Одно дело – прочитать статью и совсем другое – применить полученную информацию. Давайте начнем с установки базы данных на компьютер.
Первый шаг – установить SQL
Мы будем использовать PostgreSQL (Postgres) – достаточно распространенный SQL диалект. Для этого откроем страницу загрузки, выберем операционную систему (в моем случае Windows), и запустим установку. Если вы установите пароль для вашей базы данных, постарайтесь сразу не забыть его, он нам дальше понадобится. Поскольку наша база будет локальной, можете использовать простой пароль, например: admin.
Следующий шаг – установка pgAdmin
pgAdmin – это графический интерфейс пользователя (GUI – graphical user interface), который упрощает взаимодействие с базой данных PostgreSQL. Перейдите на страницу загрузки, выберите вашу операционную систему и следуйте указаниям (в статье используется Postgres 14 и pgAdmin 4 v6.3.).
После установки обоих компонентов открываем pgAdmin и нажимаем Add new server
. На этом шаге установится соединение с существующим сервером, именно поэтому необходимо сначала установить Postgres. Я назвал свой сервер home
и использовал пароль, указанный при установке.
Теперь всё готово к созданию таблиц. Давайте создадим набор таблиц, которые моделируют школу. Нам необходимы таблицы: ученики, классы, оценки. При создании модели данных необходимо учитывать, что в одном классе может быть много учеников, а у ученика может быть много оценок (такое отношение называется «один ко многим»).
Мы можем создать таблицы напрямую в pgAdmin, но вместо этого мы напишем код, который можно будет использовать в дальнейшем, например, для пересоздания таблиц. Для создания запроса, который создаст наши таблицы, нажимаем правой кнопкой мыши на postgres (пункт расположен в меню слева home
→ Databases (1)
→ postgres
и далее выбираем Query Tool
.
Начнем с создания таблицы классов (classrooms
). Таблица будет простой: она будет содержать идентификатор id
и имя учителя – teacher.
Напишите следующий код в окне запроса (query tool
) и запустите (run
или F5
).
DROP TABLE IF EXISTS classrooms CASCADE;
CREATE TABLE classrooms (
id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
teacher VARCHAR(100)
);
В первой строке фрагмент DROP TABLE IF EXISTS classrooms
удалит таблицу classrooms
, если она уже существует. Важно учитывать, что Postgres, не позволит нам удалить таблицу, если она имеет связи с другими таблицами, поэтому, чтобы обойти это ограничение (constraint
) в конце строки добавлен оператор CASCADE
. CASCADE
– автоматически удалит или изменит строки из зависимой таблицы, при внесении изменений в главную. В нашем случае нет ничего страшного в удалении таблицы, поскольку, если мы на это пошли, значит мы будем пересоздавать всё с нуля, и остальные таблицы тоже удалятся.
Добавление DROP TABLE IF EXISTS
перед CREATE TABLE
позволит нам систематизировать схему нашей базы данных и создать скрипты, которые будут очень удобны, если мы захотим внести изменения – например, добавить таблицу, изменить тип данных поля и т. д. Для этого нам просто нужно будет внести изменения в уже готовый скрипт и перезапустить его.
Ничего нам не мешает добавить наш код в систему контроля версий. Весь код для создания базы данных из этой статьи вы можете посмотреть по ссылке.
Также вы могли обратить внимание на четвертую строчку. Здесь мы определили, что колонка id
является первичным ключом (primary key
), что означает следующее: в каждой записи в таблице это поле должно быть заполнено и каждое значение должно быть уникальным. Чтобы не пришлось постоянно держать в голове, какое значение id
уже было использовано, а какое – нет, мы написали GENERATED ALWAYS AS IDENTITY
, этот приём является альтернативой синтаксису последовательности (CREATE SEQUENCE
). В результате при добавлении записей в эту таблицу нам нужно будет просто добавить имя учителя.
И в пятой строке мы определили, что поле teacher
имеет тип данных VARCHAR
(строка) с максимальной длиной 100 символов. Если в будущем нам понадобится добавить в таблицу учителя с более длинным именем, нам придется либо использовать инициалы, либо изменять таблицу (alter table
).
Теперь давайте создадим таблицу учеников (students
). Новая таблица будет содержать: уникальный идентификатор (id
), имя ученика (name
), и внешний ключ (foreign key
), который будет указывать (references
) на таблицу классов.
DROP TABLE IF EXISTS students CASCADE;
CREATE TABLE students (
id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
name VARCHAR(100),
classroom_id INT,
CONSTRAINT fk_classrooms
FOREIGN KEY(classroom_id)
REFERENCES classrooms(id)
);
И снова мы перед созданием новой таблицы удаляем старую, если она существует, добавляем поле id
, которое автоматически увеличивает своё значение и имя с типом данных VARCHAR
(строка) и максимальной длиной 100 символов. Также в эту таблицу мы добавили колонку с идентификатором класса (classroom_id
), и с седьмой по девятую строку установили, что ее значение указывает на колонку id
в таблице классов (classrooms
).
Мы определили, что classroom_id
является внешним ключом. Это означает, что мы задали правила, по которым данные будут записываться в таблицу учеников (students
). То есть Postgres на данном этапе не позволит нам вставить строку с данными в таблицу учеников (students
), в которой указан идентификатор класса (classroom_id
), не существующий в таблице classrooms
. Например: у нас в таблице классов 10 записей (id
с 1 до 10), система не даст нам вставить данные в таблицу учеников, у которых указан идентификатор класса 11 и больше.
INSERT INTO students
(name, classroom_id)
VALUES
('Matt', 1);
/*
ERROR: insert or update on table "students" violates foreign
key constraint "fk_classrooms"
DETAIL: Key (classroom_id)=(1) is not present in table
"classrooms".
SQL state: 23503
*/
Теперь давайте добавим немного данных в таблицу классов (classrooms
). Так как мы определили, что значение в поле id
будет увеличиваться автоматически, нам нужно только добавить имена учителей.
INSERT INTO classrooms
(teacher)
VALUES
('Mary'),
('Jonah');
SELECT * FROM classrooms;
/*
id | teacher
-- | -------
1 | Mary
2 | Jonah
*/
Прекрасно! Теперь у нас есть записи в таблице классов, и мы можем добавить данные в таблицу учеников, а также установить нужные связи (с таблицей классов).
INSERT INTO students
(name, classroom_id)
VALUES
('Adam', 1),
('Betty', 1),
('Caroline', 2);
SELECT * FROM students;
/*
id | name | classroom_id
-- | -------- | ------------
1 | Adam | 1
2 | Betty | 1
3 | Caroline | 2
*/
Но что же случится, если у нас появится новый ученик, которому ещё не назначили класс? Неужели нам придется ждать, пока станет известно в каком он классе, и только после этого добавить его запись в базу данных?
Конечно же, нет. Мы установили внешний ключ, и он будет блокировать запись, поскольку ссылка на несуществующий id
класса невозможна, но мы можем в качестве идентификатора класса (classroom_id
) передать null
. Это можно сделать двумя способами: указанием null
при записи значений, либо просто передачей только имени.
-- явно определим значение NULL
INSERT INTO students
(name, classroom_id)
VALUES
('Dina', NULL);
-- неявно определим значение NULL
INSERT INTO students
(name)
VALUES
('Evan');
SELECT * FROM students;
/*
id | name | classroom_id
-- | -------- | ------------
1 | Adam | 1
2 | Betty | 1
3 | Caroline | 2
4 | Dina | [null]
5 | Evan | [null]
*/
И наконец, давайте заполним таблицу успеваемости. Этот параметр, как правило, формируется из нескольких составляющих – домашние задания, участие в проектах, посещаемость и экзамены. Мы будем использовать две таблицы. Таблица заданий (assignments
), как понятно из названия, будет содержать данные о самих заданиях, и таблица оценок (grades
), в которой мы будем хранить данные о том, как ученик выполнил эти задания.
DROP TABLE IF EXISTS assignments CASCADE;
DROP TABLE IF EXISTS grades CASCADE;
CREATE TABLE assignments (
id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
category VARCHAR(20),
name VARCHAR(200),
due_date DATE,
weight FLOAT
);
CREATE TABLE grades (
id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
assignment_id INT,
score INT,
student_id INT,
CONSTRAINT fk_assignments
FOREIGN KEY(assignment_id)
REFERENCES assignments(id),
CONSTRAINT fk_students
FOREIGN KEY(student_id)
REFERENCES students(id)
);
Вместо того чтобы вставлять данные вручную, давайте загрузим их с помощью CSV-файла. Вы можете скачать файл из этого репозитория или создать его самостоятельно. Имейте в виду, чтобы разрешить pgAdmin доступ к данным, вам может понадобиться расширить права доступа к папке (в моем случае – это папка db_data
).
COPY assignments(category, name, due_date, weight)
FROM 'C:/Users/mgsosna/Desktop/db_data/assignments.csv'
DELIMITER ','
CSV HEADER;
/*
COPY 5
Query returned successfully in 118 msec.
*/
COPY grades(assignment_id, score, student_id)
FROM 'C:/Users/mgsosna/Desktop/db_data/grades.csv'
DELIMITER ','
CSV HEADER;
/*
COPY 25
Query returned successfully in 64 msec.
*/
Теперь давайте проверим, что мы всё сделали верно. Напишем запрос, который покажет среднюю оценку, по каждому виду заданий с группировкой по учителям.
SELECT
c.teacher,
a.category,
ROUND(AVG(g.score), 1) AS avg_score
FROM
students AS s
INNER JOIN classrooms AS c
ON c.id = s.classroom_id
INNER JOIN grades AS g
ON s.id = g.student_id
INNER JOIN assignments AS a
ON a.id = g.assignment_id
GROUP BY
1,
2
ORDER BY
3 DESC;
/*
teacher | category | avg_score
------- | --------- | ---------
Jonah | project | 100.0
Jonah | homework | 94.0
Jonah | exam | 92.5
Mary | homework | 78.3
Mary | exam | 76.0
Mary | project | 69.5
*/
Отлично! Мы установили, настроили и наполнили базу данных.
***
Итак, в этой статье мы научились:
- создавать базу данных;
- создавать таблицы;
- наполнять таблицы данными;
- устанавливать связи между таблицами;
Теперь у нас всё готово, чтобы пробовать более сложные возможности SQL. Мы начнем с возможностей синтаксиса, которые, вероятно, вам еще не знакомы и которые откроют перед вами новые границы в написании SQL-запросов. Также мы разберем некоторый виды соединений таблиц (JOIN
) и способы организации запросов в тех случаях, когда они занимают десятки или даже сотни строк.
В следующей части мы разберем:
- виды фильтраций в запросах;
- запросы с условиями типа if-else;
- новые виды соединений таблиц;
- функции для работы с массивами;
Материалы по теме
- 🐘 8 лучших GUI клиентов PostgreSQL в 2021 году
- 🐍🐬 Python и MySQL: практическое введение
- 🐍🗄️ Управление данными с помощью Python, SQLite и SQLAlchemy
Последнее обновление: 23.11.2022
Для упрощения администрирования на сервере postgresql в базовый комплект установки входит такой инструмент как pgAdmin.
Он представляет графический клиент для работы с сервером, через который мы в удобном виде можем создавать, удалять, изменять базы данных и управлять ими.
Так, на Windows после установки мы можем найти значок pgAdmin в меню Пуск и запустить его:
После этого нам откроется следующая программа pgAdmin. При открытии также отображится окно для ввода пароля для подключения к серверу Postgres:
Здесь необходимо ввести пароль для суперпользователя postgres, который был задан при установке PostgreSQL.
После успешного логина нам откроется содержимое сервера:
В частности, в узле Databases мы можем увидеть все имеющиеся базы данных. По умолчанию здесь есть только одна база данных — postgres.
Также в правой части мы можем увидеть узел Login/Group Roles, который предназначен для управления пользователями и их ролями.
И третий узел — Tablespaces позволяет управлять местом хранения файлов баз данных.
Теперь создадим свою базу данных. Для этого нажмем правой кнопкой мыши на узел Databases. И далее в контекстном меню
выберем Create->Database…
После этого нам отобразится окно для создания базы данных. Введем название для БД, например, test1 и нажмем на кнопку
«Save»:
После этого в древовидном меню слева отобразится содержимое созданной базы данных test1:
previous page
next page
Navigation
- index
- next |
- previous |
- pgAdmin3 LTS 1.23.0a documentation »
Using pgAdmin III
This section explains how you can use pgAdmin to maintain your PostgreSQL
databases. pgAdmin supports database server versions 7.3 and up. Versions
older than 7.3 are not supported, please use pgAdmin II for these.
Contents:
- pgAdmin Main Window
- Getting started
- Connect to server
- Connection errors
- Change Password
- Good practice
- Control Server
- Query tool
- Graphical Query builder
- pgAdmin Data Export
- Query Tool Macros
- pgScript Scripting Language Reference
- pgAdmin Debugger
- pgAdmin Data Export
- Edit Data
- View Data Options
- Maintain a database object
- VACUUM
- ANALYZE
- REINDEX
- Backup
- Supported File Formats
- The Backup Dialog
- Restore
- The Restore Dialog
- Grant Wizard
- Report Tool
- Default XSL Stylesheet
- Database Server Status
- pgAdmin Options
- pgAdmin Browser Options
- pgAdmin Query tool Options
- pgAdmin Database Designer Options
- pgAdmin Server Status Options
- pgAdmin Miscellaneous Options
- Guru Hints
- Command Line Parameters
When editing the properties of a database object, pgAdmin will support you with
help about the underlying PostgreSQL SQL commands, if you press the F1 function
key. In order for this to work, the SQL helpsite setting in the options dialog
must be set correctly.
Navigation
- index
- next |
- previous |
- pgAdmin3 LTS 1.23.0a documentation »
© Copyright 2002 — 2016, The pgAdmin Development Team.
Created using Sphinx 1.4.8.
Инструкция по установке PostgreSQL и созданию демонстрационной базы данных для самостоятельного запуска запросов из курса
Если вы хотите не просто смотреть видео курса «Основы SQL», но и самостоятельно экспериментировать с SQL запросами и видеть результаты их выполнения на живой базе данных, то можете установить бесплатную систему управления базами данных PostgreSQL и создать в ней демонстрационную базу с данными, которые показаны в видео. Эта статья содержит подробные инструкции по установке и настройке.
Установка PostgreSQL
В учебном курсе «Основы SQL» для демонстрации работы SQL используется PostgreSQL. Сейчас это самая популярная из бесплатных систем управления базами данных. Все SQL запросы в курсе проверены на работоспособность именно в PostgreSQL. Однако большая часть запросов использует синтаксис стандарта ANSI SQL, поэтому они будут работать и в других системах, включая MySQL, Microsoft SQL Server и Oracle. Вы можете использовать любую систему управления базами данных, которая вам нравится, но я рекомендую PostgreSQL.
1. Загрузите PostgreSQL для вашей операционной системы на странице Downloads официального сайта. Я устанавливал на Windows, если вы используете другую операционную систему, то выбирайте соответствующие ссылки для загрузки. Примеры в курсе проверены на PostgreSQL 13, поэтому рекомендую устанавливать именно эту версию. Однако на предыдущих версиях, начиная с PosgreSQL 10, также все должно работать.
Инсталлятор для Windows и Mac OS загружается с сайта компании EDB, которая предоставляет платную поддержку для PostgreSQL. Однако PostgreSQL, которую вы установите с помощью этого инсталлятора от EDB, будет полностью бесплатной.
2. Запустите скачанный инсталлятор PostgreSQL.
Если вы устанавливаете PostgreSQL только для использования в курсе «Основы SQL», то можете оставить почти все настройки по умолчанию, кроме локали, для которой нужно выбрать «Russian, Russia» (русский язык в стране Россия).
Не забудьте запомнить или записать пароль пользователя postgres, он вам понадобится для подключения к базе и выполнения запросов!
После завершения установки инсталлятор предложит вам запустить Stack Builder для установки дополнительных утилит и компонентов. Этого можно не делать, просто снимите галочку в пункте «Stack Builder…» и нажмите кнопку «Finish».
На этом установка PostrgreSQL завершена.
Запуск и настройка pgAdmin
В курсе мы будем работать с PostrgreSQL через Web-интерфейс pgAdmin. Несмотря на Admin в названии, этот инструмент подходит не только администраторам, но и разработчикам.
pgAdmin устанавливается вместе с PostgreSQL. В Windows запустить pgAdmin можно в меню Пуск.
При первом запуске pgAdmin просит задать Master Password. Он будет использоваться для безопасного сохранения паролей к базам данных PosgreSQL, с которыми вы работаете через pgAdmin. Master Password можно выбрать любой, главное, запомните или запишите его.
Для удобства можно переключить интерфейс pgAdmin на русский язык. Для этого выберите меню File->Preferences, в появившемся окне в меню слева выберите Miscellaneous -> User Language, а затем в поле User Language справа «Russian».
Для вступления в силу настроек языка интерфейса нужно нажать кнопку «Save» и перезапустить pgAdmin.
После перезапуска выбирайте в левом меню Servers -> PostgreSQL, после чего pgAdmin запросит пароль пользователя postgres, который вы задали в процессе установки PostgreSQL. Введите этот пароль (можете поставить галочку «Save Password» чтобы pgAdmin запомнил пароль) и вы подключитесь к базе PostgreSQL.
Список существующих на сервере баз данных показывается в левом окне pgAdmin. Нас интересует база данных postgres, схема public и таблицы в ней. pgAdmin показывает много другой информации, не пугайтесь, если вы пока не понимаете, что это такое. Многое мы разберем в курсе, но преимущественно все это нужно только администраторам базы данных.
Пока в нашей базе нет никаких таблиц. Давайте создадим демонстрационные таблицы, которые используются в курсе, и заполним их данными.
Создание демонстрационной базы
1. Скачайте файл с демонстрационной базой данных курса «Основы SQL». Файл называется «sql_foundation» и имеет расширение .sql.
Файл содержит набор операторов SQL, которые создают используемые в курсе таблицы и заполняют их данными. Если вы пока не понимаете, что именно делают эти операторы, не расстраивайтесь. В курсе мы подробно рассмотрим работу каждого оператора и все будет понятно. На начальном этапе изучения курса необходимо просто запустить этот файл в pgAdmin.
2. Загрузите скачанный файл в pgAdmin. Для этого в меню pgAdmin выберите Инструменты->Запросник (в английском вариант Query Tool). В панели инструментов Запросника выберите кнопку открытия файла и в появившемся окне выберите путь к загруженному sql файлу с демонстрационной базой курса.
3. Запустите загруженный файл в pgAgmin. Для этого нажмите на кнопку запуска в панели инструментов Запросника или на клавишу F5.
4. Проверьте правильность выполнения запроса. В нижней части экрана pgAdmin, на закладке «Сообщения» должны появиться результаты выполнения.
Основное, на что нужно обратить внимание — это сообщение «Запрос завершен успешно». Если такое сообщение появилось, значит все хорошо.
Если вы запускаете файл создания демонстрационной базы курса первый раз, то будет выведено несколько Замечаний, что таблицы не существуют. Их можно игнорировать.
Также в левой части интерфейса pgAdmin появится информация о созданных таблицах.
Итак, демонстрационные таблицы для курса «Основы SQL» созданы и заполнены данными, можно запускать SQL запросы.
Запуск SQL запросов в pgAdmin
В pgAdmin для запуска SQL запросов используется уже знакомый нам инструмент Запросник. Давайте откроем окно Запросника и напишем самый первый SQL запрос из видео про Оператор SELECT.
Запрос пишется в среднем окне, закладка Query Editor. Для запуска запроса нажимаем F5 или кнопку Execute в панели инструментов Запросника.
Полученные в ходе выполнения запроса данные показываются в нижней части окна, на закладке «Результат».
Использование SQL Shell (psql)
Если вы предпочитаете работать в командной строке, а не в громоздких приложениях типа pgAdmin, то можете использовать консольную утилиту для работы с PosgreSQL: SQL Shell (ранее она называлась psql).
SQL Shell, также как и pgAdmin, устанавливается совместно с PostgreSQL. В Windows запустить SQL Shell можно через меню Пуск.
После запуска SQL Shell задаст ряд вопросов о параметрах подключения к PostgreSQL, можно оставить все значения по умолчанию (если вы не меняли настройки при установке). После этого введите пароль пользователя postgres и можете начинать работать с базой данных.
Если вам не повезло, то в Windows SQL Shell запустится с неправильной кодировкой для русского языка, будет выдавать предупреждение и некоторые русские буквы будут выводиться неправильно.
Чтобы решить эту проблему, нужно прописать правильную кодировку в файл для запуска SQL Shell. В моем случае файл называется «C:Program FilesPostgreSQL13scriptsrunpsql.bat». В этот файл нужно добавить строку:
chcp 1251
После добавления строки с установкой правильной кодировки файл runpsql. bat стал выглядеть следующим образом.
Сохраняем файл runpsql. bat, перезапускаем SQL Shell, после этого проблем с русской кодировкой быть не должно.
Для создания демонстрационной базы курса в SQL Shell выполните следующую команду:
i 'C:/путь/к/файлу/sql_foundation.sql'
i означает import — загрузка файла sql в базу данных.
Обратите, пожалуйста, внимание:
1. Путь к файлу sql_foundation.sql нужно указывать в одиночных кавычках. Если будете использовать двойные кавычки, то не заработает.
2. В пути используются прямые слеши (/), как в Linux/Unix, несмотря на то, что мы работаем под Windows. Если писать обратные слеши (), как это принято в Windows, то будет выдаваться ошибка «Permission denied». Не очень информативное поведение SQL Shel.
Запросы в SQL Shell можно писать прямо в командной строке.
Запрос в SQL Shell может занимать несколько строк, как в примере на рисунке. Запрос запускается после ввода ; (точка с запятой) или команды g.
Результаты выполнения запроса показываются сразу же после него.
Полезная функция SQL Shell — история команд. Если нажимать стрелки вверх или вниз, то можно увидеть, какие команды были запущены ранее и повторить интересующую вас команду.
Итоги
В этой статье вы узнали, как установить PostgreSQL и как создать в нем демонстрационную базу для курса «Основы SQL». Также вы настроили и научились использовать два инструмента работы с PostgreSQL: pgAdmin и SQL Shell. Не обязательно использовать оба, выбирайте тот, который вам больше нравится: pgAdmin с Web-интерфейсом или командную строку SQL Shell.
В процессе экспериментов с SQL запросами в курсе вы можете случайно повредить созданную базу. В этом нет ничего страшного, базу данных можно легко пересоздать повторно запустив sql файл с операторами по созданию базы. При этом все имеющиеся таблицы будут удалены, заново созданы и заполнены данными. Все изменения, которые вы вносили, будут потеряны.