ИТиП // 2 семестр ЛАБОРАТОРНАЯ РАБОТА № 10 SQL – запросы
Цель работы: изучить принципы создания простых и сложных SQL-запросов для управления данными.
Теоретическая часть
Подзапрос - это запрос, вложенный в другой запрос. Подзапрос может быть вложен в инструкции SELECT, INSERT, UPDATE или DELETE, а также в другой подзапрос. Подзапрос может использоваться:
§в инструкции SELECT
§в инструкции FROM
§в условии WHERE
Рекомендации, которым нужно следовать при использовании SQLподзапросов:
§Подзапрос должен быть заключен в круглые скобки;
§Подзапрос должен указываться в правой части оператора сравнения;
§Подзапросы не могут обрабатывать свои результаты, поэтому в подзапрос не может быть добавлено условие ORDER BY;
§Используйте однострочные операторы с однострочными подзапросами;
§Если подзапрос возвращает во внешний запрос значение NULL, внешний запрос не будет возвращать никакие строки при использовании операторов сравнения в условии WHERE.
Использование подзапроса в предложении WHERE без предикатов EXISTS, IN, ALL и ANY, которые дают булево значение, может привести к ошибке времени выполнения запроса. Команда IN выбирает записи из базы данных по определенным значениям поля.
Пример, необходимо выбрать записи, у которых id имеет значение 1, 3, 7, 14, 28. Это будет выглядеть так: WHERE id IN (1, 3, 7, 14, 28).
Условие EXISTS используется в сочетании с подзапросом и считается выполненным, если подзапрос возвращает хотя бы одну строку. Его можно использовать в операторе SELECT, INSERT, UPDATE или DELETE:
EXISTS (SELECT * FROM имя_таблицы...)
Условие NOT можно объединить с условием EXISTS, чтобы создать условие NOT
EXISTS:
NOT EXISTS (SELECT * FROM имя_таблицы...)
1
CASE – условный оператор языка SQL. Данный оператор позволяет осуществить проверку условий и возвратить в зависимости от выполнения того или иного условия тот или иной результат. Оператор CASE имеет две формы:
WHEN-условия проверяются последовательно, сверху-вниз. При достижении первого удовлетворяющего условия дальнейшая проверка прерывается и возвращается значение, указанное после слова THEN, относящегося к данному блоку WHEN.
Задание
База данных «Университет» содержит информацию о студентах, обучающихся в нескольких учебных заведениях, которые находятся в разных городах, преподавателях, преподаваемых дисциплинах и экзаменационных данных (рисунок 1). База данных состоит из 6 таблиц.
Таблица 1 - Студенты
Таблица 2 - Преподаватели
2
Таблица 3 – Дисциплины, закрепленные за преподавателями
Таблица 4 - Учебные дисциплины
Таблица 5 - Университеты
Таблица 6 – Экзаменационные данные
Рисунок 1 – Логическая схема базы данных
3
1.Напишите запрос с подзапросом для получения данных обо всех оценках студента с фамилией Иванов.
2.Напишите команду SELECT, использующую связанные подзапросы и выполняющую вывод имен и идентификаторов студентов, у которых стипендия совпадает с максимальным значением стипендии для города, в котором живет студент.
3.Напишите запрос, который позволяет вывести имена и идентификаторы всех студентов, для которых точно известно, что они проживают в городе, где нет ни одного университета.
4.Напишите запрос, который позволяет вывести имена и идентификаторы всех студентов, для которых точно известно, что они проживают не в том городе, где расположен их университет.
5.Напишите запрос с EXISTS, позволяющий вывести данные обо всех студентах, обучающихся в вузах, которые имеют рейтинг выше 300.
6.Напишите запрос с EXISTS, выбирающий сведения обо всех студентах, для которых в том же городе, где живет студент, существуют университеты, в которых он не учится.
7.Напишите запрос, выводящий статус студента в зависимости от курса: 1 курс – «Первокурсник», 2 курс – «Второкурсник», 3 курс – «Третьекурсник», 4 – «Четверокурсник».
Содержание отчета
Отчет по работе должен содержать титульный лист, цель, задания, запросы, скрины выполненных заданий, вывод.
Список источников
1.SQL-запросы: основные команды для управления базами данных https://practicum.yandex.ru/blog/sql-zaprosy-dlya-upravleniya-bazami-dannyh/
2.Таблицы в SQL: типы и операции https://practicum.yandex.ru/blog/tablicy-v-sql/
4
