22dd04e5

Агрегатные функции, группировка и условия

Введение
Логические выражения раздела WHERE
Предикат сравнения
Примеры запросов с использованием предиката сравнения
Предикат between
Примеры запросов с использованием предиката between
Предикат null
Примеры запросов с использованием предиката null

Предикат in
Примеры запросов с использованием предиката in
Предикат like
Примеры запросов с использованием предиката like
Предикат similar
Примеры запросов с использованием предиката similar
Предикат exists
Примеры запросов с использованием предиката exists
Предикат unique
Примеры запросов с использованием предиката unique

Предикат overlaps
Предикат сравнения с квантором
Предикат match
Примеры запросов с использованием предиката match
Предикат distinct
Примеры запросов с использованием предиката distinct
Заключение

Пример 14.1.1

Агрегатные функции, группировка и условия

Введение
Внешние соединения
Агрегатные функции, группировка и условия раздела HAVING
Семантика агрегатных функций
Результаты запросов и агрегатные функции

Логические выражения раздела HAVING
Предикаты сравнения
Предикат between
Предикат null
Предикат in
Предикат like
Предикат exists
Предикат unique

Предикаты сравнения с квантором
Предикат distinct
Ссылки на порождаемые таблицы в разделе FROM
Еще один способ формулировки запросов
Случаи, в которых без порождаемых таблиц обойтись невозможно
Более сложные конструкции оператора выборки
Соединенные таблицы
Формальные определения
Примеры соединений разного вида

Примеры запросов с использованием соединенных таблиц
Порождаемые таблицы с горизонтальной связью (lateral_derived_table)
Заключение
Пример 15.1.1

Тестирование web-приложений на скриптовых языках

Как уже было отмечено ранее, при работе с Web-приложением пользователь непосредственно взаимодействует с посредником в виде Web-браузера. Браузер, в свою очередь, взаимодействует с Web-сервером, на котором работает приложение, по протоколу HTTP (конечно, возможно использование других посредников и других протоколов, однако они применяются достаточно редко, и здесь мы их рассматривать не будем). Для передачи данных Web-браузера серверу протоколом HTTP [11] предусмотрено несколько методов передачи параметров, из которых в большинстве Web-приложений используются два — GET и POST. Параметры GET — это параметры, передаваемые непосредственно в адресной строке Web-браузера. Параметры POST передаются вместе с пакетами данных (и используются, как правило, либо для передачи больших объемов данных, поскольку не имеют ограничений на размер, либо чтобы не загромождать адресную строку браузера).
Чтобы протестировать приложение, необходимо знать, какие имена параметров оно ожидает увидеть в запросе и какие значения должны принимать эти параметры, чтобы выполнилась та или иная часть программы. Для выполнения этих задач необходим анализ потока данных в приложении. В общем случае эта задача нетривиальна и требует использования методов статического анализа кода; однако для каждого конкретного приложения с большой вероятностью такой анализ может быть достаточно простым. Тем более что при создании тестов не обязательно задаваться целью проанализировать все возможные варианты поведения приложения в зависимости от входных данных — следует исходить из желаемого соотношения качества тестов ко времени и ресурсам, необходимым для их разработки. Сложность создания инструмента для анализа потока данных зависит от структуры исходного кода приложения. Как будет показано ниже, во многих случаях за короткое время можно создать инструмент, производящий достаточно подробный разбор потока данных.

Извлечение имен параметров и их значений

Содержание раздела