
- •Язык запросов 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)
Логические операторы
Операндами и результатом логических операторов (часто их называют логическими связками или булевыми операторами) являются логические значения.
Примечание.В связи с возможным отсутствием данных (их значение при этом считается неопределенным) в SQL используется трехзначная логика (с логическими значениями TRUE, FALSE, UNKNOWN).
Стандартными логическими операторами являются AND, OR и NOT.
Если обобщить, оператор AND истинен только в том случае, когда истинны оба операнда, OR – когда истинен хотя бы один из операндов, a NOT дает противоположное операнду значение.
Использование операторов сравнения вместе с логическими операторами предоставляет возможность формулировать составные условия для отбора строк таблиц. В математике существуют и другие логические операторы, однако они не используются в SQL, так как все их можно выразить через AND, OR и NOT.
Запрос.Вывести фамилии преподавателей, которые являются профессорами и ставка которых превышает 1050.
SELECT Name AS "Проф. со ставкой > 1050"
FROM TEACHER
WHERE UPPER(Post) = 'ПРОФЕССОР' AND Salary > 1050;
Запрос.Вывести названия кафедр корпуса 3 с фондом финансирования в диапазоне 12 000-15 000.
SELECT Name
FROM DEPARTMENT
WHERE Building = '3' AND Fund >= 12000 AND Fund <= 15000;
Запрос.Вывести названия кафедр, фонд финансирования которых меньше 11 000 или больше 25 000.
SELECT Name, Fund
FROM DEPARTMENT
WHERE Fund < 11000 OR Fund > 25000;
Запрос.Вывести номера аудиторий, расположенных в корпусах 4 и 5.
SELECT Num, Building
FROM ROOM
WHERE Building = '4' OR Building = '5';
Запрос.Вывести названия всех факультетов, кроме факультета математики.
SELECTName
FROMFACULTY
WHERE NOT LOWER(Name) = 'информатика';
Запрос.Вывести названия, корпуса и фонды финансирования кафедр, расположенных в корпусах 3 или 6 и имеющих фонд финансирования меньше 11 000 или больше 25 000.
SELECT Name, Post, Salary, Rise
FROM TEACHER
WHERE LOWER(PoSt) = 'ассистент' AND
(Salary < 550 OR Rise > 160);
Использование выражений над столбцами
До сих пор в выражениях фразы WHERE мы использовали в качестве значения одного или обоих аргументов имена столбцов. Однако аргументами могут быть и выражения над столбцами.
Запрос.Вывести фамилии преподавателей, чья зарплата (ставка плюс надбавка) превышает 1500.
SELECT
Name AS "Фамилия преподавателя",
Salary + Rise AS "Его зарплата"
FROM TEACHER
WHERE Salary + Rise > 1500;
Запрос.Вывести фамилии преподавателей, половина зарплаты которых
превышает троекратную надбавку.
SELECT Name
FROM TEACHER
WHERE (Salary + Rise) / 2 > 3 * Rise;
Специальные операторы
В SQL имеются операторы сравнения, позволяющие проверять значения столбцов и выражений над ними на соответствие некоторым специальным условиям:
принадлежность множеству;
принадлежность диапазону;
соответствие шаблону;
соответствие регулярному выражению (на самостоятельное изучение);
неопределенное значение.
Далее мы узнаем, как их использовать и как с их помощью создавать составные условия.
Проверка на принадлежность множеству
Оператор INпозволяет проверить, входит ли значение в указанное множество значений. В простейшем случае этот оператор имеет следующий синтаксис:
имя_столбца [NOT] IN (список_значений)
Здесь список значений представляет собой перечень разделенных запятыми констант, тип которых должен соответствовать типу столбца, чье имя приведено слева. Семантика этого предиката такова: он принимает значение TRUE, если значение столбца соответствует одной из констант списка. Приведем пример.
Запрос.Вывести типы занятий, проводимых на первой неделе в первые три дня.
SELECT DISTINCT Type AS "Тип занятия"
FROM LECTURE
WHERE WEEK = 1 AND LOWER(Day) IN ('пнд', 'втр', 'срд');
Отметим, что оператор INв варианте с константами в правой части имеет эквивалентное представление с использованием логической связкиOR.
Запрос.Вывести названия и номер корпуса кафедр, расположенных в любых корпусах, кроме 1, 3, 8 или 10.
SELECT Name AS "Название кафедры", Building AS "Корпус"
FROM Department
WHERE Building NOT IN ('1', '3', '8', '10');
Примечание. Отметим, что, следуя общему принципу применения оператора NOT, можно использовать и такую конструкцию:
NOT (имя_столбца IN(список_значений))