- •Язык запросов sql
- •Введение в sql(0-0)
- •Аннотация к лекции
- •Краткая история развития sql
- •Возможности языка
- •Основы sql
- •Типы данных sql
- •Литералы
- •Операторы и выражения
- •Именование объектов
- •Комментарии
- •Итоги лекции
- •Простейшие запросы (0-0)
- •Аннотация к лекции
- •О предложении select
- •Основные фразы – select и from
- •Фраза select
- •Синтаксис фразы select
- •Указание выводимых столбцов
- •Исключение повторяющихся строк
- •Использование вычисляемых выражений
- •Переопределение имен результирующих столбцов
- •Включение литералов в результат запроса
- •Вывод результатов в файл
- •Фраза from
- •Синтаксис фразы from
- •Синонимы таблиц
- •Запрос в качестве имени таблицы
- •Итоги лекции
- •Отбор строк по условию (0-0)
- •Аннотация к лекции
- •Простейшие условия
- •Операторы сравнения
- •Логические операторы
- •Использование выражений над столбцами
- •Специальные операторы
- •Проверка на принадлежность множеству
- •Проверка на принадлежность диапазону значений
- •Проверка на соответствие шаблону
- •Проверка на неопределенное значение
- •Итоги лекции
- •Многотабличные запросы (0-0)
- •Аннотация к лекции
- •Декартово произведение таблиц
- •Условие соединения
- •Соединение таблиц по равенству
- •Соединение таблиц по неравенству
- •Самосоединение таблицы
- •Внешнее соединение таблиц
- •Соединение с использованием фразы from
- •Итоги лекции
- •Использование функций (0)
- •Аннотация к лекции
- •Агрегатные функции
- •Однострочныефункции
- •Строковые функции
- •Числовые функции
- •Временные функции
- •Функции преобразования
- •Итогилекции(урока)
- •Группировка и сортировка (0)
- •Аннотация к лекции
- •Запросы с группировкой строк
- •Понятие группировки строк
- •Группировка по одному столбцу
- •Группировка по нескольким столбцам
- •Использование выражений
- •Условиеотборагрупп
- •Сортировка строк
- •Сортировка по столбцу или выражению
- •Сортировка по нескольким столбцам или выражениям
- •Итоги лекции
- •Множественные операции над таблицами (0-0)
- •Аннотация к лекции
- •Множественные операции в стандарте sql
- •Объединение таблиц
- •Пересечение таблиц
- •Разность таблиц
- •Дополнительные аспекты использования множественных операций
- •Множественные операции и группировка
- •Множественные операции и сортировка
- •Итоги лекции
- •Определение таблиц и представлений (0-0)
- •Аннотация к лекции
- •Создание таблицы
- •Изменениетаблицы
- •Возможности изменения таблиц
- •Добавление столбца
- •Изменение определения столбца
- •Удаление столбца
- •Переименование таблицы
- •Удаление таблицы
- •Определение индексов
- •Представления
- •Итоги лекции
- •Манипулирование данными (0-0)
- •Аннотация к лекции
- •Добавление новых строк
- •Варианты добавления строк
- •Вставка отдельных строк
- •Использование запроса при вставке строк
- •Вставка значений по умолчанию
- •Обновление существующих данных
- •Удаление существующих строк
- •Импорт и экспорт данных
- •Итоги лекции
- •Определение ограничений целостности, ключей, задание прав доступа к данным (0-18)
- •Аннотация к лекции
- •Виды ограничений целостности
- •Ограничение на отсутствие значения
- •Ограничениеуникальности
- •Ограничение первичного ключа
- •Ограничение ссылочной целостности
- •Изменение ограничений целостности
- •Итоги лекции
- •Программирование бд (19)
Сортировка по нескольким столбцам или выражениям
Для упорядочения строк результирующей таблицы по нескольким столбцам следует во фразе ORDER BY привести список этих столбцов. Для каждого из них можно также указать направление сортировки и расположение строк со значениями NULL.
При упорядочении по нескольким столбцам сначала производится сортировка строк в указанном порядке по первому столбцу из списка, затем набор строк с одинаковым значением отсортированного столбца сортируется по второму столбцу и т. д.
Запрос.Вывести номера телефонов и фамилии преподавателей. Упорядочить по убыванию номеров телефонов и по возрастанию фамилий.
SELECT Tel, Name
FROM TEACHER
ORDER BY Tel DESC, Name;
Итоги лекции
Усвоив материал этой лекции (урока), студенты научились:
формулировать запросы с группировкой по отдельным столбцам или выражениям;
использовать группировку по нескольким столбцам или выражениям;
задавать условия для отбора групп;
сортировать результаты запроса по отдельным столбцам и выражениям;
сортировать по нескольким столбцам и выражениям (в т.ч. отсутствующим в результирующей таблице);
указывать направление сортировки.
Множественные операции над таблицами (0-0)
Аннотация к лекции
Рассмотренные ранее варианты предложения SELECT соответствуют некоторым операциям реляционной алгебры, а именно — проекции, селекции (отбору) и соединению. Кроме того, для достижения необходимой теоретико-множественной полноты в SQL введены три дополнительные операции — объединение (UNION), пересечение (INTERSECT) и разность (EXCEPT). Все они выполняются над таблицами, полученными в результате запросов, и, в свою очередь, возвращают таблицу.
Множественные операции в стандарте 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.
Таблицы, используемые в качестве операндов множественной операции, должны быть совместимы. Под этим подразумевается следующее:
обе таблицы должны иметь одинаковое количество столбцов;
соответствующие пары столбцов должны быть одинаковых или совместимых типов.