Добавил:
t.me Установите расширение 'SyncShare' для решения тестов в LMS (Moodle): https://syncshare.naloaty.me/ . На всякий лучше отключить блокировщик рекламы с ним. || Как пользоваться ChatGPT в России: https://habr.com/ru/articles/704600/ || Также можно с VPNом заходить в bing.com через Edge браузер и общаться с Microsoft Bing Chat, но в последнее время они форсят Copilot и он мне меньше нравится. || Студент-заочник ГУАП, группа Z9411. Ещё учусь на 5-ом курсе 'Прикладной информатики' (09.03.03). || Если мой материал вам помог - можете написать мне 'Спасибо', мне будет очень приятно :) Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 курс 1 семестр / Лабораторные / Z9411_КафкаРС_БД_ЛР6.docx
Скачиваний:
6
Добавлен:
24.10.2023
Размер:
293.59 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное автономное образовательное учреждение высшего образования

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

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

КАФЕДРА 41

ОЦЕНКА

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

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

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

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

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

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

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №6

ЗНАКОМСТВО С СУБД POSTGRESQL

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

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

СТУДЕНТ ГР. №

Z9411

Р. С. Кафка

номер группы

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

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

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

2019/3603

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

Содержание

1. Цель работы 3

2. Вариант задания 3

3. Ход работы 3

3.1. Описание процесса создания таблиц и заполнения их данными 3

3.2. Листинг написанных запросов, описание и результаты их выполнения 8

ЗАКЛЮЧЕНИЕ 10

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 11

  1. Цель работы

Познакомиться с СУБД PostgreSQL и языком запросов SQL.

  1. Вариант задания

Вариант №9.

Формулировка запросов:

  • Найти профессию, диапазон которой между минимальной и максимальной зарплатой меньше, чем у остальных профессий.

  • Вывести названия профессий(job_title) и среднюю зарплату (в диапазоне от 2000 до 5000) сотрудников этих профессий.

  1. Ход работы

    1. Описание процесса создания таблиц и заполнения их данными

Создал базу данных students при помощи DDL-команды:

CREATE DATABASE students;

После создания базы данных установил соединение к ней. Данная процедура проиллюстрирована на рисунке 1.

Рисунок 1 – Настройки соединения

После нажатия на кнопку «ОК» было установлено подключение к базе данных students.

Затем, согласно методическим указаниям, создал таблицы и заполнил их данными. Коды скриптов представлены в листингах 1-6.

Листинг 1 – Создание таблицы Jobs

CREATE TABLE jobs (

job_id varchar(10) PRIMARY KEY,

job_title varchar(35) NOT NULL,

min_salary integer,

max_salary integer);

Листинг 2 – Заполнение таблицы Jobs данными

INSERT INTO jobs

VALUES ('AD_PRES', 'President', 20080, 40000),

('AD_VP', 'Administration Vice President', 15000, 30000),

('AD_ASST', 'Administration Assistant', 3000, 6000),

('FI_MGR', 'Finance Manager', 8200, 16000),

('FI_ACCOUNT', 'Accountant', 4200, 9000),

('SA_MAN', 'Sales Manager', 10000, 20080),

('PU_MAN', 'Purchasing Manager', 8000, 15000),

('PU_CLERK', 'Purchasing Clerk', 2500, 5500),

('ST_MAN', 'Stock Manager', 5500, 8500),

('ST_CLERK', 'Stock Clerk', 2008, 5000),

('IT_PROG', 'Programmer', 4000, 10000),

('MK_MAN', 'Marketing Manager', 9000, 15000),

('HR_REP', 'Human Resources Representative', 4000, 9000);

Листинг 3 – Создание таблицы Departmens

CREATE TABLE departments (

department_id integer PRIMARY KEY,

department_name varchar(30) NOT NULL,

manager_id integer

);

Листинг 4 – Заполнение таблицы Departmens данными

INSERT INTO departments VALUES

(10, 'Administration', 51),

(20, 'Marketing', 52),

(30, 'Purchasing', 15),

(40, 'Human Resources', 53),

(50, 'Shipping', 22),

(60, 'IT', 4),

(80, 'Sales', 46),

(90, 'Executive', 1),

(100, 'Finance', 9);

Листинг 5 – Создание таблицы Employees

CREATE TABLE employees (

employee_id serial PRIMARY KEY,

first_name varchar(20) NOT NULL,

last_name varchar(25) NOT NULL,

job_id varchar(10) NOT NULL REFERENCES jobs (job_id),

salary integer,

manager_id integer,

department_id integer NOT NULL REFERENCES departments (department_id)

);

Листинг 6 – Заполнение таблицы Employees данными

INSERT INTO employees (first_name, last_name, job_id, salary, manager_id, department_id)

VALUES

('Steven', 'King', 'AD_PRES', 24000, NULL, 90),

('Neena', 'Kochhar', 'AD_VP', 17000, 1, 90),

('Lex', 'De Haan', 'AD_VP', 17000, 1, 90),

('Alexander', 'Hunold', 'IT_PROG', 9000, 3, 60),

('Bruce', 'Ernst', 'IT_PROG', 6000, 4, 60),

('David', 'Austin', 'IT_PROG', 4800, 4, 60),

('Valli', 'Pataballa', 'IT_PROG', 4800, 4, 60),

('Diana', 'Lorentz', 'IT_PROG', 4200, 4, 60),

('Nancy', 'Greenberg', 'FI_MGR', 12008, 2, 100),

('Daniel', 'Faviet', 'FI_ACCOUNT', 9000, 9, 100),

('John', 'Chen', 'FI_ACCOUNT', 8200, 9, 100),

('Ismael', 'Sciarra', 'FI_ACCOUNT', 7700, 9, 100),

('Jose Manuel', 'Urman', 'FI_ACCOUNT', 7800, 9, 100),

('Luis', 'Popp', 'FI_ACCOUNT', 6900, 9, 100),

('Den', 'Raphaely', 'PU_MAN', 11000, 1, 30),

('Alexander', 'Khoo', 'PU_CLERK', 3100, 15, 30),

('Shelli', 'Baida', 'PU_CLERK', 2900, 15, 30),

('Sigal', 'Tobias', 'PU_CLERK', 2800, 15, 30),

('Guy', 'Himuro', 'PU_CLERK', 2600, 15, 30),

('Karen', 'Colmenares', 'PU_CLERK', 2500, 15, 30),

('Matthew', 'Weiss', 'ST_MAN', 8000, 1, 50),

('Adam', 'Fripp', 'ST_MAN', 8200, 1, 50),

('Payam', 'Kaufling', 'ST_MAN', 7900, 1, 50),

('Shanta', 'Vollman', 'ST_MAN', 6500, 1, 50),

('Kevin', 'Mourgos', 'ST_MAN', 5800, 1, 50),

('Julia', 'Nayer', 'ST_CLERK', 3200, 21, 50),

('Irene', 'Mikkilineni', 'ST_CLERK', 2700, 21, 50),

('James', 'Landry', 'ST_CLERK', 2400, 21, 50),

('Steven', 'Markle', 'ST_CLERK', 2200, 21, 50),

('Laura', 'Bissot', 'ST_CLERK', 3300, 22, 50),

('Mozhe', 'Atkinson', 'ST_CLERK', 2800, 22, 50),

('James', 'Marlow', 'ST_CLERK', 2500, 22, 50),

('TJ', 'Olson', 'ST_CLERK', 2100, 22, 50),

('Jason', 'Mallin', 'ST_CLERK', 3300, 23, 50),

('Michael', 'Rogers', 'ST_CLERK', 2900, 23, 50),

('Ki', 'Gee', 'ST_CLERK', 2400, 23, 50),

('Hazel', 'Philtanker', 'ST_CLERK', 2200, 23, 50),

('Renske', 'Ladwig', 'ST_CLERK', 3600, 24, 50),

('Stephen', 'Stiles', 'ST_CLERK', 3200, 24, 50),

('John', 'Seo', 'ST_CLERK', 2700, 24, 50),

('Joshua', 'Patel', 'ST_CLERK', 2500, 24, 50),

('Trenna', 'Rajs', 'ST_CLERK', 3500, 25, 50),

('Curtis', 'Davies', 'ST_CLERK', 3100, 25, 50),

('Randall', 'Matos', 'ST_CLERK', 2600, 25, 50),

('Peter', 'Vargas', 'ST_CLERK', 2500, 25, 50),

('John', 'Russell', 'SA_MAN', 14000, 1, 80),

('Karen', 'Partners', 'SA_MAN', 13500, 1, 80),

('Alberto', 'Errazuriz', 'SA_MAN', 12000, 1, 80),

('Gerald', 'Cambrault', 'SA_MAN', 11000, 1, 80),

('Eleni', 'Zlotkey', 'SA_MAN', 10500, 1, 80),

('Jennifer', 'Whalen', 'AD_ASST', 4400, 2, 10),

('Michael', 'Hartstein', 'MK_MAN', 13000, 1, 20),

('Susan', 'Mavris', 'HR_REP', 6500, 2, 40);

После внесения данных в таблицу employees, был добавлен внешний ключ таблице departments при помощи скрипта, представленного в листинге 7.

Листинг 7 – Добавление внешнего ключа таблице departments

ALTER TABLE departments

ADD CONSTRAINT mgr_emp_fkey FOREIGN KEY (manager_id) REFERENCES employees (employee_id);

Заполненные таблицы представлены на рисунках 2-4.

Рисунок 2 – Заполненные данные таблицы departments

Рисунок 3 – Заполненные данные таблицы employees

Рисунок 4 – Заполненные данные таблицы jobs

Когда таблицы созданы, посмотрел схему данных, выбрав пункт «Просмотреть объект «Таблицы»», кликнув правой кнопкой мыши на объект «Таблицы» в левом меню, и далее выбрав «Диаграмма». Полученная схема данных представлена на рисунке 5.

Рисунок 5 – Схема данных «public»