Слайд 1Формирование запросов
С вычисляемыми полями.
Применение псевдонима.
Соединение таблиц в запросе.
Способы создания статического
запросов.
Создание динамического запроса.
Программирование баз данных
Слайд 2Запрос с вычисляемыми полями
получить список работников и их зарплату, в том
числе увеличенную на 15%
SELECT tab_nom, FIO, salary, salary * 1.15
FROM rabotnik.db
Вычисление стоимости товара
SELECT kod_tovara, kol_vo, zena, kol_vo*zena
FROM prodagi.db
Слайд 3Использование псевдонима в запросах
Для придания наглядности получаемым результатам в списке выбираемых
элементов можно использовать квалификатор AS. Данный квалификатор заменяет в результирующей таблице существующее название столбца на заданное:
SELECT kod_tovara, kol_vo, zena,
kol_vo*zena as stoimost
FROM prodagi.db
SELECT count(*) as kol_vo_rabotn,
sum(salary) as obsh_zarpl, avg(salary) as sredn_zarpl,
min (salary) as min_zarpl, max (salary) as max_zarpl
FROM rabotnik.db
Слайд 4Соединение таблиц в запросе
Операция соединения используется в языке SQL для вывода
связанной информации, хранящейся в нескольких таблицах, в одном запросе. В этом проявляется одна из наиболее важных особенностей запросов SQL - способность определять связи между многочисленными таблицами и выводить информацию из них в рамках этих связей. Операции соединения подразделяются на два вида - внутренние и внешние.
Слайд 5Связывание производится, как правило, по первичному ключу одной таблицы и внешнему
ключу другой таблицы - для каждой пары таблиц.
Слайд 6Внутреннее соединение
Внутреннее соединение возвращает только те строки, для которых условие соединения
принимает значение true.
SELECT tovar.kod_tovara, tovar.naimen, prodagi.kol_vo, prodagi.zena, prodagi.kol_vo*prodagi.zena as stoim
FROM tovar.db, prodagi.db
WHERE tovar.kod_tovara=prodagi.kod_tovara
Слайд 7Внешние соединения
Внешнее соединение возвращает все строки из одной таблицы и
только те строки из другой таблицы, для которых условие соединения принимает значение true. Строки второй таблицы, не удовлетворяющие условию соединения (т.е. имеющие значение false), получают значение null в результирующем наборе.
Существует два вида внешнего соединения: LEFT JOIN и RIGHT JOIN.
Слайд 8Соединение SQL JOIN
SQL JOIN - используются для запроса данных из двух
или нескольких таблиц связанных между собой ключами.
Перечислим типы JOIN:
JOIN или INNER JOIN : Возвращает строки, когда есть хотя бы одно совпадение в обеих таблицах.
LEFT JOIN: Возвращает строки из левой таблицы, даже если их нет правой таблице.
RIGHT JOIN: Возвращает строки из правой таблицы, даже если их нет левой таблице.
FULL JOIN: Возвращает строки, когда есть хоть одно совпадение в любой из таблиц.
Слайд 9INNER JOIN - возвращает строки, когда есть хотя бы одно совпадение
в обеих таблицах
SELECT tovar.kod_tovara, tovar.naimen, prodagi.kol_vo, prodagi.zena, prodagi.kol_vo*prodagi.zena as stoim
FROM tovar INNER JOIN prodagi
ON tovar.kod_tovara=prodagi.kod_tovara
Слайд 10В левом соединении (LEFT JOIN) запрос возвращает все строки из левой
таблицы (т.е. таблицы, стоящей слева от зарезервированного словосочетания “LEFT JOIN”) и только те из правой таблицы, которые удовлетворяют условию соединения. Если же в правой таблице не найдется строк, удовлетворяющих заданному условию, то в результате они замещаются значениями null.
Для правого соединения - все наоборот.
Слайд 11Примеры соединения
SELECT tovar.kod_tovara, tovar.naimen, prodagi.kol_vo, prodagi.zena, prodagi.kol_vo*prodagi.zena as stoim
FROM tovar LEFT
JOIN prodagi
ON tovar.kod_tovara=prodagi.kod_tovara
В некоторых базах данных LEFT JOIN и RIGHT JOIN имеют имя LEFT OUTER JOIN и RIGHT OUTER JOIN соответственно.
Слайд 12Создание статического запроса
1 способ:
В Инспекторе Объектов написать текст запроса в свойстве
SQL компонента TQuery.
В свойстве Асtive компонента TQuery установить значение true.
2 способ:
Для формирования текста запроса использовать встроенное в Delphi средство SQL Builder(построитель запросов).
Слайд 133 способ: Создание запроса программно
Query1.SQL.Clear;
Query1.SQL.Add('SELECT tab_nom, FIO FROM KLIENT');
Query1.SQL.Add('WHERE
FIO LIKE ‘%ван%');
Query1.SQL.Add('ORDER BY tab_nom');
Query1.Open;
Слайд 14Создание динамического запроса
Динамические запросы допускают использование параметров. Для определения параметра в
запросе используется двоеточие (:), за которым следует имя параметра.
Основные действия для создания динам.запроса:
Написать запрос в свойстве SQL компонента TQuery.
В WHERE задать поле, которое будет параметром в запросе:
SELECT Name, Fam
FROM МуТablе
WHERE Number = :param
Слайд 153. В свойстве Params компонента TQuery у параметра param в свойстве
DataType указать тип данных поля, выбранного в качестве параметра.
DataType := ftInteger;
Слайд 164. Написать процедуру для активизации и запуска запроса
Procedure *********
Begin
Query1.Close;
Query1.ParamByName(‘param').asInteger := StrtoInt(Edit1.text);
Query1.Open;
end;