
- •Язык запросов 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)
Внешнее соединение таблиц
Предположим, необходимо вывести список факультетов и их кафедр. Это достигается соединением таблиц FACULTY и DEPARTMENT по равенству значений первичного и внешнего ключей и выбором столбцов с названиями факультетов и кафедр. Но в таком случае, если на факультете кафедр нет, он не будет включен в результат.
Для того чтобы в списке присутствовали все факультеты, даже без кафедр, необходимо использовать внешнее соединение, которое расширяет возможности обычного соединения. Внешнее соединение возвращает строки, которые удовлетворяют условию соединения, а также те строки одной из таблиц, для которых в другой не нашлось удовлетворяющих условию соединения строк. В Oracle синтаксис внешнего соединения имеет следующие два варианта:
таблица.столбец оператор_сравнения таблица.столбец (+)
таблица.столбец (+) оператор_сравнения таблица.столбец
Когда в результат должны быть включены все строки таблицы, указанной в левой части, следует использовать первый вариант. Такое соединение называется левым внешним соединением. Если необходимо, чтобы в результате присутствовали все строки таблицы в правой части, следует использовать второй вариант. В этом случае говорят оправом внешнем соединении. Рассмотрим пример.
Запрос.Вывести фамилии всех преподавателей с указанием их кафедры, если она есть.
SELECT d.Name AS "Название_кафедры", t.Name AS "Фамилия преподавателя"
FROM DEPARTMENT d, TEACHER t
WHERE d.DepPK (+) = t.DepFK;
Название кафедры |
Фамилия преподавателя |
программирование |
Сидоров |
программирование |
Рамишевский |
программирование |
Хоренко |
программирование |
Вибровский |
программирование |
Воропаев |
программирование |
Кузинцев |
программирование |
Завратинский |
программирование |
Козлутин |
программирование |
Лекарь |
программирование |
Мартынов |
программирование |
Резван |
программирование |
Недеведеев |
NULL |
Ахромеев |
NULL |
Наумов |
NULL |
Дараганов |
Обратите внимание, что в результирующей таблице значения отсутствующего столбца принимают значение NULL.
Соединение с использованием фразы from
Все рассмотренные выше типы и способы соединения таблиц можно осуществлять и с помощью фразы FROM. В ней, в соответствии со стандартомSQL, можно не только перечислить имена таблиц, участвующих в запросе, но и указать их соединение, для чего могут использоваться три различные конструкции.
Уточненное соединениепредполагает явное задание условия соединения. Для этого можно использовать два варианта - фразу USING, с помощью которой указываются одноименные столбцы обеих таблиц, по равенству значений которых следует произвести соединение, или фразу ON, с помощью которой для соединения можно указать произвольное условие. Синтаксис уточненного соединения следующий:
таблица [INNER | {FULL | LEFT | RIGHT} [OUTER]] JOIN таблица {ON условие | USING
(список_столбцов)}
Естественное соединение выполняется по равенству значений всех пар одноименных столбцов таблиц и не требует задания каких-либо условий. Оно имеют следующий синтаксис:
таблица NATURAL [INNER | {FULL | LEFT | RIGHT} [OUTER]] JOIN таблица
Перекрестное соединение эквивалентно декартовому произведению таблиц. Его синтаксис самый простой:
таблица CROSS JOIN таблица