upd
This commit is contained in:
Binary file not shown.
@@ -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)[
|
||||||
|
#figure(
|
||||||
|
image("part1/assets/19.png"),
|
||||||
|
caption: [Настройки сети `dbnet`.],
|
||||||
|
supplement: [Рис]
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
#align(center)[#image("part1/assets/19.png")]
|
|
||||||
|
|
||||||
pgadmin стал доступен по адресу #link("https://db.fymio.us")[db.fymio.us]
|
pgadmin стал доступен по адресу #link("https://db.fymio.us")[db.fymio.us]
|
||||||
|
|
||||||
#align(center)[#image("part1/assets/20.png")]
|
На рис. 3 показан фрагмент `Caddyfile`, ответственный за #link("https://db.fymio.us")[db.fymio.us].
|
||||||
|
|
||||||
В pgadmin был зарегистрирован новый сервер. В настройках подключения были указаны следующие параметры:
|
#align(center)[
|
||||||
|
#figure(
|
||||||
|
image("part1/assets/20.png"),
|
||||||
|
caption: [Часть вывода команды `cat /etc/caddy/Caddyfile`.],
|
||||||
|
supplement: [Рис]
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
#align(center)[#image("part1/assets/16.png")]
|
В pgadmin был зарегистрирован новый сервер. В настройках подключения были указаны следующие параметры. На рис. 4, 5 показаны соответствующие настройки.
|
||||||
#align(center)[#image("part1/assets/17.png")]
|
|
||||||
|
|
||||||
В "Object Explorer" слева я раскрыл узел "Databases":
|
#align(center)[
|
||||||
|
#figure(
|
||||||
|
image("part1/assets/16.png"),
|
||||||
|
caption: [Настройки General сервера Web PostgreSQL.],
|
||||||
|
supplement: [Рис]
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
#align(center)[#image("part1/assets/1.png")]
|
#align(center)[
|
||||||
|
#figure(
|
||||||
|
image("part1/assets/17.png"),
|
||||||
|
caption: [Настройки Connection сервера Web PostgreSQL.],
|
||||||
|
supplement: [Рис]
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
Затем я нажал ПКМ по базе "postgres" и выбрал инструмент "Querry Tool":
|
В "Object Explorer" слева я раскрыл узел "Databases" (Рис. 6):
|
||||||
|
|
||||||
#align(center)[#image("part1/assets/2.png")]
|
#align(center)[
|
||||||
|
#figure(
|
||||||
|
image("part1/assets/1.png"),
|
||||||
|
caption: [Object Explorer -> Databases.],
|
||||||
|
supplement: [Рис]
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
В открывшемся окне написал запрос проверки версии сервера `SELECT version();`. После этого нажал кнопку "Execute script".
|
Затем я нажал ПКМ по базе "postgres" и выбрал инструмент "Querry Tool" (Рис. 7):
|
||||||
|
|
||||||
#align(center)[#image("part1/assets/3.png")]
|
#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;
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user