Files
db/labs/lab2/report.typ
2025-10-22 18:46:33 +03:00

171 lines
7.2 KiB
Typst
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#show link: underline
#set page(
header: context {
if counter(page).get().first() == 1 [
#align(center)[
Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики
]
]
},
footer: context {
if counter(page).get().first() == 1 [
#align(center)[Санкт-Петербург \ 2025]
] else [
#align(center)[#counter(page).display("1")]
]
}
)
#show raw.where(block: false): box.with(
fill: luma(240),
inset: (x: 3pt, y: 0pt),
outset: (y: 3pt),
radius: 2pt,
)
#show raw.where(block: true): block.with(
fill: luma(240),
inset: 10pt,
radius: 4pt,
)
// title
\
\
\
#align(center)[Факультет инфокоммуникационных технологий]
#align(center)[Направление подготовки 11.03.02]
\
\
#align(center)[Практическая работа №2]
//#align(center)[Установка и первоначальная настройка субд postgresql.]
\
\
\
\ //#align(center)[Вариант 19]
\
\
\
\
\
\
\
#align(right)[Выполнил:]
#align(right)[Дощенников Никита Андреевич]
#align(right)[Группа: К3221]
#align(right)[Проверила:]
#align(right)[Татьяна Евгеньевна Войтюк]
\
\
#pagebreak()
=== Цель работы
=== Задачи, решаемые при выполнении работы
=== Исходные данные
==== Задание 1. Описание структуры таблицы, выборка данных из таблицы, задание имен столбцов, сортировка строк с помощью предложения ORDER BY
===== 1.1 Будет ли успешна эта команда `SELECT`?
```sql
SELECT *
FROM "EmployeesDepartments".JOB_GRADES;
```
Нет, не будет, так как для корректного выполнения данной команды, нужно добавить кавычки у `JOB_GRADES` (Рис. 1) или убрать кавычки у EmployeesDepartments (Рис. 2).
#align(center)[
#figure(
image("assets/1.png"),
supplement: [Рис],
caption: []
)
]
#align(center)[
#figure(
image("assets/2.png"),
supplement: [Рис],
caption: []
)
]
===== 1.2 Команда SELECT содержит 4 ошибки. Укажите их.
```sql
SELECT "EMPLOYEE_ID", "LAST_NAME"
"SAL" x 12 ANNUAL SALARY
FROM "EmployeesDepartments"."EMPLOYEES"
```
===== 1.3 Напишите запрос, который отображает структуру таблицы `DEPARTMENTS`, представленную на таблице 1. Сформируйте запрос на выборку данных из нее, результат должен соответствовать таблице 2.
#align(center)[
#figure(
table(columns: 3)[*column_name*][*is_nullable*][*Type*][DEPARTMENT_ID][NO][smallint][DEPARTMENT_NAME][NO][character varying][MANAGER_ID][YES][integer][LOCATION_ID][YES][smallint],
caption: [Структура таблицы `DEPARTMENTS`.],
supplement: [Табл.]
)
]
#align(center)[
#figure(
table(columns: 4)[*DEPARTMENT_ID*][*DEPARTMENT_NAME*][*MANAGER_ID*][*LOCATION_ID*][10][Administration][200][1700][20][Marketing][201][1800][50][Shipping][124][1500][60][IT][103][1400][80][Sales - Europe][149][2500][85][Sales - Americas][149][2100][90][Executive][100][1700][110][Accounting][205][1700][190][Contracting][][1700],
caption: [Результат выполнения запроса к таблице `DEPARTMENTS`.],
supplement: [Табл.]
)
]
===== 1.4 Напишите запрос, который отображает структуру таблицы `EMPLOYEES`, представленную в таблице 3.
#align(center)[
#figure(
table(columns: 3)[*Name*][*Null?*][*Type*][HIRE_DATE][NO][date][SALARY][YES][numeric][COMMISION_PCT][YES][numeric][MANAGER_ID][YES][integer][DEPARTMENT_ID][YES][smallint][EMPLOYEE_ID][NO][integer][BONUS][YES][character varying][FIRST_NAME][YES][character varying][LAST_NAME][NO][character varying][EMAIL][NO][character varying][PHONE_NUMBER][YES][character varying][JOB_ID][NO][character varying],
caption: [Результат выполнения запроса к таблице `DEPARTMENTS`.],
supplement: [Табл.]
)
]
===== 1.5 Составьте запрос для вывода фамилии каждого служащего, должности, даты найма и номера. Номер служащего должен быть первым. Результат запроса должен быть схож с таблицей 4.
#align(center)[
#figure(
table(columns: 4)[*EMPLOYEE_ID*][*LAST_NAME*][*JOB_ID*][*HIRE_DATE*][100][King][AD_PRES][2002-06-17][101][Kochhar][AD_VP][2004-09-21][102][De Haan][AD_VP][2008-01-13][103][Hunold][IT_PROG][2005-01-03][104][Ernst][IT_PROG][2006-05-21][107][Lorentz][IT_PROG][2014-02-07][124][Mourgos][ST_MAN][2014-11-16][141][Rajs][ST_CLERK][2010-10-17][142][Davies][ST_CLERK][2012-01-29][143][Matos][ST_CLERK][2013-03-15][144][Vargas][ST_CLERK][2013-07-09][$dots$][$dots$][$dots$][$dots$],
caption: [Часть результата выполнения запроса из пункта 1.5.],
supplement: [Табл.]
)
]
===== 1.6 Составьте запрос для вывода неповторяющихся должностей из таблицы EMPLOYEES, результат должен соответствовать таблице 5.
#align(center)[
#figure(
table(columns: 1)[*JOB_ID*][AC_ACCOUNT][AC_MGR][AD_ASST][AD_PRES][AD_VP][IT_PROG][MK_MAN][MK_REP][SA_MAN][SA_REP][SR_MK_REP][SR_SA_REP][SR_ST_CLRK][ST_CLERK][ST_MAN],
caption: [Результат выполнения запроса для вывода неповторяющихся должностей.],
supplement: [Табл.]
)
]
===== 1.7 Выведите на экран фамилию, соединенную с идентификатором должности через запятую и пробел. Назовите новый столбец Employee and Title. Результат запроса должен быть схож с таблицей 6.
#align(center)[
#figure(
table(columns: 1)[*Employee and Title*][King, AD_PRES][Kochhar, AD_VP][De Haan, AD_VP][Hunold, IT_PROG][Ernst, IT_PROG][Lorentz, IT_PROG][Mourgos, ST_MAN][Rajs, ST_CLERK][Davies, ST_CLERK][Matos, ST_CLERK][Vargas, ST_CLERK][$dots$],
caption: [Результат выполнения запроса для вывода фамилии, соединённой с идентификатором должности.],
supplement: [Табл.]
)
]
==== Задание 2. Выборка данных и изменение последовательности вывода строк, ограничение количества возвращаемых строк с помощью предложения `WHERE`, сортировка строк с помощью предложения `ORDER BY`.
=== Выполнение работы
=== Выводы и анализ результатов работы