diff --git a/labs/lab2/assets/1.png b/labs/lab2/assets/1.png new file mode 100644 index 0000000..573670c Binary files /dev/null and b/labs/lab2/assets/1.png differ diff --git a/labs/lab2/assets/2.png b/labs/lab2/assets/2.png new file mode 100644 index 0000000..099aba2 Binary files /dev/null and b/labs/lab2/assets/2.png differ diff --git a/labs/lab2/report.pdf b/labs/lab2/report.pdf index 8c49ca2..1ba8398 100644 Binary files a/labs/lab2/report.pdf and b/labs/lab2/report.pdf differ diff --git a/labs/lab2/report.typ b/labs/lab2/report.typ index af1ac07..d3a2ad6 100644 --- a/labs/lab2/report.typ +++ b/labs/lab2/report.typ @@ -77,7 +77,7 @@ SELECT * FROM "EmployeesDepartments".JOB_GRADES; ``` -Нет, не будет, так как для корректного выполнения данной команды, нужно добавить кавычки у `JOB_GRADES` (Рис. 1) или убрать кавычки у EmployeesDepartments (Рис. 2). +Нет, не будет, так как для корректного выполнения данной команды, нужно добавить кавычки у `JOB_GRADES` (Рис. 1). #align(center)[ #figure( @@ -87,14 +87,6 @@ FROM "EmployeesDepartments".JOB_GRADES; ) ] -#align(center)[ - #figure( - image("assets/2.png"), - supplement: [Рис], - caption: [] - ) -] - ===== 1.2 Команда SELECT содержит 4 ошибки. Укажите их. ```sql @@ -103,8 +95,21 @@ SELECT "EMPLOYEE_ID", "LAST_NAME" FROM "EmployeesDepartments"."EMPLOYEES" ``` +- Нет запятой перед `"SAL"`. +- Использовать `*` вместо `x`. +- Неправильно задан псевдоним: нужен `AS` и, раз в псевдониме пробел, — кавычки (например `AS "ANNUAL SALARY"`). +- Неправильное название стобца: вместо `SAL` должно быть `SALARY`. + +Исправленная версия: + +```sql +SELECT "EMPLOYEE_ID", "LAST_NAME", "SALARY" * 12 AS "ANNUAL SALARY" +FROM "EmployeesDepartments"."EMPLOYEES"; +``` + ===== 1.3 Напишите запрос, который отображает структуру таблицы `DEPARTMENTS`, представленную на таблице 1. Сформируйте запрос на выборку данных из нее, результат должен соответствовать таблице 2. +// таблица 1 #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], @@ -113,6 +118,25 @@ FROM "EmployeesDepartments"."EMPLOYEES" ) ] +```sql +SELECT column_name, + CASE WHEN is_nullable = 'YES' THEN 'YES' ELSE 'NO' END AS is_nullable, + data_type +FROM information_schema.columns +WHERE table_name = 'DEPARTMENTS' + AND table_schema IN ('EmployeesDepartments', 'public') +ORDER BY ordinal_position; +``` + +#align(center)[ + #figure( + image("assets/2.png"), + caption: [Результат выполнения скрипта.], + supplement: [Рис] + ) +] + +// таблица 2 #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], @@ -121,6 +145,12 @@ FROM "EmployeesDepartments"."EMPLOYEES" ) ] +```sql +SELECT "DEPARTMENT_ID", "DEPARTMENT_NAME", "MANAGER_ID", "LOCATION_ID" +FROM "EmployeesDepartments"."DEPARTMENTS" +ORDER BY "DEPARTMENT_ID"; +``` + ===== 1.4 Напишите запрос, который отображает структуру таблицы `EMPLOYEES`, представленную в таблице 3. #align(center)[