upd
This commit is contained in:
Binary file not shown.
@@ -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;
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user