- •Подстановки
- •Создание связей и объединений в запросах
- •Ограничения в многотабличных запросах
- •Редактирование полей справочников
- •Создание связей для запросов
- •Использование в запросе автоподстановки для автоматического ввода данных
- •Создание параметризованных запросов
- •Объединение только тех записей, в которых связанные поля обеих таблиц совпадают- внутреннее.
- •Объединение всех записей из «Имя таблицы («один»)» и только тех записей из «Имя таблицы «многие»», в которых связанные поля совпадают.
- •Объединение всех записей из «Имя таблицы («многие»)» и только тех записей из «Имя таблицы «один»», в которых связанные поля совпадают.
- •Объединение в запросе двух копий одной таблицы (самообъединение)
- •Запросы, вносящие изменения
- •Специфика:
- •Имя Покупателя : Customer Name Создание и использование подчиненных форм
- •Создание главной и подчиненной форм с помощью мастера
- •Вставка подчиненной формы в главную
- •Связывание главной и подчиненной форм
- •Создание итогов в подчиненных формах
- •Язык sql
- •Команда select
- •S elect name1, name2, … - список столбцов, представляемых в результате
- •Устранение избыточности данных
- •Определение выборки – предложение where
- •Булевы операторы: and, or, not
- •Оператор in
- •Оператор between … and
- •Оператор like
- •Оператор is null
- •Применение функций агрегирования
- •Предложение group by
- •Предложение having
- •Ограничение на агрегированные функции
- •Форматирование результатов запросов и выражения
- •Упорядочение выходных полей
- •Использование множества таблиц в одном запросе
- •Операция соединения таблиц посредством ссылочной целостности
- •Вложенные запросы (подзапросы)
- •Связанные подзапросы
- •Оператор exists
- •Объединение множества запросов в один Предложение union
- •Ввод, удаление и изменение значений полей
- •Вставка результатов запроса
- •Исключение (удаление) строк из таблицы
- •Обновление
Связанные подзапросы
Возможность подзапросов порождает возможность ссылки в подзапросе на таблицу, имя которой указано в FORM внешнего запроса. В этом случае подзапрос повторяется многократно по количеству строк таблицы основного запроса.
Пример. Отыскать всех покупателей, сделавших заказы 3 октября 2006 г.
S
алиас дата
начала работы
ELECT
*
F
ROM
Customers
outer
WHERE 10/03/06 IN
(SELECT odate
FROM Orders inner
Сюда
подставляется строка- кандидат из
таблицы внешнего запроса
WHERE outer. cnum = inner. cnum);
Оператор exists
Существует специальный оператор, всегда использующий подзапрос в качестве аргумента- это оператор EXISTS.
Он используется, когда от подзапроса нужно лишь узнать дает он NULL или нет. Соответственно EXISTS возвращает «ложь» или «истину».
Например, нужно извлечь данные из таблицы Customers в том случае, если хотя бы один покупатель из нее из London’а:
SELECT cnum, cname, city
FROM Customers
WHERE EXISTS (SELECT *
FROM Customers
WHERE city = ‘London’);
В результате можно получить:
Объединение множества запросов в один Предложение union
Это еще один способ комбинирования данных запросов. С помощью предложения UNION можно объединить выходные данные нескольких запросов в единое множество строк и столбцов.
Пример: Получить сведения обо всех продавцах (Sales people) и покупателях (Customers) Лондона как данные одного запроса:
SELECT snum, sname
FROM Sales people
WHERE city = ‘London’
UNION
SELECT cnum, cname
FROM Customers
WHERE city = ‘London’;
Заметим, что ; ставится только в самом конце. Заголовки столбцов в результате отсутствуют, поскольку это объединения столбцов snum с cnum и sname с cname.
Очевидно, что реализовать UNION можно только при соблюдении определенных условий:
Столбцы, входящие в состав выходных данных исходных запросов должны быть совместимы по объединению- union compatible. Это значит, что в каждом из запросов может быть указано одинаковое число столбцов в порядке: первый, второй, третий и т.д., причем n-й столбец одного запроса должен быть сравним с n-м столбцом другого запроса.
Если для n-го столбца одного запроса в UNION NULL-значения запрещены, то они запрещены и для других запросов в UNION.
Об избыточности (замечание). UNION автоматически исключает из выходных данных дублирующие строки.
Если в UNION применяется сортировка- ORDER BY, то приходится указывать не имя столбца, а его номер.
Например: ORDER BY 3- по возрастанию.
Ввод, удаление и изменение значений полей
Эти команды образуют подраздел SQL, называемый DML (Data Manipulation Language):
INSERT (вставить), UPDATE (обновить), DELETE (удалить).
Еще их называют update command- команды обновления.
Ввод значений:
INSERT INTO <имя таблицы>
VALUES (<значение 1 поля>, <значение 2 поля>, …)
INSERT INTO Sales people
VALUES (1001, ‘Hoffman’, ‘London’, .12);
Е
Комиссионные
сли
бы требовалось ввести данные только в
указанные столбцы в таблице, то нужно
было бы написать:
INSERT INTO Sales people (snum, sname, city, comm)
В остальные- значения по умолчанию (NULL и т.п.)
