|
Программирование >> Неопределенные и пропущенные значения
48 2. Выборка данных (оператор SELECT) Оператор NOT Обгчнхй унарнхй оператор NOT обращает оценку TRUE в FALSE и наоборот. Однако NOT NULL по прежнему будет возвращать пустое значение NULL. При этом следует отличать случай NOT NULL от условия IS NOT NULL, которое является противоположностью IS NULL, отделяя известнхе значения от неизвестнгх. Оператор AND Если результат двух условий, объединенных оператором AND, известен, то применяются правила булевой логики, то есть при обоих утверждениях TRUE составное утверждение также будет TRUE. Если же хотя бы одно из двух утверждений будет FALSE, то составное утверждение будет FALSE. Если результат одного из утверждений неизвестен, а другой оценивается как TRUE, то состояние неизвестного утверждения является определяющим, и, следовательно, итоговый результат также неизвестен. Если результат одного из утверждений неизвестен, а другой оценивается как FALSE, итоговхй результат будет FALSE. Если результат обоих утверждений неизвестен, то результат также остается неизвестным. Оператор OR Если результат двух условий, объединеннгх оператором OR, известен, то применяются правила булевой логики, а именно: если хотя бы одно из двух утверждений соответствует TRUE, то и составное утверждение будет TRUE, если оба утверждения оцениваются как FALSE, то составное утверждение будет FALSE. Если результат одного из утверждений неизвестен, а другой оценивается как TRUE, итоговый результат будет TRUE. Если результат одного из утверждений неизвестен, а другой оценивается как FALSE, то состояние неизвестного утверждения имеет определяющее значение. Следовательно, итоговый результат также неизвестен. Если результат обоих утверждений неизвестен, то результат также остается неизвестным. 2.7. Упорядочение в1ходн1х полей (ORDER BY) 49 Примечание Отсутствующие (NULL) значения целесообразно использовать в столбцах, предназначенных для агрегирования, чтобы извлечь преимущества из способа обработки пустых значений в функциях COUNT и AVERAGE. Практически во всех остальных случаях пустых значений следует избегать, так как при их наличии существенно усложняется корректное построение условий отбора, приводя иногда к непредсказуемым результатам выборки. Для индикации же отсутствующих, неприменимых или по какой-то причине неизвестных данных можно использовать значения по умолчанию, устанавливаемые заранее (например, с помощью команды CREATE TABLE (раздел 4.1)). 2.7. Упорядочение выходнгх полей (ORDER BY) Как уже отмечалось, записи в таблицах реляционной базы данных не упорядочены. Однако данные, выводимые в результате выполнения запроса, могут быть упорядочены. Для этого используется оператор ORDER BY, который позволяет упорядочивать выводимые записи в соответствии со значениями одного или нескольких выбранных столбцов. При этом можно задать возрастающую (ASC) или убывающую (DESC) последовательность сортировки для каждого из столбцов. По умолчанию принята возрастающая последовательность сортировки. Запрос, позволяющий выбрать все данные из таблице! предметов обучения SUBJECT с упорядочением по наименованиям предметов, выглядит следующим образом: SELECT * FROM SUBJECT ORDER BY SUBJ NAME; Тот же список, но упорядоченнхй в обратном порядке, можно получить запросом: SELECT * FROM SUBJECT ORDER BY SUBJ NAME DESC; Можно упорядочить выводимый список предметов обучения по значениям семестров, а внутри семестров - по наименованиям предметов. SELECT * FROM SUBJECT ORDER BY SEMESTER , SUBJ NAME ; Предложение ORDER BY может использоваться с GROUP BY для упорядочения групп записей. При этом оператор ORDER BY в запросе всегда должен быть последним. SELECT SUBJ NAME , SEMESTER, MAX(HOUR) FROM SUBJECT GROUP by SEMESTER, SUBJ NAME ORDER BY SEMESTER; При упорядочении вместо наименований столбцов можно указывать их номера, имея, однако, в виду, что в данном случае это номера столбцов, указанные при определении выходных данных в запросе, а не номера столбцов в таблице. Полем с номером 1 является первое поле, указанное в предложении ORDER BY - независимо от его расположения в таблице. SELECT SUBJ ID, SEMESTER FROM SUBJECT ORDER BY 2 DESC; В этом запросе выводимые записи будут упорядочены по ПОЛЮ SEMESTR. Если в поле, которое используется для упорядочения, существуют NULL-значения, то все они размещаются в конце или предшествуют всем остальным значениям этого поля. Упражнения 1. Предположим, что стипендия всем студентам увеличена на 20%. Напишите запрос к таблице STUDENT, выполняющий вывод номера студента, фамилию студента и величину увеличенной стипендии. Вгходные данные упорядочить: а) по значению последнего столбца (величине стипендии); б) в алфавитном порядке фамилий студентов.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |