150 lines
6.4 KiB
Typst
150 lines
6.4 KiB
Typst
#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;
|
||
```
|
||
|
||
===== 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: [Табл.]
|
||
)
|
||
]
|
||
|
||
=== Выполнение работы
|
||
|
||
=== Выводы и анализ результатов работы
|
||
|