Лабораторные работы. Дятлов / Отчет Базы данных №2
.docxМинистерство цифрового развития, связи и массовых коммуникаций Российской Федерации
Федеральное государственное бюджетное образовательное учреждение Высшего образования «Санкт-Петербургский государственный университет телекоммуникаций им. Проф. М. А. Бонч-Бруевича» (СПбГУТ)
Факультет Информационных технологий и программной инженерии
Кафедра Программной инженерии
Лабораторная работа
По дисциплине: База данных
Выполнил студент: Яковлев М. А. ИКПИ-32
Принял работу: Дятлов Д. А.
Дата выполнения:
«17» сентября 2025 г.
Санкт-Петербург
2025 г.
Цель работы
Цель работы – получение практических навыков создания запросов на внутренние и внешние объединения таблиц на языке SQL.
Ход выполнения
Результат выполнения команды:
SELECT u.id, u.name, d.name FROM users u INNER JOIN departments d ON u.d_id = d.id;
Возвращает только те строки, где совпадают значения в условии соединения (u.d_id = d.id) в обеих таблицах.
Рисунок 1. Результат команды
Результат выполнения команды:
SELECT u.id, u.name, d.name FROM users u LEFT JOIN departments d ON u.d_id = d.id;
Возвращает все строки из левой таблицы (users) и соответствующие строки из правой (departments).
Рисунок 2. Результат команды
Результат выполнения команды:
SELECT u.id, u.name, d.name FROM users u RIGHT JOIN departments d ON u.d_id = d.id;
Возвращает все строки из правой таблицы (departments) и соответствующие из левой (users).
Рисунок 3. Результат команды
Результат выполнения команды:
SELECT u.id, u.name, d.name FROM users u CROSS JOIN departments d;
Перекрестное (декартово) произведение таблиц: каждая строка из users соединяется с каждой строкой из departments. Результат содержит все возможные пары пользователь-отдел, без условий соединения.
Рисунок 4. Результат команды
Выводы
В ходе выполнения работы были закреплены практические навыки использования операторов внутреннего и внешнего объединения таблиц в языке SQL.
SELECT u.id, u.name, d.name FROM users u INNER JOIN departments d ON u.d_id = d.id;
Возвращает только те строки, где совпадают значения в условии соединения (u.d_id = d.id) в обеих таблицах. То есть выводятся только пользователи, у которых есть отдел, и только существующие отделы с пользователями. Строки без совпадений не включаются.
SELECT u.id, u.name, d.name FROM users u LEFT JOIN departments d ON u.d_id = d.id;
Возвращает все строки из левой таблицы (users) и соответствующие строки из правой (departments). Если для пользователя нет подходящего отдела, в столбцах из departments будут NULL. То есть все пользователи будут в результате, даже если у них нет отдела.
SELECT u.id, u.name, d.name FROM users u RIGHT JOIN departments d ON u.d_id = d.id;
Возвращает все строки из правой таблицы (departments) и соответствующие из левой (users). Если у отдела нет пользователей, пользователи будут NULL. В результате будут все отделы, даже если в них нет пользователей.
SELECT u.id, u.name, d.name FROM users u CROSS JOIN departments d;
Перекрестное (декартово) произведение таблиц: каждая строка из users соединяется с каждой строкой из departments. Результат содержит все возможные пары пользователь-отдел, без условий соединения.
Контрольные вопросы
№1. Декартово произведение таблиц — это операция, при которой каждая строка первой таблицы объединяется с каждой строкой второй таблицы, в результате чего получается набор всех возможных комбинаций строк из обеих таблиц. При отсутствии условий соединения (JOIN-условия) SQL выполняет именно декартово произведение, и результирующий набор содержит произведение количества строк обеих таблиц.
№2. Левое объединение таблиц (LEFT JOIN) — это тип внешнего соединения, при котором в результат попадают все строки из левой (первой) таблицы, а к ним добавляются данные из правой таблицы, если есть совпадение. Если для строки из левой таблицы нет соответствующей в правой, то столбцы правой таблицы будут заполнены NULL.
№3. Правое объединение таблиц (RIGHT JOIN) — это тип внешнего соединения, при котором в результат попадают все строки из правой (второй) таблицы, а к ним добавляются данные из левой таблицы при совпадении. Если для строки из правой таблицы нет соответствующей в левой, столбцы левой таблицы будут NULL.
№4. Внутреннее объединение таблиц (INNER JOIN) — операция соединения, которая возвращает только те строки, для которых выполняется условие соединения и которые присутствуют в обеих таблицах. Строки, не имеющие совпадений в одной из таблиц, исключаются из результата.
