Упорядочение данных


Содержание лекционного занятия:

  • Компоненты TQuery и TDataSource
  •  Реализация процедур открытия и закрытия набора дан­ных
  • Вычисляемые поля

Упорядочение данных

Для упорядочения данных в выборке, полученной в результате выполнения за­проса, используется предложение 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

Рис.19. Пример использования порядкового номера поля в предложении ORDER BY

Вместо имени поля в предложении ORDER BY можно указать целое число, опреде­ляющее порядковый номер поля в списке после ключевого слова SELECT (если про­изводится выборка всех полей таблицы с помощью символа *, то число задает по­рядковый номер поля в таблице базы данных). Например, для вывода списка товаров в порядке убывания цены можно использовать следующий запрос:

SELECT Категория. Наименование. Цена FROM Товары ORDER BY 3 DESC

Результат выполнения запроса изображен на рис. 19.

Вычисляемые поля

Язык SQL позволяет создавать вычисляемые поля в тексте запроса. Для реализа­ции этой функции в запросе просто приводится выражение, в котором использу­ются арифметические и математические операторы, а также имена полей в качестве переменных. В результате выполнения запроса с вычисляемыми полями вы­борка будет содержать не только информацию из таблиц базы данных, но и допол­нительную информацию, полученную в результате вычисления заданного выра­жения.

Помимо математических операций, в SQL поддерживается ряд строковых функций, выполняющий такие операции, как конкатенация строк, выделение подстроки, поиск подстроки внутри строки и ряд других. В SQL-запросах также могут применяться фун­кции преобразования символьного типа в числовой и наоборот, символьного типа в да­ту и т. п.

При создании вычисляемого поля можно использовать следующие арифметичес­кие операторы:

·       оператор сложения (+);

·       оператор вычитания (-);

·       оператор умножения (*);

·       оператор деления (/).

Приоритет перечисленных операторов соответствует общепринятому: сначала выполняются умножение и деление, затем — сложение и вычитание. Порядком выполнения операторов можно управлять с помощью круглых скобок.

Рассмотрим пример использования вычисляемых полей. Для этого на основании данных таблицы Продажи вычислим для каждого товара сумму денег, полученных за проданный товар (произведение цены на количество проданного товара) и сум­му, на которую заказано товаров (произведение цены на количество заказанного товара), а также разность между ними:

SELECT [Код товара]. Цена. Заказано. Продано.

Цена*Продано. Цена*3аказано,

Цена*Заказано-Цена*Продано

FROM Продажи

Данный запрос содержит три вычисляемых поля. Результат его выполнения при­веден на рис. 20.

Помимо арифметических операторов допускается использование ряда математи­ческих функций, например:

  • ABS — вычисление абсолютного значения;
  • ROUND — округление;
  • SQR — извлечение квадратного корня;
  • ЕХР — экспонента;
  •  LOG — натуральный логарифм;
  • SIN, COS, TAN — тригонометрические функции.

Арифметические операторы и математические функции можно использовать как в списке полей после ключевого слова SELECT, так и в предложении, задающем усло­вие выборки (WHERE).

Рис. 20. Результат выполнения запроса с вычисляемыми полями

Набор математических функций зависит от конкретной реализации языка SQL. Синтак­сис одинаковых функций в разных реализациях также может различаться (например, функция вычисления квадратного корня может обозначаться и как SQR, и как SQRT).

Вопросы для самоконтроля:

  1. Что такое внешняя база данных?
  2. Как идентифицируется таблица внешней базы данных?
  3. Как идентифицируется таблица внешней распределенной базы данных?

Рекомендуемая литература:

  1. Избачков Ю.С., Петров В.Н., Информационные системы: Учебник для вузов. 2-е изд. – СПб.: Питер, 2005.-656
  2. Информатика: Учебник/Под ред. проф. Н.В. Макаровой, - М.: Финансы и  статистика, 1997, 2000.