
- •Подстановки
- •Создание связей и объединений в запросах
- •Ограничения в многотабличных запросах
- •Редактирование полей справочников
- •Создание связей для запросов
- •Объединение в запросе двух копий одной таблицы (самообъединение)
- •Использование в запросе автоподстановки для автоматического ввода данных
- •Создание параметризованных запросов
- •Запросы, вносящие изменения
- •Специфика:
- •Имя Покупателя : Customer Name Создание и использование подчиненных форм
- •Создание главной и подчиненной форм с помощью мастера
- •Вставка подчиненной формы в главную
- •Связывание главной и подчиненной форм
- •Создание итогов в подчиненных формах
- •Язык sql
- •Команда select
- •Select name1, name2, … -список столбцов, представляемых в результате
- •Устранение избыточности данных
- •Определение выборки – предложение where
- •Булевы операторы: and, or, not
- •Оператор in
- •Оператор between … and
- •Оператор like
- •Оператор is null
- •Применение функций агрегирования
- •Предложение group by
- •Предложение having
- •Ограничение на агрегированные функции
- •Форматирование результатов запросов и выражения
- •Упорядочение выходных полей
- •Использование множества таблиц в одном запросе
- •Операция соединения таблиц посредством ссылочной целостности
- •Вложенные запросы (подзапросы)
- •Связанные подзапросы
- •Оператор exists
- •Объединение множества запросов в один Предложение union
- •Ввод, удаление и изменение значений полей
- •Вставка результатов запроса
- •Исключение (удаление) строк из таблицы
- •Обновление
Связанные подзапросы
Возможность подзапросов порождает возможность ссылки в подзапросе на таблицу, имя которой указано в FORMвнешнего запроса. В этом случае подзапрос повторяется многократно по количеству строк таблицы основного запроса.
Пример. Отыскать всех покупателей, сделавших заказы 3 октября 2006 г.
S
алиас дата
начала работыELECT
*
FROM 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можно объединить выходные данные нескольких запросов в единое множество строк и столбцов.
Пример: Получить сведения обо всех продавцах (Salespeople) и покупателях (Customers) Лондона как данные одного запроса:
SELECT snum, sname
FROM Sales people
WHERE city = ‘London’
UNION
SELECT cnum, cname
FROM Customers
WHERE city = ‘London’;
Заметим, что ; ставится только в самом конце. Заголовки столбцов в результате отсутствуют, поскольку это объединения столбцовsnumсcnumиsnameсcname.
Очевидно, что реализовать UNIONможно только при соблюдении определенных условий:
Столбцы, входящие в состав выходных данных исходных запросов должны быть совместимы по объединению- unioncompatible. Это значит, что в каждом из запросов может быть указано одинаковое число столбцов в порядке: первый, второй, третий и т.д., причемn-й столбец одного запроса должен быть сравним сn-м столбцом другого запроса.
Если для n-го столбца одного запроса вUNIONNULL-значения запрещены, то они запрещены и для других запросов вUNION.
Об избыточности (замечание).UNIONавтоматически исключает из выходных данных дублирующие строки.
Если в UNIONприменяется сортировка-ORDERBY, то приходится указывать не имя столбца, а его номер.
Например: ORDERBY3- по возрастанию.
Ввод, удаление и изменение значений полей
Эти команды образуют подраздел SQL, называемыйDML(DataManipulationLanguage):
INSERT(вставить),UPDATE(обновить),DELETE(удалить).
Еще их называют updatecommand- команды обновления.
Ввод значений:
INSERTINTO<имя таблицы>
VALUES(<значение 1 поля>, <значение 2 поля>, …)
INSERT INTO Sales people
VALUES (1001, ‘Hoffman’, ‘London’, .12);
Е
Комиссионные
сли
бы требовалось ввести данные только в
указанные столбцы в таблице, то нужно
было бы написать:
INSERT INTO Sales people (snum, sname, city, comm)
В остальные- значения по умолчанию (NULLи т.п.)
Вставка результатов запроса
INSERT INTO London staff
SELECT *
FROM Sales people
WHERE city = ‘London’;
Перед выполнением этого Statement’а таблицаLondonstaffдолжна быть создана (с помощью командыCREATETABLE).
Таблица должна соответствовать результатам запроса.