Реляционные операторы и язык sql

Содержание

Слайд 2

Основные определения Реляционная модель - множество взаимосвязанных отношений. В каждой связи

Основные определения

Реляционная модель - множество взаимосвязанных отношений.
В каждой связи

одно отношение может выступать как основное, а другое отношение выступает в роли подчиненного.
Для поддержки этих связей оба отношения должны содержать наборы атрибутов, по которым они связаны.
В основном отношении это первичный ключ отношения (PRIMARY KEY), который однозначно определяет кортеж основного отношения.
В подчиненном отношении для моделирования связи должен присутствовать набор атрибутов, соответствующий первичному ключу основного отношения. Данный набор атрибутов в подчиненном отношении принято называть внешним ключом ( FOREIGN KEY ).
Слайд 3

ОГРАНИЧЕНИЯ ЦЕЛОСТНОСТИ ДАННЫХ База данных поддерживает следующие виды ограничений: 1) PRIMARY

ОГРАНИЧЕНИЯ ЦЕЛОСТНОСТИ ДАННЫХ

База данных поддерживает следующие виды ограничений:
1) PRIMARY KEY


2) UNIQUE
3) FOREIGN KEY
4) CHECK,
5) NOT NULL
Слайд 4

Основные определения Атрибут Паспорт PRIMARY KEY отношения «Сотрудник» и FOREIGN KEY для отношения «Карьера".

Основные определения

Атрибут Паспорт PRIMARY KEY отношения «Сотрудник» и FOREIGN KEY для

отношения «Карьера".
Слайд 5

Типы связей Одна сущность может быть связана с другой сущностью или

Типы связей

Одна сущность может быть связана с другой сущностью или сама

с собою.
Левая сущность (со стороны "один") называется родительской, правая (со стороны "много") - дочерней.
Слайд 6

В университете учатся студенты Иванов, Петров и Сидоров. Лекции им читают

В университете учатся студенты Иванов, Петров и Сидоров. Лекции им читают

преподаватели Пушников, Цыганов и Шарипов, причем известны следующие факты:
Пушников читает лекции по алгебре и базам данных, соответственно, 40 и 80 часов в семестр.
Цыганов читает лекции по геометрии, 50 часов в семестр.
Шарипов читает лекции по алгебре и геометрии, соответственно, 40 и 50 часов в семестр.
Студент Иванов посещает лекции по алгебре у Шарипова и по базам данных у Пушникова.
Студент Петров посещает лекции по алгебре у Пушникова и по геометрии у Цыганова.
Студент Сидоров посещает лекции по геометрии у Цыганова и по базам данных у Пушникова.

Реляционная алгебра

Слайд 7

