Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Контрольная работа №3. БД

.pdf
Скачиваний:
0
Добавлен:
07.01.2025
Размер:
4.32 Mб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ

КАФЕДРА ПРИКЛАДНОЙ ИНФОРМАТИКИ

ОЦЕНКА

 

 

ПРЕПОДАВАТЕЛЬ

 

 

канд. техн. наук, доц.

подпись, дата

Е. Л. Турнецкая

должность, уч. степень, звание

инициалы, фамилия

КОНТРОЛЬНАЯ РАБОТА №3

Связь СУБД PostgreSQL и Python

по дисциплине: Базы данных

РАБОТУ ВЫПОЛНИЛ

 

 

 

 

 

СТУДЕНТ гр. №

Z1411

 

 

Я. Н. Тюттерин

 

номер группы

 

подпись, дата

 

инициалы, фамилия

 

 

 

 

Студенческий билет №

2022 / 4886

 

 

 

 

 

 

 

 

 

Шифр ИНДО

Санкт-Петербург 2024

Контрольная работа № 3. Связь СУБД PostgreSQL и Python

Цель работы: произвести связь базы данных в PostgreSQL и Python, изучить операции по манипулированию с данными БД, а также созданию простейших пользовательских функций.

С помощью метода connect() создается подключение к экземпляру базы данных

PostgreSQL

Результат запрос на получение данных из таблицы jobs представлен на рисунке 1.

Рисунок 1 - Получение всех записей из таблицы jobs

Рисунок 2 - Создание таблицы locations

Рисунок 3 - Результат создания таблицы locations

Рисунок 4 - Вставка записей в таблицу locations

Рисунок 5 - Получение записей из таблицы locations

Рисунок 6 - Создание новой функции и ее вызов

Рисунок 7 - Вызов функции из Python

Рисунок 8 - Создание функции из Python

Рисунок 9 - Вызов созданной функции

Рисунок 10 - Результат получения записей из таблицы jobs

Рисунок 11 - Построенный график

Рисунок 12 - Вставка записей в таблице locations

Рисунок 13 - Создание колонки location_id в таблице работников Текст запроса: alter table employees add column location_id integer;

Рисунок 14 - Создание fkey на таблицу locations для таблицы работников

Рисунок 15 - Результат заполнения колонки location_id в таблице работников

Рисунок 16 - Установка ограничения not null на новую колонку

Рисунок 17 - Схема БД

На момент работы над данной контрольной работой - мой номер в группе - 16 (Рисунок 18). Таким образом, в качестве варианта был выбран номер 6.

Рисунок 18 - Номер в группе

Вариант 6:

- Найти первых трёх сотрудников с наименьшей разницей между их зарплатой и минимальной зарплатой по должности.

Рисунок 19 - Результат запроса

Текст запроса:

select e.*, abs(abs(e.salary) - abs(j.min_salary)) diff from employees e left join jobs j on j.job_id = e.job_id

order by abs(abs(e.salary) - abs(j.min_salary)) limit 3

- Найти самое популярное имя (first_name).

Рисунок 20 - Самое часто встречающееся имя среди работников Имя john встречается 3 раза.

Текст запроса:

SELECT first_name, count(first_name) FROM employees

GROUP BY first_name

ORDER BY count(first_name) DESC

LIMIT 1

Рисунок 21 - Создание пользовательской функции для получения большей разницы между минимальной зарплатой и текущей у работника