- •Базы данных
- •Бд основные понятия и определения
- •Классификация моделей бд
- •Основные понятия иерархической модели данных
- •Основные понятия сетевой модели данных
- •Основные понятия реляционных моделей данных
- •Сортировка, поиск и замена данных в таблицах
- •Индексирование данных в реляционных таблицах
- •Концептуальная модель данных, основные понятия и определения
- •Язык sql, стандарты, основные операторы sqLзапроса
- •Типы данных sql
- •Операторы создания базы данных на языке sql
- •Запросы, назначения запросов, виды запросов
- •Использование агрегированных функций запросов
- •Использование вложенных запросов
- •Операторы соединения на языке sql
- •Типы отношений в концептуальной модели данных
- •Теоретико-множественные операции реляционной алгебры (с примерами)
- •Специальные операции реляционной алгебры (с примерами)
- •Использование хранимых процедур и пользовательских функций
- •Понятие и применение триггеров
Использование вложенных запросов
Ответ:
В SQL вложенным запросом называется такой запрос, в котором внешний замыкающий оператор содержит подзапрос. Этот подзапрос может сам быть замыкающим оператором для другого вложенного подзапроса. Теоретически число уровней вложенности для подзапросов не ограничено, а на практике зависит от реализации.
Подзапросы обязательно должны быть операторами SELECT, но самый внешний замыкающий оператор может также быть INSERT, UPDATE или DELETE.
Второй способ извлечения данных из множества таблиц основан на том, что подзапрос может работать с одной таблицей, а его замыкающий оператор — с другой.
Подзапросы находятся в предложении WHERE внешнего оператора. Их роль состоит в том, чтобы задавать для этого предложения условия поиска.
Сложные запросы получаются из других запросов следующими способами:
Вложением SQL-выражения запроса в SQL-выражение другого запроса. Первый из них называют подзапросом, а второй – внешним или основным запросом;
Применением к SQL-запросам операторов объединения или соединения наборов записей, возвращаемых запросами.
Подзапрос – это SQL-выражение, начинающееся с оператора SELECT, которое содержится в условии оператора WHERE или HAVING для другого запроса.
Внешний запрос, если только он не является подзапросом, не обязательно начинается с оператора SELECT. Подзапрос сам может содержать подзапрос и т.д. При этом сначала выполняется подзапрос, имеющий самый глубокий уровень вложения.
Часто внешний запрос обращается к одной таблице, а подзапрос – к другой.
Выделяют три частных случая простых подзапросов:
Подзапросы, возвращающие единственное значение;
Подзапросы, возвращающие список значений из одного столбца таблицы;
Подзапросы, возвращающие набор записей.
Например, необходимо выбрать из таблицы Клиенты те записи, сумма заказов которых больше среднего значения.
SELECT * FROM Клиенты
WHERE Сумма заказа > (SELECT AVG (Сумма заказа ) FROM Клиенты);
Связанные (коррелированные) подзапросы ссылаются на таблицу, которая упоминается в основном запросе и должен выполнятся в некотором контексте с текущим состоянием основного запроса.
SELECT A FROM T1 WHERE B= (SELECT B FROM T2 WHERE C=T1.C);
MS Access позволяет изменять данные посредством запросов. Такие запросы называются запросами на изменение и делятся на четыре категории:
Запросы на создание таблиц: создают таблицы на основе данных, содержащихся в результирующем множестве запросов. Чаще всего такой тип запросов используется при экспорте информации в другие приложения. В SQL запрос на создание таблицы добавляется оператором INTO [новая таблицы] внутри инструкции SELECT;
Запросы на добавление записей: запрос на добавление данных используется часто с целью копирования данных из одной таблицы в другую. На SQL запрос на добавление начинается с оператора INSERT. Например,
INSERT INTO [ЛичныеДела 1] ( лдТип, лдПредложил, лдДатаНазначено )
SELECT ЛичныеДела.лдТип, ЛичныеДела.лдПредложил, ЛичныеДела.лдДатаНазначено
FROM ЛичныеДела;
Запрос на обновление записей: изменяют значения существующих полей таблицы в соответствии с записями результирующего множества. Такие запросы применяются, чтобы внести изменения сразу в большое число записей с помощью одного запроса. Инструкция на языке SQL- оператор UPDATE. Например, необходимо изменить адрес улицы с им. Фрунзе на проспект Славы в таблице Клиенты.
UPDATE Клиенты SET Клиенты.Адрес = "проспект Славы"
WHERE (((Клиенты.Адрес) =“им. Фрунзе”));
Запросы на удаление записей: позволяют отобрать требуемые записи и удалить их за один прием. Однако, удаляя данные из связанных таблиц необходимо помнить о целостности данных. Оператор SQL эквивалентный удалению DELETE.
Перекрестные запросы: Это запросы в которых происходит статистическая обработка данных.
Перекрестные запросы обладают рядом достоинств:
Возможность обработки большого объема данных и вывода их в формате, удобном для автоматического создания графиков и диаграмм;
Простота и скорость разработки сложных запросов.
Недостаток перекрёстных запросов: Нельзя сортировать таблицу результатов по значениям, содержащимся в столбцах, т.к. в подавляющем большинстве случаев одновременное упорядочивание данных в столбцах и по всем кортежам невозможно.
Инструкция SQL перекрестных запросов содержит операторы:
TRANSFORM – определяет условие для записей результирующей таблицы;
PIVOT – задает заголовки столбцов результирующего запроса.
