This commit is contained in:
nik
2025-10-21 17:50:14 +03:00
parent 9e8dea14f8
commit 69723a75c5
2 changed files with 239 additions and 57 deletions

Binary file not shown.

View File

@@ -106,34 +106,86 @@
Для выполнения работы была установлена субд postgresql и приложение pgadmin. Установка производилась в среде docker.
На сервере был установлен docker и запущены контейнеры: `postgres:16`, `dpage/pgadmin4`.
На сервере был установлен docker и запущены контейнеры: `postgres:16`, `dpage/pgadmin4`. На рис. 1 показан вывод команды `docker ps`, который показывает запущенные контейнеры `pgadmin` и `postgres`.
#align(center)[#image("part1/assets/18.png")]
#align(center)[
#figure(
image("part1/assets/18.png"),
caption: [Результат команды `docker ps`.],
supplement: [Рис]
)
]
Контейнеры были объединены в общую сеть docker, чтобы pgadmin мог напрямую подключаться к postgres.
Контейнеры были объединены в общую сеть docker, чтобы pgadmin мог напрямую подключаться к postgres. На рис. 2 показаны настройки сети `dbnet`.
#align(center)[#image("part1/assets/19.png")]
#align(center)[
#figure(
image("part1/assets/19.png"),
caption: [Настройки сети `dbnet`.],
supplement: [Рис]
)
]
pgadmin стал доступен по адресу #link("https://db.fymio.us")[db.fymio.us]
#align(center)[#image("part1/assets/20.png")]
pgadmin стал доступен по адресу #link("https://db.fymio.us")[db.fymio.us]
В pgadmin был зарегистрирован новый сервер. В настройках подключения были указаны следующие параметры:
На рис. 3 показан фрагмент `Caddyfile`, ответственный за #link("https://db.fymio.us")[db.fymio.us].
#align(center)[#image("part1/assets/16.png")]
#align(center)[#image("part1/assets/17.png")]
#align(center)[
#figure(
image("part1/assets/20.png"),
caption: [Часть вывода команды `cat /etc/caddy/Caddyfile`.],
supplement: [Рис]
)
]
В "Object Explorer" слева я раскрыл узел "Databases":
В pgadmin был зарегистрирован новый сервер. В настройках подключения были указаны следующие параметры. На рис. 4, 5 показаны соответствующие настройки.
#align(center)[#image("part1/assets/1.png")]
#align(center)[
#figure(
image("part1/assets/16.png"),
caption: [Настройки General сервера Web PostgreSQL.],
supplement: [Рис]
)
]
Затем я нажал ПКМ по базе "postgres" и выбрал инструмент "Querry Tool":
#align(center)[
#figure(
image("part1/assets/17.png"),
caption: [Настройки Connection сервера Web PostgreSQL.],
supplement: [Рис]
)
]
#align(center)[#image("part1/assets/2.png")]
В "Object Explorer" слева я раскрыл узел "Databases" (Рис. 6):
В открывшемся окне написал запрос проверки версии сервера `SELECT version();`. После этого нажал кнопку "Execute script".
#align(center)[
#figure(
image("part1/assets/1.png"),
caption: [Object Explorer -> Databases.],
supplement: [Рис]
)
]
#align(center)[#image("part1/assets/3.png")]
Затем я нажал ПКМ по базе "postgres" и выбрал инструмент "Querry Tool" (Рис. 7):
#align(center)[
#figure(
image("part1/assets/2.png"),
caption: [Открытие Querry Tool.],
supplement: [Рис]
)
]
В открывшемся окне написал запрос проверки версии сервера `SELECT version();`. После этого нажал кнопку "Execute script" (Рис. 8).
#align(center)[
#figure(
image("part1/assets/3.png"),
caption: [Выполнение скрипта проверки версии.],
supplement: [Рис]
)
]
В поле "Data Output" я увидел версию `PostgreSQL 16.10`.
@@ -148,13 +200,20 @@ unzip demo-medium.zip
docker exec -i postgres psql -U postgres -d postgres < demo-medium-20170815.sql
```
После появления базы данных "demo", в "Querry Tool" я выполнил следующий скрипт:
После появления базы данных "demo", в "Querry Tool" я выполнил следующий скрипт (Рис. 9):
```sql
SELECT * FROM bookings.aircrafts_data;
```
#align(center)[#image("part1/assets/4.png")]
#align(center)[
#figure(
image("part1/assets/4.png"),
caption: [Выполнение скрипта `SELECT * FROM bookings.aircrafts_data`.],
supplement: [Рис]
)
]
===== Задание 3. Ознакомление с учебной БД.
@@ -162,26 +221,58 @@ SELECT * FROM bookings.aircrafts_data;
===== Задание 4. Создание учебной базы данных HR средствами pgAdmin.
Я нажал ПКМ на узле "Databases" и выбрал меню "Create" затем "Database...".
Я нажал ПКМ на узле "Databases" и выбрал меню "Create" затем "Database..." (Рис. 10).
#align(center)[#image("part1/assets/5.png")]
#align(center)[
#figure(
image("part1/assets/5.png"),
caption: [Создание новой базы данных.],
supplement: [Рис]
)
]
Затем в октрывшемся окне я выставил следующие настройки.
#align(center)[#image("part1/assets/6.png")]
#align(center)[#image("part1/assets/7.png")]
Затем в октрывшемся окне я выставил следующие настройки (Рис. 10, 11).
Затем я сохранил настройки. В "Object Explorer" появилась созданная база.
#align(center)[
#figure(
image("part1/assets/6.png"),
caption: [Настройки новой базы. Вкладка General.],
supplement: [Рис]
)
]
#align(center)[#image("part1/assets/8.png")]
#align(center)[
#figure(
image("part1/assets/7.png"),
caption: [Настройки новой базы. Вкладка Definition.],
supplement: [Рис]
)
]
После этого я удалил базу через ПКМ.
Затем я сохранил настройки. В "Object Explorer" появилась созданная база (Рис. 12).
#align(center)[#image("part1/assets/9.png")]
#align(center)[
#figure(
image("part1/assets/8.png"),
caption: [База `HR` в Object Explorer.],
supplement: [Рис]
)
]
После этого я удалил базу через ПКМ (Рис. 14).
#align(center)[
#figure(
image("part1/assets/9.png"),
caption: [Удаление базы `HR`.],
supplement: [Рис]
)
]
===== Задание 5. Создание учебной базы данных HR средствами PL/pgSQL
Я открыл "Querry Tool" базы данных `postgres`. И прописал следующий скрипт.
Я открыл "Querry Tool" базы данных `postgres`. И прописал следующий скрипт (Рис. 15).
```sql
CREATE DATABASE hr
@@ -192,64 +283,131 @@ CREATE DATABASE hr
CONNECTION LIMIT 1;
```
#align(center)[#image("part1/assets/10.png")]
#align(center)[
#figure(
image("part1/assets/10.png"),
caption: [Создание базы `hr` при помощи скрипта.],
supplement: [Рис]
)
]
После этого в списке баз появилась созданная.
После этого в списке баз появилась созданная (Рис. 16).
#align(center)[
#figure(
image("part1/assets/11.png"),
caption: [Новая база в Object Explorer.],
supplement: [Рис]
)
]
#align(center)[#image("part1/assets/11.png")]
===== Задание 6. Создание схем.
Я развернул вкладку для создания схем.
Я развернул вкладку для создания схем. Рис. 17 показывает меню создание схем.
#align(center)[#image("part1/assets/12.png")]
#align(center)[
#figure(
image("part1/assets/12.png"),
caption: [Создание схемы.],
supplement: [Рис]
)
]
И создал схему "EmployeesDepartments". В "Object Explorer" видно что схема создана.
И создал схему "EmployeesDepartments". В "Object Explorer" видно что схема создана (Рис. 18).
#align(center)[#image("part1/assets/13.png")]
#align(center)[
#figure(
image("part1/assets/13.png"),
caption: [Новая схема появилась.],
supplement: [Рис]
)
]
Чтобы создать вторую схему, я открыл "Querry Tool" к базе `hr`. И прописал следующие запросы:
Чтобы создать вторую схему, я открыл "Querry Tool" к базе `hr`. И прописал следующие запросы (Рис. 19):
```cs
CREATE SCHEMA IF NOT EXISTS "countries"
AUTHORIZATION postgres;
```
#align(center)[#image("part1/assets/14.png")]
#align(center)[
#figure(
image("part1/assets/14.png"),
caption: [Исполнение скрипта по созданию схемы.],
supplement: [Рис]
)
]
В "Object Explorer" видна добавленная схема:
В "Object Explorer" видна добавленная схема (Рис. 20):
#align(center)[#image("part1/assets/15.png")]
#align(center)[
#figure(
image("part1/assets/15.png"),
caption: [Появление новой схемы.],
supplement: [Рис]
)
]
==== Часть 2.
===== Задание 1. Создание таблицы в графической среде pgadmin.
Я раскрыл базу hr до узла tables и выбрал опцию create:
Я раскрыл базу hr до узла tables и выбрал опцию create (Рис. 21):
#align(center)[#image("part2/assets/1.png")]
#align(center)[
#figure(
image("part2/assets/1.png"),
caption: [Меню создания новой таблицы.],
supplement: [Рис]
)
]
И создал таблицу `EMPLOYEES`:
И создал таблицу `EMPLOYEES` (Рис. 22):
#align(center)[#image("part2/assets/2.png")]
#align(center)[
#figure(
image("part2/assets/2.png"),
caption: [Настройки таблицы EMPLOYEES.],
supplement: [Рис]
)
]
Затем я заполнил вкладку `columns` как показано на рисунке в условии:
Затем я заполнил вкладку `columns` как показано на рисунке в условии (Рис. 23):
#align(center)[#image("part2/assets/3.png")]
#align(center)[
#figure(
image("part2/assets/3.png"),
caption: [Столбцы таблицы EMPLOYEES.],
supplement: [Рис]
)
]
Для поля `employee_id`, я выставил следующие параметры:
Для поля `employee_id`, я выставил следующие параметры (Рис. 24):
#align(center)[#image("part2/assets/4.png")]
#align(center)[
#figure(
image("part2/assets/4.png"),
caption: [Настройки столбца `EMPLOYEE_ID` -> Constraints.],
supplement: [Рис]
)
]
Для столбца `hire_date` я поставил значение по умолчанию `current_date`.
Для столбца `hire_date` я поставил значение по умолчанию `current_date` (Рис. 25).
#align(center)[#image("part2/assets/5.png")]
#align(center)[
#figure(
image("part2/assets/5.png"),
caption: [Обновленное значение по умолчанию для столбца `HIRE_DATE`.],
supplement: [Рис]
)
]
После этого, я сохранил таблицу.
===== Задание 2. Создание таблицы в Query Editor.
Я открыл query tool для hr и вписал туда следующий скрипт:
Я открыл query tool для hr и вписал туда следующий скрипт (Рис. 26):
```sql
CREATE TABLE "EmployeesDepartments"."DEPARTMENTS" (
@@ -260,13 +418,25 @@ CREATE TABLE "EmployeesDepartments"."DEPARTMENTS" (
);
```
#align(center)[#image("part2/assets/6.png")]
#align(center)[
#figure(
image("part2/assets/6.png"),
caption: [Исполнение скрипта по созданию таблицы.],
supplement: [Рис]
)
]
Таблица появилась в object explorer:
Таблица появилась в object explorer (Рис. 27):
#align(center)[#image("part2/assets/7.png")]
#align(center)[
#figure(
image("part2/assets/7.png"),
caption: [Новая таблица в Object Explorer.],
supplement: [Рис]
)
]
Затем я создал еще одну таблицу скриптом:
Затем я создал еще одну таблицу скриптом (Рис. 28):
```sql
CREATE TABLE "EmployeesDepartments"."LOCATIONS"
@@ -278,17 +448,29 @@ CREATE TABLE "EmployeesDepartments"."LOCATIONS"
);
```
#align(center)[#image("part2/assets/9.png")]
#align(center)[
#figure(
image("part2/assets/9.png"),
caption: [Исполнение скрипта по созданию таблицы.],
supplement: [Рис]
)
]
Как можно видеть, таблица была создана:
Как можно видеть, таблица была создана (Рис. 29):
#align(center)[#image("part2/assets/10.png")]
#align(center)[
#figure(
image("part2/assets/10.png"),
caption: [Новая таблица в Object Explorer.],
supplement: [Рис]
)
]
===== Задание 3. Изменение таблицы.
В querry tool я ввел следующее:
```
```sql
ALTER TABLE "EmployeesDepartments"."LOCATIONS"
ADD STATE_PROVINCE character varying(25) NULL;
```