Справочник от Автор24
Поделись лекцией за скидку на Автор24

Семантика SEQUEL и реляционная алгебра.

  • 👀 310 просмотров
  • 📌 273 загрузки
  • 🏢️ РТУ МИРЭА
Выбери формат для чтения
Статья: Семантика SEQUEL и реляционная алгебра.
Найди решение своей задачи среди 1 000 000 ответов
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Семантика SEQUEL и реляционная алгебра.» pdf
Центр дистанционного обучения Лекция 5 Семантика SEQUEL и реляционная алгебра online.mirea.ru Центр дистанционного обучения Вопросы занятия  Семантика SQL запроса.  Основы реляционной алгебры.  Реляционные операции в контексте реляционной алгебры и SQL.  Агрегатные операторы инструкций SQL.  Операторы инструкций SQL: Order by и Having.  Триггеры в языке SQL. online.mirea.ru Центр дистанционного обучения Основы SQL запроса SELECT [DISTINCT] target-list FROM relation-list WHERE qualification relation-list – список имен отношений. Допускает добавление к имени переменной для использования в запросе target-list – список атрибутов отношений, которые указаны в relation-list Qualification – условие сравнения (Отн-Значение или Отн1-Отн2, по условию <, >, =, ≤, ≥, комбинированные с AND, OR, NOT) online.mirea.ru Центр дистанционного обучения Принцип работы семантики SQL запроса 1. Рассчитать перечисленные отношения 2. Исключить из результата кортежи, которые не попадают в условия Qualification 3. Исключить атрибуты, отсутствующие в target-list 4. Если имеется группировка или иная сортировка данных, провести ее на последнем этапе. p.s. Это не обязательно наиболее эффективная стратегия работы запроса! Оптимизация. online.mirea.ru Центр дистанционного обучения Реляционное исчисление в языке SQL SELECT S.sname FROM Sailors S, Reserves R WHERE S.sid=R.sid AND R.bid = 103 online.mirea.ru Центр дистанционного обучения Традиционная реляционная алгебра Операция Приоритет RENAME 4 WHERE 3 PROJECT 3 TIMES 2 JOIN 2 INTERSECT 2 DIVIDE BY 2 UNION 1 MINUS 1 online.mirea.ru Центр дистанционного обучения Схематичное изображение операции RENAME RENAME = переименование (иногда - присвоение). Для операции нужен только один операнд. Переименовывается не само отношение (таблица), а ее атрибуты. R RENAME Atr1, Atr2… AS NewAtr1, NewAtr2… online.mirea.ru Центр дистанционного обучения Реализация RENAME в TSQL USE AdventureWorks2012; GO EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr'; GO USE AdventureWorks2012; GO EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID’, 'COLUMN'; GO online.mirea.ru Центр дистанционного обучения Схематичное изображение операции WHERE WHERE = выборка по условию. Для операции достаточно только одного операнда. В тоже время, могут участвовать несколько операндов. В результате строится новое отношение, в которое входят только те значения, которые при подстановке в условие where дают значение true. A WHERE c online.mirea.ru Центр дистанционного обучения Схематичное изображение операции PROJECT PROJECT = вертикальная выборка по выбранным атрибутам. Для операции достаточно только одного операнда. В результате строится новое отношение, в которое входят значения невычеркнутых в перечислении атрибутов. Результатом, например, может стать таблица с единственным выбранным атрибутом. online.mirea.ru Центр дистанционного обучения Схематичное изображение операции TIMES TIMES = умножение одной таблицы на другую. Для операции обязательно наличие двух операндов. Само перемножение называется конкатенацией. В результате строится новое отношение, в которое входят перемноженные друг на друга значения двух таблиц. A TIMES B. online.mirea.ru Центр дистанционного обучения Схематичное изображение операции JOIN JOIN = комбинация произведения двух таблиц и заранее определенного условия. Для операции обязательно наличие двух операндов. В результате строится новое отношение, в которое входят перемноженные друг на друга значения двух таблиц ограниченные выбранным условием. (A TIMES B) WHERE P. online.mirea.ru Центр дистанционного обучения Схематичное изображение операции INTERSECT INTERSECT = ищет в двух таблицах совпадающие значения. Для операции обязательно наличие двух операндов. В результате строится новое отношение, в которое входят кортежи, принадлежащие и первому и второму операнду. A INTERSECT B. online.mirea.ru Центр дистанционного обучения Схематичное изображение операции DIVIDE BY DIVIDE BY = Результатом операции деления является набор кортежей (строк) первого отношения, которые соответствуют комбинации всех кортежей второго отношения. Для этого нужно, чтобы во втором отношении была часть атрибутов (можно и один), которые есть в первом отношении. В результирующем отношении присутствуют только те атрибуты первого отношения, которых нет во втором. A DIVIDE BY B. online.mirea.ru Центр дистанционного обучения Пример деления -- Uses AdventureWorks SELECT s.BusinessEntityID AS SalesPersonID, FirstName, LastName, SalesQuota, SalesQuota/12 AS 'Sales Target Per Month' FROM Sales.SalesPerson AS s JOIN HumanResources.Employee AS e ON s.BusinessEntityID = e.BusinessEntityID JOIN Person.Person AS p ON e.BusinessEntityID =p.BusinessEntityID; online.mirea.ru Центр дистанционного обучения Схематичное изображение операции UNION UNION = оставит значения принадлежащие первой, второй таблице или обеим таблицам. Для операции обязательно наличие двух операндов. В результате строится новое отношение, в которое входят кортежи, первого и второго операндов без повторений. A UNION B. online.mirea.ru Центр дистанционного обучения Схематичное изображение операции MINUS MINUS = оставит значения принадлежащие первой таблицы и не принадлежащие второй таблице. Для операции обязательно наличие двух операндов. В результате строится новое отношение, в которое входят кортежи первого операнда при условии, что их нет во втором операнде. A MINUS B. online.mirea.ru Центр дистанционного обучения Реализация MINUS в TSQL -- Uses AdventureWorks SELECT ProductID FROM Production.Product EXCEPT SELECT ProductID FROM Production.WorkOrder ; online.mirea.ru Центр дистанционного обучения Следующий пример для демонстраций Sailors Reserves Boats online.mirea.ru Центр дистанционного обучения Выражения и строки SELECT S.age, age1=S.age-5, 2*S.age AS age2 FROM Sailors S WHERE S.sname LIKE ‘B_%B’ 1. Арифметические выражения. Тут – формируются три столбца. Возраст и два других, по арифметическому выражению. 2. Связка в target-list может формироваться как с использованием присваивания, так и с помощью оператора AS. 3. Оператор LIKE используется для управления выборкой из строковых переменных. Тут: выбрать все Name, начинающиеся с B, заканчивающиеся на B и имеющие хотя бы три символа. online.mirea.ru Центр дистанционного обучения Реляционные операции в проекции SQL (запрос с комбинированным условием vs. UNION) Вывести имена морячков, которые взяли зеленую или красную лодку. SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND (B.color=‘red’ OR B.color=‘green’) online.mirea.ru Центр дистанционного обучения Реляционные операции в проекции SQL Что будет выведено в результат? SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color=‘red’ UNION SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color=‘green’ online.mirea.ru Центр дистанционного обучения Реляционные операции в проекции SQL (запрос с комбинированным условием vs. INTERSECT) Вывести id тех морячков, что брали и зеленую, и красную лодку. SELECT S.sid FROM Sailors S, Boats B1, Reserves R1, Boats B2, Reserves R2 WHERE S.sid=R1.sid AND R1.bid=B1.bid AND S.sid=R2.sid AND R2.bid=B2.bid AND (B1.color=‘red’ AND B2.color=‘green’ online.mirea.ru Центр дистанционного обучения Реляционные операции в проекции SQL Что будет выведено в результат? SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color=‘red’ INTERSECT SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color=‘green’ online.mirea.ru Центр дистанционного обучения Агрегатные операторы SQL SELECT COUNT (*) FROM Sailors S SELECT AVG (S.age) FROM Sailors S WHERE S.rating=10 SELECT COUNT (DISTINCT S.rating) FROM Sailors S WHERE S.sname=‘Bob’ SELECT AVG ( DISTINCT S.age) FROM Sailors S WHERE S.rating=10 online.mirea.ru Центр дистанционного обучения Запросы с GROUP BY и HAVING SELECT [DISTINCT] target-list FROM relation-list WHERE qualification GROUP BY grouping-list HAVING group-qualification grouping-list – атрибуты, подлежащие группировке group-qualification – условие фильтра группировки, должно быть только одно. online.mirea.ru Центр дистанционного обучения Пример группировки с условием Найти возраст самого юного морячка, которому больше 18 лет для рейтинга, которым обладают как минимум 2 экземпляра морячков. SELECT S.rating, MIN (S.age) FROM Sailors S WHERE S.age >= 18 GROUP BY S.rating HAVING COUNT (*) > 1 online.mirea.ru Центр дистанционного обучения Еще группировка Для каждой красной лодки узнать, сколько раз ее брали напрокат. SELECT B.bid, COUNT (*) AS scount FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color=‘red’ GROUP BY B.bid online.mirea.ru Центр дистанционного обучения Триггеры Процедуры, которые запускаются автоматически, если определенное событие произойдет в СУБД. Состоят из трех частей: - Событие (запускает триггер), AFTER/INSTEAD OF - Условие (проверяет, когда должен быть запущен триггер), INSERT/UPDATE/DELETE - Действие (что произойдет, когда триггер сработает), SQL оператор online.mirea.ru Центр дистанционного обучения Пример триггера Всех юных моряков будем сохранять отдельно копией записи. CREATE TRIGGER youngSailorUpdate AFTER INSERT ON SAILORS REFERENCING NEW TABLE NewSailors FOR EACH STATEMENT INSERT INTO YoungSailors(sid, name, age, rating) SELECT sid, name, age, rating FROM NewSailors N WHERE N.age <= 18 online.mirea.ru Центр дистанционного обучения Чтение на дом • Русский Кренке, стр. 287-300, стр. 305-324. • Английский Кренке, 68-137. • MIT, стр. 100-124, стр. 130-173, стр. 478-506 online.mirea.ru Центр дистанционного обучения Вопросы для самостоятельного изучения • 1. Можно ли вложить одну выборку SELECT в другую, в одном запросе? Если да, то есть ограничение на количество вложений? • 2. Какие еще есть агрегатные функции у оператора SELECT приведите примеры кода с ними, на основании таблицы из лекции. • 3. Напишите код полезного триггера для БД из лекции. • 4. Запишите операции реляционной алгебры в строгом алгебраическом виде. online.mirea.ru Центр дистанционного обучения Спасибо за внимание! online.mirea.ru
«Семантика SEQUEL и реляционная алгебра.» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

Тебе могут подойти лекции

Смотреть все 70 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot