Совокупные характеристики
Для вычисления совокупных характеристик выборки используют специальные функции:
COUNT (<Условие>)Пример
SELECT COUNT (*) FROM Pers;Кроме того, есть функции, вычисляющие минимум, максимум и сумму.
Min (<поле>), Max (<поле>), Sum(<поле>);Пример
SELECT min (Year_b), max (Year_b) FROM Pers;Смешивание характеристик в одном операторе возможно при использовании GROUP BY;
Пример
SELECT Dep, COUNT (*) FROM Pers GROUP BY DepВложенные запросы
SELECT может включать в себя другой SELECT
Пример 1
SELECT Fam, Year_b FROM PersWHERE Year_b>= ALL (SELECT Year_b from Pers1)Поиск сотрудников в таблице Pers не старше любого из Pers1.
Пример 2
SELECT Fam, Year_b FROM PersWHERE Year_b >= ANY (SELECT Year_b from Pers1)Поиск сотрудников в таблице Pers моложе хотя бы одного из Pers1.
В предложении where перед вложенным запросом могут использоваться ключевые слова:
· EXISTS (SELECT …) – вложенный запрос возвращает True, если возвращено непустое множество значений;
· SINGULAR (SELECT …) – вложенный запрос возвращает True, если при отборе возвращено только одно значение.
Объединения таблиц основаны на взаимно однозначном соответствии записей в этих таблицах. Можно строить запрос сразу по нескольким таблицам.
Пример 1
SELECT p1.Fam, p2.Fam, p1.Year_b FROM Pers p1, Pers p2WHERE(p1.Year_b= p2.Year_b) and (p1.Fam: = p2.Fam)Запрос, выбирающий ровесников так, чтобы избежать дублирования данных (чтобы один сотрудник не отображался как ровесник самого себя).
Пример 2
SELECT * FROM Pers, DepWHERE (Pers.Dep = Dep.Dep) AND (Dep.Proizv <> 'п');Внешние объединения
1. Левое объединение LEFT OUTER join … on включает все записи первой таблицы.
Пример
SELECT * FROM Pers LEFT OUTER joinChef on Pers.Fam=Chef.Fam;2. Правое объединение RIGHT OUTER join … on включает все записи второй таблицы, если даже в первой их нет.
Пример
SELECT * FROM Pers RIGHT OUTER joinChef on Pers.Fam = Chef.Fam;3. Полное объединение FULL OUTER join … on включает объединение записи обеих таблиц, независимо от их соответствия.
Пример
SELECT * FROM Pers FULL OUTER joinChef on Pers.Fam=Chef. Fam;Выполнение SCRIPT-файлов (файлы сценария)
Операторы создания БД, таблиц, процедур, триггеров можно хранить и выполнять из файла. Файл создается в текстовом редакторе, по мере необходимости редактируется, а запускается из утилиты WISQL через основное меню File/Run SQL Script.
Тогда в начале файла необходимо использовать оператор SET TERM. Этот оператор используется для назначения нового разделителя вместо ";".
Пример
SET TERM ###;CREATE PROCEDURE FIND_MAX_KOL(IN_TOVAR VARCHAR(20))BEGINSELECT MAX (KOL) FROM RASHODWHERE TOVAR = :IN_TOVARINTO: MAX_KOL;SUSPEND;END###SET TERM ; ## #
Тема 3.3.Запросы на изменение данных в БД
Дата добавления: 2021-09-25; просмотров: 336;