Множество преподавателей = {Пушников, Цыганов, Шарипов}. Множество предметов = {Алгебра, Геометрия,

Множество преподавателей
= {Пушников, Цыганов, Шарипов}.
Множество предметов
=

{Алгебра, Геометрия, Базы данных}.
Множество студентов
= {Иванов, Петров, Сидоров}.
Упорядоченная тройка тогда и только тогда принадлежит отношению , когда преподаватель x читает лекции по предмету y в количестве n часов в семестр.

Реляционная алгебра

Слайд 8

Реляционная алгебра

Реляционная алгебра

Слайд 9

Упорядоченная тройка , когда студент z посещает лекции по предмету y у преподавателя x. Реляционная алгебра

Упорядоченная тройка , когда студент z посещает лекции по предмету y

у преподавателя x.

Реляционная алгебра

Слайд 10

Реляционная алгебра

Реляционная алгебра

Слайд 11

Потенциальные ключи Каждый кортеж должен обладать свойством уникальности (свойством уникальности в

Потенциальные ключи

Каждый кортеж должен обладать свойством уникальности (свойством уникальности в пределах

отношения могут обладать отдельные атрибуты или группы атрибутов- потенциальные ключи).
Подмножество атрибутов K отношения R будем называть потенциальным ключом, если выполнено:
Свойство уникальности - в отношении не может быть двух различных кортежей, с одинаковым значением K.
Свойство неизбыточности - никакое подмножество в K не обладает свойством уникальности.
Слайд 12

отношение имеет, по крайней мере, один потенциальный ключ. если никакой атрибут

отношение имеет, по крайней мере, один потенциальный ключ.
если никакой атрибут

или группа атрибутов не являются потенциальным ключом, то, в силу уникальности кортежей, все атрибуты вместе образуют потенциальный ключ.
потенциальный ключ, состоящий из одного атрибута, называется простым, а из нескольких - составным.
отношение может иметь несколько потенциальных ключей: один из потенциальных ключей объявляется первичным, а остальные - альтернативными.

Потенциальные ключи

Слайд 13

Восемь реляционных операторов Теоретико-множественные операторы: Декартово произведение Объединение Пересечение Вычитание Специальные

Восемь реляционных операторов

Теоретико-множественные операторы:
Декартово произведение
Объединение
Пересечение
Вычитание
Специальные реляционные

операторы:
Выборка
Проекция
Соединение
Деление
Слайд 14

Отношение состоит из двух частей - заголовка отношения и тела отношения.

Отношение состоит из двух частей - заголовка отношения и тела отношения.


Количество атрибутов называется степенью отношения.
Тело отношения состоит из кортежей.
Количество кортежей отношения называется мощностью отношения.

Реляционная алгебра

Слайд 15

Декартово произведение Основной структурой данных в модели является отношение, именно поэтому

Декартово произведение

Основной структурой данных в модели является отношение, именно поэтому

модель получила название реляционной (от английского relation — отношение).
Отношение в реляционной базе данных – подмножество прямого (декартова) произведения множества атрибутов.

N-арным отношением R называют подмножество декартова произведения D1x D2x ... xDn множеств D1, D2, ..., Dn ( n > 1 ), необязательно различных.
Исходные множества D1, D2, ..., Dn называют в модели доменами.

Слайд 16

Декартово произведение Введем дополнительно понятие конкатенации, или сцепления, кортежей. Сцеплением, или

Декартово произведение

Введем дополнительно понятие конкатенации, или сцепления, кортежей.
Сцеплением, или конкатенацией, кортежей 

c =  и 
q =  
называется кортеж, полученный добавлением значений второго в конец первого.
Сцепление кортежей c и q обозначается как (c , q).
(c, q) =
Здесь n — число элементов в первом кортеже с, m — число элементов во втором кортеже q.
Слайд 17

Декартово произведение

Декартово произведение

Слайд 18

Декартово произведение

Декартово произведение

Слайд 19

Отношения, совместимые по типу Отношения совместимы по типу, если они имеют

Отношения, совместимые по типу

Отношения совместимы по типу, если они имеют идентичные

заголовки, а именно:
Отношения имеют одно и то же множество имен атрибутов, т.е. для любого атрибута в одном отношении найдется атрибут с таким же наименованием в другом отношении,
Атрибуты с одинаковыми именами определены на одних и тех же доменах.
Слайд 20

Объединение отношений Объединением двух совместимых по типу отношений А и В

Объединение отношений

Объединением двух совместимых по типу отношений А и В

называется отношение с тем же заголовком, что и у отношений А и В, и телом, состоящим из кортежей, принадлежащих А или В, или обоим отношениям.
Синтаксис операции объединения:
Слайд 21

Объединение отношений

Объединение отношений

Слайд 22

Пересечение отношений Пересечением двух совместимых по типу отношений А и В

Пересечение отношений

Пересечением двух совместимых по типу отношений А и В называется

отношение с тем же заголовком, что и у отношений А и В, и телом, состоящим из кортежей, принадлежащих одновременно обоим отношениям А и В.
Синтаксис операции пересечения:
Слайд 23

Пересечение отношений

Пересечение отношений

Слайд 24

Вычитание отношений Вычитанием двух совместимых по типу отношений А и В

Вычитание отношений

Вычитанием двух совместимых по типу отношений А и В

называется отношение с тем же заголовком, что и у отношений А и В, и телом, состоящим из кортежей, принадлежащих отношению А и не принадлежащих отношению В.
Синтаксис операции вычитания:
Слайд 25

Вычитание отношений

Вычитание отношений

Слайд 26

Выборка Выборкой на отношении А с условием С называется отношение с

Выборка

Выборкой на отношении А с условием С называется отношение с тем

же заголовком, что и у отношения А, и телом, состоящим из кортежей, значения атрибутов которых при подстановке в условие С дают значение «Истина».
С представляет логическое выражение, в которое могут входить атрибуты отношения А и(или) скалярные выражения.
Слайд 27

Выборка

Выборка

Слайд 28

Выборка

Выборка

Слайд 29

Трехзначная логика (3VL)

Трехзначная логика (3VL)

Слайд 30

Проекция Проекцией отношения А по атрибутам X, Y, …, Z, где

Проекция

Проекцией отношения А по атрибутам X, Y, …, Z, где каждый

из атрибутов принадлежит отношению А, называется отношение с заголовком (X, Y, …, Z) и телом, содержащим множество кортежей вида (x, y, …, z) таких, для которых в отношении А найдутся кортежи со значением атрибута Х равным х, значением атрибута Y равным y,…, значением Z равным z.
Проекция дает «вертикальный срез», в котором удалены все возникшие при таком срезе дубликаты кортежей.
Слайд 31

Проекция

Проекция

Слайд 32

Соединение Соединением отношений А и В по условию С (логическое выражение,

Соединение

Соединением отношений А и В по условию С (логическое выражение, в

которое могут входить атрибуты отношений и(или) скалярные выражения) называется отношение, полученное путем последовательного применения операций декартова произведения и выборки.
Слайд 33

Соединение Тэта-соединение Эквисоединение Естественное соединение Внешнее соединение

Соединение

Тэта-соединение
Эквисоединение
Естественное соединение
Внешнее соединение

Слайд 34

Тэта-соединение

Тэта-соединение

Слайд 35

Экви-соединение

Экви-соединение

Слайд 36

Естественное соединение

Естественное соединение

Слайд 37

Естественное соединение

Естественное соединение

Слайд 38

Внешнее соединение Типы внешних соединений: левое внешнее соединение - внутреннее соединение

Внешнее соединение

Типы внешних соединений:
левое внешнее соединение - внутреннее соединение +

строки левой таблицы, которым нет соответствия в правой таблице;
правое внешнее соединение - внутреннее соединение + строки правой таблицы, которым нет соответствия в левой таблице;
полное внешнее соединение - внутреннее соединение и строки правой таблицы, которым нет соответствия в левой таблице, и строки правой таблицы, которым нет соответствия в левой таблице.
Слайд 39

Внешнее соединение

Внешнее соединение

Слайд 40

Внешнее соединение

Внешнее соединение

Слайд 41

Деление Синтаксис операции деления: A DIVIDE BY B

Деление

Синтаксис операции деления:
A DIVIDE BY B

Слайд 42

Деление

Деление

Слайд 43

ЯЗЫК SQL Structured Query Language (SQL)— это непроцедурный язык, используемый для

ЯЗЫК SQL

Structured Query Language (SQL)— это непроцедурный язык, используемый для формулировки

запросов к данным в большинстве современных СУБД и являющийся индустриальным стандартом (ANSI, ISO)
Существует много его диалектов
Операторы языка делятся на группы
Слайд 44

ОПЕРАТОРЫ ОПРЕДЕЛЕНИЯ ДАННЫХ (DATA DEFINITION LANGUAGE DDL): CREATE создает объект БД;

ОПЕРАТОРЫ ОПРЕДЕЛЕНИЯ ДАННЫХ (DATA DEFINITION LANGUAGE DDL):

CREATE создает объект БД;
ALTER изменяет

объект;
DROP удаляет объект;
Слайд 45

ОПЕРАТОРЫ ОПРЕДЕЛЕНИЯ ДОСТУПА К ДАННЫМ (DATA CONTROL LANGUAGE DCL): GRANT предоставляет

ОПЕРАТОРЫ ОПРЕДЕЛЕНИЯ ДОСТУПА К ДАННЫМ (DATA CONTROL LANGUAGE DCL):

GRANT предоставляет пользователю

(группе) разрешения на определенные операции с объектом;
REVOKE отзывает ранее выданные разрешения;
Слайд 46

ОПЕРАТОРЫ УПРАВЛЕНИЯ ТРАНЗАКЦИЯМИ (TRANSACTION CONTROL LANGUAGE, TCL) COMMIT применяет транзакцию; ROLLBACK

ОПЕРАТОРЫ УПРАВЛЕНИЯ ТРАНЗАКЦИЯМИ (TRANSACTION CONTROL LANGUAGE, TCL)

COMMIT применяет транзакцию;
ROLLBACK откатывает все

изменения, сделанные в контексте текущей транзакции;
SAVEPOINT делит транзакцию на более мелкие участки, применяется для отметки логических точек разрыва в границах транзакции;
SET TRANSACTION начинает транзакцию и определяет ее поведение.
Слайд 47

ОПЕРАТОРЫ МАНИПУЛЯЦИИ ДАННЫХ (DATA MANIPULATION LANGUAGE DML): SELECT считывает данные, удовлетворяющие

ОПЕРАТОРЫ МАНИПУЛЯЦИИ ДАННЫХ (DATA MANIPULATION LANGUAGE DML):

SELECT считывает данные, удовлетворяющие заданным

условиям;
INSERT добавляет новые данные;
UPDATE изменяет существующие данные;
DELETE удаляет данные;
Слайд 48

Порядок выполнения оператора SELECT

Порядок выполнения оператора SELECT

Слайд 49

Порядок обработки элементов оператора SELECT FROM -Определяются имена используемой таблицы или

Порядок обработки элементов оператора SELECT

FROM -Определяются имена используемой таблицы или нескольких

таблиц.
WHERE – накладывается условие отбора данных.
GROUP BY – образуются группы строк, имеющие одинаковые значения в указанном столбце.
HAVING – накладывается условие на отбор сгруппированных строк.
SELECT – определяются столбцы, которые нужно отобразить в результате.
ORDER BY – отобранные данные сортируются по указанным столбцам.
Слайд 50

Порядок выполнения оператора SELECT Шаг 1 (FROM). Вычисляется прямое декартовое произведение

Порядок выполнения оператора SELECT

Шаг 1 (FROM). Вычисляется прямое декартовое произведение всех

таблиц, указанных в обязательном разделе FROM.
Шаг 2 (WHERE). Для каждой строки из таблицы A вычисляется условное выражение, приведенное в разделе WHERE. Только те строки, для которых условное выражение возвращает значение TRUE, включаются в результат.
Слайд 51

Шаг 3 (GROUP BY). Строки таблицы, полученной на втором шаге, группируются

Шаг 3 (GROUP BY). Строки таблицы, полученной на втором шаге, группируются

в соответствии со списком группировки, приведенным в разделе GROUP BY. К группам можно применять функции агрегирования.
Если раздел GROUP BY опущен, то сразу переходим к шагу 4.

Порядок выполнения оператора SELECT

Слайд 52

Шаг 4 (HAVING). Если в операторе SELECT присутствует раздел HAVING, то

Шаг 4 (HAVING). Если в операторе SELECT присутствует раздел HAVING, то

группы, не удовлетворяющие условному выражению, приведенному в разделе HAVING, исключаются. Если раздел HAVING опущен, то сразу переходим к шагу 5.

Порядок выполнения оператора SELECT

Слайд 53

Шаг 5(ORDER BY ) . Упорядочение результатов запроса по нескольким полям

Шаг 5(ORDER BY ) . Упорядочение результатов запроса по нескольким полям

с возрастанием или убыванием (ORDER BY… ASC (DESC)).
SELECT PD.PNUM, PD.DNUM, PD.VOLUME FROM PD ORDER BY DNUM;
ASC (с возрастанием ) по умолчанию

Порядок выполнения оператора SELECT

Слайд 54

Что такое подзапрос? Подзапросы в зависимости от элементов в предложении WHERE:

Что такое подзапрос?

Подзапросы в зависимости от элементов в предложении WHERE:
могут

не возвращать ни одного или возвращать несколько элементов (начинаются с IN, оператора сравнения, ANY, ALL);
возвращать единственное значение (с оператора сравнения);
представлять собой тест на существование (EXISTS)
Слайд 55

Предикаты, используемые в условии отбора c WHERE

Предикаты, используемые в условии отбора c WHERE

Слайд 56

Оператор LIKE SELECT site, url FROM wwwsites WHERE url LIKE '%my@_works%'

Оператор LIKE

SELECT site, url FROM wwwsites
WHERE url LIKE '%my@_works%'

ESCAPE '@';
Пример подходящего шаблона – ‘12my_works’
Слайд 57

Что такое подзапрос?

Что такое подзапрос?

Слайд 58

Примеры выполнения SELECT SELECT * FROM CUSTOMERS WHERE RATING >ALL(SELECT RATING FROM CUSTOMERS WHERE CITY='ROME' )

Примеры выполнения SELECT

SELECT * FROM CUSTOMERS WHERE RATING >ALL(SELECT RATING FROM

CUSTOMERS WHERE CITY='ROME' )
Слайд 59

Примеры выполнения SELECT SELECT * FROM CUSTOMERS WHERE RATING >ANY(SELECT RATING FROM CUSTOMERS WHERE CITY='ROME' )

Примеры выполнения SELECT

SELECT * FROM CUSTOMERS WHERE RATING >ANY(SELECT RATING FROM

CUSTOMERS WHERE CITY='ROME' )
Слайд 60

Примеры выполнения SELECT SELECT * FROM CUSTOMERS WHERE RATING >SOME(SELECT RATING FROM CUSTOMERS WHERE CITY='ROME' )

Примеры выполнения SELECT

SELECT * FROM CUSTOMERS WHERE RATING >SOME(SELECT RATING FROM

CUSTOMERS WHERE CITY='ROME' )
Слайд 61

Примеры выполнения SELECT Выбрать номера поставщиков, для которых не существовало бы

Примеры выполнения SELECT

Выбрать номера поставщиков, для которых не существовало бы ни

одной детали так, чтобы эта деталь не была бы в поставках у данного поставщика
Слайд 62

Восемь реляционных операторов в SQL Теоретико-множественные операторы: Объединение Union Пересечение Intersect

Восемь реляционных операторов в SQL

Теоретико-множественные операторы:
Объединение Union
Пересечение Intersect
Вычитание Minus
Декартово произведение

Cross join
Специальные реляционные операторы:
Выборка where
Проекция
Соединение inner join, outer join
Деление exists
Слайд 63

Union

Union

Слайд 64

Union

Union

Слайд 65

Intersect

Intersect

Слайд 66

Minus

Minus

Слайд 67

Join Существует три типа join-выражений: cross join; inner join; outer join;

Join

Существует три типа join-выражений:
cross join;
inner join;
outer join;

Слайд 68

Cross join

Cross join

Слайд 69

Соединение Inner join Join … using on (…); Natural join; Outer

Соединение

Inner join
Join … using on (…);
Natural join;
Outer join


Right join | Left join | Full join … on () …;
Слайд 70

Inner join Inner join необходим для получения только тех строк, для

Inner join

Inner join необходим для получения только тех строк, для

которых существует соответствие записей главной таблицы и присоединяемой.
Слайд 71

Outer join Outer join может быть left, right и full (слово

Outer join

Outer join может быть left, right и full (слово

outer обычно опускается);
Конструкция join располагается сразу после select-выражения.
... join_type join table_name on condition …
join_type - тип join-выражения (left, right и full ),
table_name - имя таблицы, которая присоединяется к результату,
condition - условие объединения таблиц.
Слайд 72

Outer join В случае с Left join из главной таблицы будут

Outer join

В случае с Left join из главной таблицы будут

выбраны все записи, даже если в присоединяемой таблице нет совпадений, то есть условие condition не учитывает присоединяемую (правую) таблицу.
Right join отображает все строки удовлетворяющие правой части условия condition, даже если они не имеют соответствия в главной (левой) таблице
Full outer join необходим для отображения всех возможных комбинаций строк из нескольких таблиц, это объединение результатов left и right join.
Слайд 73

Outer join

Outer join

Слайд 74

Деление

Деление