Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы. Дятлов / Отчет Базы данных №2

.docx
Скачиваний:
0
Добавлен:
31.10.2025
Размер:
1.03 Mб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации

Федеральное государственное бюджетное образовательное учреждение Высшего образования «Санкт-Петербургский государственный университет телекоммуникаций им. Проф. М. А. Бонч-Бруевича» (СПбГУТ)

Факультет Информационных технологий и программной инженерии

Кафедра Программной инженерии

Лабораторная работа

По дисциплине: База данных

Выполнил студент: Яковлев М. А. ИКПИ-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) — операция соединения, которая возвращает только те строки, для которых выполняется условие соединения и которые присутствуют в обеих таблицах. Строки, не имеющие совпадений в одной из таблиц, исключаются из результата.