Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Илюшечкин / Отчёт_лаб_8.docx
Скачиваний:
23
Добавлен:
25.12.2020
Размер:
205.16 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное государственное автономное образовательное

учреждение высшего образования

Национальный исследовательский университет “МИЭТ”

Факультет Прикладных информационных технологий

Дисциплина: Базы данных

Отчёт по 8 лабораторной работе

Использование объединяющих и вложенных запросов и корректирующих операторов языка SQL

Цель работы: изучить возможности оператора UNION и вложенных запросов и получить практические навыки использования операторов языка SQL, изменяющих данные, хранящиеся в БД.

Выполнил:

Студент П-21

Татьяна

Москва, 2019

Контрольные вопросы

  1. Как объединить результаты выполнения нескольких запросов?

  • Язык SQL предусматривает возможность объединения результатов двух или более запросов в одну таблицу с помощью оператора UNION.

SELECT Фамилия + Имя, Должность

FROM Сотрудники

WHERE Город = 'Москва'

UNION

SELECT ОбращатьсяК, Должность

FROM Клиенты

WHERE Город = 'Москва'

  • Оператор UNION можно использовать многократно, чтобы объединить результаты трех или более запросов, указывая с помощью круглых скобок порядок выполнения операторов:

SELECT * FROM A

UNION ALL (SELECT*FROM B UNION SELECT*FROM C)

  1. Какие ограничения существуют при использовании оператора union?

  • Чтобы таблицы результатов запроса можно было объединить с помощью оператора UNION, они должны удовлетворять следующим требованиям:

1) таблицы должны содержать одинаковое число столбцов;

2) тип данных каждого столбца первой таблицы должен совпадать с типом данных соответствующего столбца во второй таблице;

3) ни одна из таблиц не может быть отсортирована с помощью предложения ORDER BY, однако объединенные результаты запроса можно отсортировать.

  • Если в результирующей объединенной таблице необходимо сохранить повторяющиеся строки, сразу за ключевым словом UNION следует указать ключевое слово ALL.

  • Использование предложения ORDER BY в операторах SELECT, составляющих оператор UNION, запрещено.

3. Какие запросы называются вложенными?

Вложенным, или подчиненным, запросом (подзапросом), называется запрос, содержащийся в списке возвращаемых столбцов или предложениях WHERE или HAVING другого оператора.

  1. В чем отличие подзапроса от оператора SELECT?

Подзапрос – законченный оператор SELECT, внедрённый в тело другого оператора SELECT.

5. Что называется внешней ссылкой?

Внешняя ссылка представляет собой имя столбца, принадлежащего таблице, указанной в предложении FROM главного запроса, и не входящего ни в одну из таблиц, перечисленных в предложении FROM вложенного запроса.

6. Какой подзапрос называется связанным?

Если во вложенном запросе имеется внешняя ссылка, то он называется связанным подзапросом.

7. В чем особенность выполнения связанного подзапроса?

Особенностью связанного подзапроса является то, что он выполняется многократно, по одному разу для каждой строки таблицы, указанной в главном запросе.

8. Какие виды условий поиска с подзапросами предусмотрены в языке SQL? Приведите примеры.

  • Сравнение с результатом вложенного запроса. Сравнивает значение выражения с одним значением, возвращённым вложенным запросом (=, <> , < , <= , > , >=);

SELECT * FROM Поставщики

WHERE Название = (SELECT Название FROM Клиенты WHERE Клиенты.Название = Поставщики.Название)

  • Проверка на принадлежность результатам вложенного запроса. Проверяет значение выражения на равенство с одним из значений множества, возвращённого вложенным запросом.

SELECT * FROM Поставщики

WHERE Название NOT IN (SELECT Название FROM Клиенты WHERE Клиенты.Название = Поставщики.Название)

  • Проверка на существование. Проверяет наличие строк в таблице результатов вложенного запроса.

SELECT * FROM Поставщики

WHERE EXISTS (SELECT Название FROM Клиенты WHERE Клиенты.Название = Поставщики.Название)

  • Многократное сравнение. Сравнивает значение выражения с каждым из значений множества, возвращаемого вложенным запросом.

SELECT Фамилия, Имя, "оформил", COUNT(КодЗаказа) , "заказов"

FROM Сотрудники, Заказы

WHERE Сотрудники.КодСотрудника = Заказы.КодСотрудника

GROUP BY Фамилия, Имя

HAVING COUNT(КодЗаказа)

>= ALL

(SELECT COUNT(КодЗаказа)

FROM Сотрудники, Заказы

WHERE Сотрудники.КодСотрудника = Заказы.КодСотрудника GROUP BY Фамилия, Имя)

Соседние файлы в папке Илюшечкин