Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
db / Лекции / 6 семестр / Языки запросов.docx
Скачиваний:
103
Добавлен:
23.03.2015
Размер:
280.32 Кб
Скачать
        1. Сортировка по нескольким столбцам или выражениям

Для упорядочения строк результирующей таблицы по нескольким столбцам следует во фразе ORDER BY привести список этих столбцов. Для каждого из них можно также указать направление сортировки и расположение строк со значениями NULL.

При упорядочении по нескольким столбцам сначала производится сортировка строк в указанном порядке по первому столбцу из списка, затем набор строк с одинаковым значением отсортированного столбца сортируется по второму столбцу и т. д.

Запрос.Вывести номера телефонов и фамилии преподавателей. Упорядочить по убыванию номеров телефонов и по возрастанию фамилий.

SELECT Tel, Name

FROM TEACHER

ORDER BY Tel DESC, Name;

      1. Итоги лекции

Усвоив материал этой лекции (урока), студенты научились:

  • формулировать запросы с группировкой по отдельным столбцам или выражениям;

  • использовать группировку по нескольким столбцам или выражениям;

  • задавать условия для отбора групп;

  • сортировать результаты запроса по отдельным столбцам и выражениям;

  • сортировать по нескольким столбцам и выражениям (в т.ч. отсутствующим в результирующей таблице);

  • указывать направление сортировки.

    1. Множественные операции над таблицами (0-0)

      1. Аннотация к лекции

Рассмотренные ранее варианты предложения SELECT соответствуют некоторым операциям реляционной алгебры, а именно — проекции, селекции (отбору) и соединению. Кроме того, для достижения необходимой теоретико-множественной полноты в SQL введены три дополнительные операции — объединение (UNION), пересечение (INTERSECT) и разность (EXCEPT). Все они выполняются над таблицами, полученными в результате запросов, и, в свою очередь, возвращают таблицу.

      1. Множественные операции в стандарте sql

В стандарте SQL множественные операции имеют следующий синтаксис:

запрос {UNION | INTERSECT | EXCEPT } [DISTINCT | ALL] запрос

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

  • UNION – все строки таблиц, возвращенных обоими запросами;

  • INTERSECT – только те строки, которые имеются в таблицах обоих запросов;

  • EXCEPT – только те строки таблицы первого запроса, которых нет среди строк таблицы второго запроса.

Запросы, содержащие множественные операторы, называются составными.

Ключевые слова ALL и DISTINCT указывают, допускаются ли в результирующей таблице повторяющиеся строки.

Примечание.Отметим, что в обычных запросах при отсутствии явного указания признака уникальности предполагается использование ключевого слова ALL, а в составных запросах – DISTINCT.

Если смысл ключевого слова ALL для операции UNION интуитивно понятен (все экземпляры строк результирующих таблиц запросов, в том числе одинаковые, включаются в результирующую таблицу множественной операции), то для операций INTERSECT и EXCEPT он не очевиден. В стандарте SQL для них принята следующая трактовка. Пусть, например, обе исходные таблицы Т1 и Т2 содержат строку t, причем первая из них содержит n дубликатов t, а вторая – m дубликатов. Тогда результирующая таблица множественной операции будет содержать следующее количество дубликатов стоки t:

Tl UNION ALL T2

n + m

Tl INTERSECT ALL

T2 min(n, m)

Tl EXCEPT ALL T2

max((n – m), 0)

Такая изощренная трактовка поддерживается не во всех СУБД. Дублирование строк в результате операции объединения, как правило, допускается, но для операций пересечения и разности – запрещается. В частности, именно так работает Oracle.

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

  • обе таблицы должны иметь одинаковое количество столбцов;

  • соответствующие пары столбцов должны быть одинаковых или совместимых типов.