МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ
КАФЕДРА 41
|
ОЦЕНКА
ПРЕПОДАВАТЕЛЬ
канд.тех.наук, доцент |
|
|
|
Е. Л. Турнецкая |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №6
|
ЗНАКОМСТВО С СУБД POSTGRESQL
|
по дисциплине: Базы данных |
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. № |
Z9411 |
|
|
|
Р. С. Кафка |
|
номер группы |
|
подпись, дата |
|
инициалы, фамилия |
Студенческий билет № |
2019/3603 |
|
|
|
Санкт-Петербург 2023
Содержание
1. Цель работы 3
2. Вариант задания 3
3. Ход работы 3
3.1. Описание процесса создания таблиц и заполнения их данными 3
3.2. Листинг написанных запросов, описание и результаты их выполнения 8
ЗАКЛЮЧЕНИЕ 10
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 11
Цель работы
Познакомиться с СУБД PostgreSQL и языком запросов SQL.
Вариант задания
Вариант №9.
Формулировка запросов:
Найти профессию, диапазон которой между минимальной и максимальной зарплатой меньше, чем у остальных профессий.
Вывести названия профессий(job_title) и среднюю зарплату (в диапазоне от 2000 до 5000) сотрудников этих профессий.
Ход работы
Описание процесса создания таблиц и заполнения их данными
Создал базу данных 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»