
- •Подстановки
- •Создание связей и объединений в запросах
- •Ограничения в многотабличных запросах
- •Редактирование полей справочников
- •Создание связей для запросов
- •Объединение в запросе двух копий одной таблицы (самообъединение)
- •Использование в запросе автоподстановки для автоматического ввода данных
- •Создание параметризованных запросов
- •Запросы, вносящие изменения
- •Специфика:
- •Имя Покупателя : Customer Name Создание и использование подчиненных форм
- •Создание главной и подчиненной форм с помощью мастера
- •Вставка подчиненной формы в главную
- •Связывание главной и подчиненной форм
- •Создание итогов в подчиненных формах
- •Язык sql
- •Команда select
- •Select name1, name2, … -список столбцов, представляемых в результате
- •Устранение избыточности данных
- •Определение выборки – предложение where
- •Булевы операторы: and, or, not
- •Оператор in
- •Оператор between … and
- •Оператор like
- •Оператор is null
- •Применение функций агрегирования
- •Предложение group by
- •Предложение having
- •Ограничение на агрегированные функции
- •Форматирование результатов запросов и выражения
- •Упорядочение выходных полей
- •Использование множества таблиц в одном запросе
- •Операция соединения таблиц посредством ссылочной целостности
- •Вложенные запросы (подзапросы)
- •Связанные подзапросы
- •Оператор exists
- •Объединение множества запросов в один Предложение union
- •Ввод, удаление и изменение значений полей
- •Вставка результатов запроса
- •Исключение (удаление) строк из таблицы
- •Обновление
Оператор between … and
Вместо перечисления, как в IN, в BETWEEN задаются границы. Первое значение должно быть первым в алфавитном или числовом порядке (чувствителен к порядку).
SELECT * FROM Salespeople
WHERE comm BETWEEN .10 AND .12;
Граничные значения включаются в зону истинности. Если их нужно исключить, то:
SELECT * FROM Salespeople
WHERE (comm BETWEEN .10 and .12) and not
Comm IN (.10, .12);
Для символьных полей:
SELECT * FROM Salespeople
WHERE cname BETWEEN “A” AND “G”;
Заметим, что “A” и “G” строки и при сравнении неравные строки заполняются пробелами, но пробел предшествует символам в алфавитной кодировке, поэтому строка “Giovanni” не будет включена, поэтому нужно либо дать следующую букву- «Н», либо приписать несколько Z к G- “GZZ”, чтобы включить все имена на G.
Оператор like
Используется для поиска подстрок и применим только к символьным (текстовым) полям. Для расширения зоны поиска применяются символы- шаблоны:
« _ » - заменяет один любой; % - последовательность, в том числе и нулевой длины
.
SELECT * FROM Customers
WHERE cname LIKE “G%”;
Иногда (достаточно редко) возникает проблема для самих этих символов (как искать их). Для ее решения существует возможность определить так называемый ESCAPE- символ. Предшествуя символу- шаблону ESCAPE-символ делает из него обычный символ. Он действует и на себя самого если указать два раза подряд.
SELECT * FROM Sales people
WHERE
sname LIKE “%/-%” ESCAPE ‘/’;
определяет символ ‘/’ как служебный ESCAPE
Оператор is null
Поскольку в полях может быть значение NULL, которые расшифровываются как «неизвестные», то и операции над ними дают «неизвестное» (например NOT). Поэтому нужен механизм фильтрования подмножества с NULL и это оператор IS NULL:
SELECT * FROM Customers WHERE city IS NULL;
Допустима противоположная конструкция IS NOT NULL. Еще пример на NOT с другими операторами:
WHERE NOT city IN (“London”, “Barcelona”);
Применение функций агрегирования
Запросы могут давать в результате не только группу значений, но и работать по одному полю. Для этого применяются агрегатные функции:
COUNTопределяет количество строк или значений поля, выбранных посредством запроса (и неNULL);
SUM- арифметическая сумма всех значений поля;
AVG- среднее значение по выбранному полю;
MAX, MIN.
Пример:
SELECT
SUM (amt)
F
Имя
поля попадает в аргумент
Сумма всех заявок из таблицы Orders. На выходе- единственное значение.
Специальные атрибуты в COUNT (количество)
Когда нужно подсчитать по столбцу, используют DISTINCT(только для различных значений).
SELECT COUNT (DISTINCT snum) FROM Orders;
Для того, чтобы считать целиком строки:
SELECT
COUNT (*) FROM Customers;
и NULLи повторения включаются.
Если мы хотим исключить NULLи сузить до поля, то используетсяALL:
SELECT COUNT (ALL rating) FROM Customers;
Подсчитываем исключая NULL, но включая повторения.
Скалярные выражения
До сих пор в аргументах агрегатных функций было одно поле, возможно и выражение:
SELECT MAX (binc + amt) FROM Orders;
Для каждой строки сначала берется сумма двух полей, а потом из всех таких сумм - МАХ.