
- •Лабораторная работа 4
- •Цели лабораторной работы
- •Описание и примеры
- •Основные фразы запроса: select и from Фраза select
- •Фраза from
- •Фраза where
- •Использование простых условий Использование операторов сравнения
- •Логические операторы
- •Выражение над столбцами во фразе where
- •Специальные операторы Оператор in
- •Оператор between
- •Оператор like
- •Операторы is null и is not null.
- •Варианты заданий
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант 16
- •Вариант 17
- •Вариант 18
- •Контрольные вопросы
- •Приложения Приложение a. Операторы sql Oracle
- •Унарные и бинарные операторы
- •Старшинство операторов
- •Арифметические операторы
- •Оператор конкатенации
- •Операторы сравнения
- •Логические операторы
- •Теоретико-множественные операторы
- •Приложение b. Выражения
- •Простые выражения
Операторы is null и is not null.
Оператор IS NULL. Оператор IS NULL позволяет проверить значение столбца на null-значение. Он дает TRUE, если значение столбца NULL, и FALSE, если значение столбца не null.
Пример14 – Проверка на значение NULL:Выдать преподавателей, у которых не определены значения столбцов Salary или Commission:
SELECT Name
FROM TEACHER
WHERE Salary IS NULL OR Commission IS NULL;
Оператор IS NOT NULL. Является отрицание к оператору IS NULL.
Функция NVL. Она имеет синтаксис NVL(expr1, expr2). Если expr1 равно null, то возвращает expr2; если же не null, то возвращаетexpr1. Она позволяет вывести специальное значение, если значение столца равно null.
Пример15. Функция NVL:Вывести факультеты и их фондами. Если фонд не определен, то вывести строку “Fund not defined”
SELECT Name, NVL(TO_CHAR(Fund), 'Fund not defined')
FROM FACULTY;
Варианты заданий
Далее приводится 18 вариантов заданий. Каждый вариант состоит из 7 запросов, которые относятся к следующим категориям (в порядке их следования):
Выражения во фразе SELECT
Соединение таблиц
Многократное соединение одной и той же таблицы
Использование предиката BETWEEN
Использование предикатов IN и LIKE
Внешнее соединение, соединение не по предикату равенства
Использование сложных логических условий
ВНИМАНИЕ. В предлагаемых запросах используются константы (имена преподавателей, названия кафедр и факультетов, названия дисциплин), которые могут отсутствовать в вашей базе данных. ЗАМЕНЯЙТЕ ИХ НА ТЕ, КОТОРЫЕ ДЕЙСТВИТЕЛЬНО ИМЕЮТСЯ В ВАШЕЙ БАЗЕ ДАННЫХ!
Вариант 1
1) Для каждого из преподавателей из таблицы TEACHER выведите его имя, должность, ставку, надбавку, процент надбавки по отношению к ставке (имя этого столбца «Процент1») и процент ставки по отношению к надбавке (имя этого столбца «Процент1»).
2) По каждому факультету вывести его название и название дисциплин, читаемых преподавателями-профессорами этого факультета
3) Вывести подчиненных подчиненных Сидорова
4) Вывести названия кафедр факультета 'компьютерные науки' с фондом финансирования в диапазоне 250000-350000
5) Вывести имена преподавателей-профессоров, которые работают на факультетах, расположенных в корпусах 2,3,6,7,8,10
6) Вывести названия кафедр и имена преподавателей, которые на них работают. Причем, если на какой-то кафедре нет преподавателей, то эта кафедра все равно выводится, а вместо имени преподавателя выводится строка 'NULL'
7) Вывести имена преподавателей факультета 'компьютерные науки' со ставкой больше 1200 ИЛИ преподавателей факультета 'компьютерные системы' со ставкой больше 1500
Вариант 2
1 Для каждого из преподавателей из таблицы TEACHER выведите его имя, ставку+надбавку, процент ставки по отношению к ставке+надбавке (имя этого столбца «Результат1»), процент надбавки по отношению к ставке+надбавке (имя этого столбца «Результат2»)
2) Вывести названия факультетов и дисциплин, которые читаются на этих факультетах преподавателями-доцентами, являющимися кураторами студентов 1-го курса
3) Вывести руководителя руководителя Иванова
4) Вывести имена преподавателей факультета 'компьютерные науки' с зарплатой (salary+commission) в диапазоне 1000-1500
5) Вывести имена кафедр факультета 'компьютерные науки', на которых имеются группы с рейтингами 12, 17, 25, 29, 33, 43, 50
6) Вывести названия кафедр, номера и курс групп этих кафедр. Если на какой-то кафедре нет групп, то эта кафедра все равно выводится, а вместо номера группы и курса выводятся цифры 0. Причем, столбцы результирующей таблицы имеют следующие имена:
Столбец имени кафедры – Кафедра
Столбец номера группы – Группа
Столбец курса - Курс
7) Вывести имена и должности преподавателей, которые НЕ удовлетворяют следующему условию:
преподаватель работает на факультете, расположенном в корпусе 4, и имеет должность ассистента ИЛИ работает на факультете, расположенном в корпусе 6, и имеет должность доцента