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. Для выполнения работы была установлена субд 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)[
#align(center)[#image("part1/assets/17.png")] #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`. В поле "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 docker exec -i postgres psql -U postgres -d postgres < demo-medium-20170815.sql
``` ```
После появления базы данных "demo", в "Querry Tool" я выполнил следующий скрипт: После появления базы данных "demo", в "Querry Tool" я выполнил следующий скрипт (Рис. 9):
```sql ```sql
SELECT * FROM bookings.aircrafts_data; 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. Ознакомление с учебной БД. ===== Задание 3. Ознакомление с учебной БД.
@@ -162,26 +221,58 @@ SELECT * FROM bookings.aircrafts_data;
===== Задание 4. Создание учебной базы данных HR средствами pgAdmin. ===== Задание 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")] Затем в октрывшемся окне я выставил следующие настройки (Рис. 10, 11).
#align(center)[#image("part1/assets/7.png")]
Затем я сохранил настройки. В "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 ===== Задание 5. Создание учебной базы данных HR средствами PL/pgSQL
Я открыл "Querry Tool" базы данных `postgres`. И прописал следующий скрипт. Я открыл "Querry Tool" базы данных `postgres`. И прописал следующий скрипт (Рис. 15).
```sql ```sql
CREATE DATABASE hr CREATE DATABASE hr
@@ -192,64 +283,131 @@ CREATE DATABASE hr
CONNECTION LIMIT 1; 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. Создание схем. ===== Задание 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 ```cs
CREATE SCHEMA IF NOT EXISTS "countries" CREATE SCHEMA IF NOT EXISTS "countries"
AUTHORIZATION postgres; 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. ==== Часть 2.
===== Задание 1. Создание таблицы в графической среде pgadmin. ===== Задание 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. ===== Задание 2. Создание таблицы в Query Editor.
Я открыл query tool для hr и вписал туда следующий скрипт: Я открыл query tool для hr и вписал туда следующий скрипт (Рис. 26):
```sql ```sql
CREATE TABLE "EmployeesDepartments"."DEPARTMENTS" ( 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 ```sql
CREATE TABLE "EmployeesDepartments"."LOCATIONS" 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. Изменение таблицы. ===== Задание 3. Изменение таблицы.
В querry tool я ввел следующее: В querry tool я ввел следующее:
``` ```sql
ALTER TABLE "EmployeesDepartments"."LOCATIONS" ALTER TABLE "EmployeesDepartments"."LOCATIONS"
ADD STATE_PROVINCE character varying(25) NULL; ADD STATE_PROVINCE character varying(25) NULL;
``` ```