Тема 14. Упорядочение данных. Группировка данных. Выборка данных из нескольких таблиц

Основные вопросы: Компоненты 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. Пример запроса с псевдонимами полей


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: