Упорядочивание результирующего набора
Стр 1 из 3Следующая ⇒ Формирование запросов средствами языка SQL Оператор SELECT Оператор SELECT позволяет формировать запрос к базе данных. В результате выполнения этого оператора СУБД формирует результирующий набор (иногда также называемый набором данных). Если этот оператор был введен в интерактивном режиме взаимодействия с базой данных, то результат отображается в виде таблицы в текущем диалоговом окне. На рисунке 3.1. приведен пример выполнения оператора SELECT, извлекающего данные всех столбцов из таблицы dept. Если оператор SELECT выполняется из приложения на другом языке программирования, то формируется результирующий набор, размещаемый в памяти приложения или сервера БД, а затем приложение извлекает данные из результирующего набора в свои переменные. После фразы SELECT указывается список выражений, определяющий значения, формируемые запросом. В самом простом случае список выражений является списком полей таблицы. Если требуется извлечение значений всех полей, то вместо списка полей можно указать символ *. Например: SELECT * FROM tbl1;Имя поля может быть квалифицировано именем таблицы, указываемым через точку. Например: SELECT tbl1.f1, tbl2.f1 FROM tbl1, tbl2;
Во всех операциях сравнения языка SQL применяется трехзначная логика (3VL). Предикат, указываемый фразой WHERE, может принимать одно из следующих значений: TRUE, FALSE или UNKNOWN. Значение UNKNOWN получается при сравнении значения NULL с любым другим значением, включая значение NULL.
Предикат содержит одно или несколько выражений, выполняющих сравнения. В выражениях могут участвовать имена столбцов, функции агрегирования, переменные встроенного SQL, параметры модульного SQL. Кроме стандартных операторов сравнения, таких как =, <>, >, <, >=, <= могут быть использованы следующие операторы:
эквивалентно выражению (x<=z) AND (x>=y);
Для примера обозначим строку запроса заключенной в скобки, а строки подзапроса разделенными пробелом. Так, следующий предикат вернет значение TRUE:
так как первая строка из подзапроса удовлетворяет условию. А предикат (NULL, NULL) = ANY (12, 2 NULL, NULL 5, 20)вернет значение UNKNOWN, так как сравнение NULL c NULL в результате дает UNKNOWN. Предикат (10, 1)> ALL (12, 0 0, NULL 5, 20)вернет значение FALSE, так как сравнение строки (10,1) с каждой строкой подзапроса возвращает значение FALSE. Функции агрегирования Фраза GROUP BY оператора SELECT применяется для определения группы строк, над которыми выполняются функции агрегирования. Если в операторе SELECT указана фраза GROUP BY, то все имена столбцов, указываемые в списке для определения создаваемого результирующего набора, должны быть указаны с функциями агрегирования, поскольку для каждой группы строк в результирующий набор будет включена только одна строка, содержащая значения полученные функциями агрегирования над данной группой строк. К функциям агрегирования относятся следующие функции языка SQL:
Фраза HAVING оператора SELECT определяет предикат аналогично фразе WHERE, но применяемый к строкам, полученным в результате выполнения функций агрегирования. Приведем пример выбора с применением групп. Столбец dno имеет всего три различных значения: 11, 22 и 33. Для каждой из трех групп находится минимальное и максимальное значение столбца f2:
Результатом выполнения этого SQL-оператора будет формирование следующих строк: DNO MIN(f2) MAX(f2) 11 125 200 22 200 2300 33 100 150При выборе с применением групп и с дополнительным ограничением на значение в столбце MIN(f2): SELECT dno, MIN(f2), MAX(f2) FROM tbl1 GROUP BY dno HAVING MAX(f2) < 1000;В результате выполнения этого SQL-оператора будут возвращены только две строки: первая и последняя: DNO MIN(f2) MAX(f2) 11 125 200 33 100 150Упорядочивание результирующего набора Фраза ORDER BY применяется для упорядочивания результирующего набора, которое выполняется в соответствии со значениями столбцов, указанных в списке после фразы ORDER BY. Сначала производится упорядочивание по первому указанному столбцу, потом по второму и т.д. При упорядочивании можно указать опцию ASC (по возрастанию) или DESC (по убыванию). Например: SELECT f1,f2 FROM tbl1 ORDER BY f2;
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|