Основные вопросы: Компоненты TQuery и TDataSource. Реализация процедур открытия и закрытия набора данных. Псевдонимы полей. Функции агрегирования:COUNT, SUM, MIN, МАХ, AVG. Использование агрегирующих функций при группировке данных. Сортировка результатов выборки с помощью предложения GROUP BY. Использования предложения HAVING. Соединение равенства, соединение неравенства, внешние соединения.
Упорядочение данных
Для упорядочения данных в выборке, полученной в результате выполнения запроса, используется предложение ORDER BY. Синтаксис оператора SELECT в этом случае будет следующим:
SELECT {* | ALL | DISTINCT поле. поле2 полеN}
FROM Таблица1 {. Таблица2 ТаблицаN}
WHERE условие
ORDER BY поле {ASC | DESC}
После ключевых слов ORDER BY сначала указывается имя поля (полей), по которому производится сортировка, а затем — режим сортировки:
· ASC — информация располагается в порядке возрастания значения указанного поля (для текстовых полей — в алфавитном порядке), этот режим используется по умолчанию;
· DESC — информация располагается в порядке убывания значений указанного поля (для текстовых полей — в порядке, обратном алфавитному).
|
|
Например, чтобы отсортировать список товаров по алфавиту, следует использовать следующий запрос:
SELECT Категория. Наименование. Цена
FROM Товары
ORDER BY Наименование
Результат выполнения данного запроса приведен на рис. 18.
Рис. 18. Пример использования предложения ORDER BY
Вместо имени поля в предложении ORDER BY можно указать целое число, определяющее порядковый номер поля в списке после ключевого слова SELECT (если производится выборка всех полей таблицы с помощью символа *, то число задает порядковый номер поля в таблице базы данных). Например, для вывода списка товаров в порядке убывания цены можно использовать следующий запрос:
SELECT Категория. Наименование. Цена FROM Товары ORDER BY 3 DESC
Результат выполнения запроса изображен на рис. 19.
Рис.19. Пример использования порядкового номера поля в предложении ORDER BY
Вычисляемые поля
Язык SQL позволяет создавать вычисляемые поля в тексте запроса. Для реализации этой функции в запросе просто приводится выражение, в котором используются арифметические и математические операторы, а также имена полей в качестве переменных. В результате выполнения запроса с вычисляемыми полями выборка будет содержать не только информацию из таблиц базы данных, но и дополнительную информацию, полученную в результате вычисления заданного выражения.
Помимо математических операций, в SQL поддерживается ряд строковых функций, выполняющий такие операции, как конкатенация строк, выделение подстроки, поиск подстроки внутри строки и ряд других. В SQL-запросах также могут применяться функции преобразования символьного типа в числовой и наоборот, символьного типа в дату и т. п.
|
|
При создании вычисляемого поля можно использовать следующие арифметические операторы:
· оператор сложения (+);
· оператор вычитания (-);
· оператор умножения (*);
· оператор деления (/).
Приоритет перечисленных операторов соответствует общепринятому: сначала выполняются умножение и деление, затем — сложение и вычитание. Порядком выполнения операторов можно управлять с помощью круглых скобок.
Рассмотрим пример использования вычисляемых полей. Для этого на основании данных таблицы Продажи вычислим для каждого товара сумму денег, полученных за проданный товар (произведение цены на количество проданного товара) и сумму, на которую заказано товаров (произведение цены на количество заказанного товара), а также разность между ними:
SELECT [Код товара]. Цена. Заказано. Продано.
Цена*Продано. Цена*3аказано,
Цена*Заказано-Цена*Продано
FROM Продажи
Данный запрос содержит три вычисляемых поля. Результат его выполнения приведен на рис. 20.
Помимо арифметических операторов допускается использование ряда математических функций, например:
· ABS — вычисление абсолютного значения;
· ROUND — округление;
· SQR — извлечение квадратного корня;
· ЕХР — экспонента;
· LOG — натуральный логарифм;
· SIN, COS, TAN — тригонометрические функции.
Арифметические операторы и математические функции можно использовать как в списке полей после ключевого слова SELECT, так и в предложении, задающем условие выборки (WHERE).
Рис. 20. Результат выполнения запроса с вычисляемыми полями
Набор математических функций зависит от конкретной реализации языка SQL. Синтаксис одинаковых функций в разных реализациях также может различаться (например, функция вычисления квадратного корня может обозначаться и как SQR, и как SQRT).
Псевдонимы полей
В SQL-запросах можно изменять имена полей. Задаваемые при этом новые имена называются псевдонимами (aliases). Их удобно применять при задании в запросе вычисляемых полей. С помощью псевдонимов этим полям можно присваивать осмысленные имена. Псевдоним помещается после имени поля или вычисляемого выражения через ключевое слово AS.
ВНИМАНИЕ. Псевдоним действителен только в пределах конкретного запроса.
В качестве примера воспользуемся предыдущим запросом, задав в нем псевдонимы для вычисляемых полей:
SELECT [Код товара]. Цена. Заказано, Продано.
Цена*Продано AS [Сумма продажи].
Цена*3аказано AS [Сумма заказа].
Цена*Заказано-Цена*Продано AS [Разность]
FROM Продажи
Результаты выполнения данного запроса приведены на рис. 21.
Способы задания псевдонимов различаются в разных реализациях SQL. Часто псевдоним задается просто указанием нового имени через пробел после имени поля или вычисляемого выражения без дополнительных ключевых слов.
Рис. 21. Пример запроса с псевдонимами полей