ТОРА (9) - Семинар №1 - Операции реляционной алгебры
Операции реляционной алгебры и их связь с SQL.
Содержание
Операторы SQL
SELECT
SELECT - выборка, DISTINCT - исключая.
SELECT [DISTINCT] * | атрибуты FROM таблицы WHERE условие
UPDATE
UPDATE - обновление, изменение.
UPDATE таблица SET атрибут = выражение WHERE условие
INSERT
INSERT - вставка, добавление новых записей.
INSERT INTO таблица записи
DELETE
DELETE - удаление записей.
DELETE FROM таблица WHERE условие
Предметная область, используемая в задачах
Этого семинара, само собой.
Таблицы
Таблицы $\rho=(S,P,SP)$
- $S$ - поставщики.
- SN - номер поставщика;
- SF - фамилия;
- SS - статус;
- SG - город.
- $P$ - деталь.
- PN - номер детали, ключ;
- PF - название детали;
- PC - цена за единицу.
- $SP$ - поставка.
- SN - номер поставщика;
- PN - номер детали;
- kol - количество поставляемых деталей.
Примеры экземпляров отношений
|
|
|
Задачи
Задача №1
Проекция. Найти города, где проживают поставщики.
$t=\Pi_{SG}(S)$
Получится:
SG |
---|
Москва |
Самара |
SELECT DISTINCT SG FROM S
Задача №2
Селекция. Найти поставщиков со статусом больше 70.
$t=\sigma_{SS>70}(S)$
Получится:
SN | SF | SS | SG |
---|---|---|---|
S1 | Иванов | 80 | Москва |
S3 | Кротов | 100 | Москва |
SELECT * FROM S WHERE SS > 70
Задача №3
Найти номера и фамилии поставщиков со статусом меньше 80.
$t=\Pi_{SN,SF}(\sigma_{SS<80}(S))$
Получится:
SN | SF |
---|---|
S2 | Петров |
SELECT SN, SF FROM S WHERE SS < 80
Задача №4
Удалить все поставки поставщика с номером S1.
$SP = SP - \sigma_{SN=S1}(SP)$
Получится:
SN | PN | kol |
---|---|---|
S2 | P3 | 150 |
S3 | P3 | 50 |
DELETE FROM SP WHERE SN = S1
Задача №5
Добавить в таблицу S новых поставщиков из таблицы SNEW.
SN | SF | SS | SG |
---|---|---|---|
S4 | Петров | 30 | Тверь |
S5 | Сидоров | 50 | Тверь |
$S = SP\bigcup S$
Получится:
SN | SF | SS | SG |
---|---|---|---|
S1 | Иванов | 80 | Москва |
S2 | Петров | 40 | Самара |
S3 | Кротов | 100 | Москва |
S4 | Петров | 30 | Тверь |
S5 | Сидоров | 50 | Тверь |
INSERT INTO S SELECT * FROM SNEW
Задача №6
Найти номера поставщиков, поставляющих детали по цене меньше 30.
$r = \sigma_{PC<30}(P)$
$t = SP \bowtie_{PN} r$
Получится:
PN | PF | PC | SN | kol |
---|---|---|---|---|
P1 | болт | 20 | S1 | 100 |
P3 | шайба | 10 | S1 | 200 |
P3 | шайба | 10 | S2 | 150 |
P3 | шайба | 10 | S3 | 50 |
$z = \Pi_{SN}(t)$
Получится:
SN |
---|
S1 |
S2 |
S3 |
SELECT DISTINCT SN FROM SP, P WHERE PC < 30 AND SP.PN = P.PN
Задача №7
Найти номера и фамилии поставщиков, поставляющих шайбы в количестве больше 100.
$w = \sigma_{PF=шайба}(P)$
$t = w \bowtie_{PN}SP$
$z = \sigma_{kol>100}(t)$
$q = z \bowtie_{SN} S$
$x = \Pi_{SN,SF}(q)$
Получится:
SN | SF |
---|---|
S1 | Иванов |
S2 | Петров |
SELECT SN, SF FROM S, P, SP WHERE PF = 'шайба' AND kol > 100 AND P.PN = SP.PN AND SP.SN = S.SN
Задача №8
Все поставщики переехали из Москвы в Питер. Модифицировать таблицу S.
$t = \sigma_{SS=Москва}(S)$, получится:
SN | SF | SS | SG |
---|---|---|---|
S1 | Иванов | 80 | Москва |
S3 | Кротов | 100 | Москва |
$f = \Pi_{SN,SF,SS}(t)$, получится:
SN | SF | SS |
---|---|---|
S1 | Иванов | 80 |
S3 | Кротов | 100 |
Ввели новую таблицу spb:
SG |
---|
Санкт-Петербург |
$m = f\times spb$, получится:
SN | SF | SS | SG |
---|---|---|---|
S1 | Иванов | 80 | Санкт-Петербург |
S3 | Кротов | 100 | Санкт-Петербург |
$z = S - t$, получится:
SN | SF | SS | SG |
---|---|---|---|
S2 | Петров | 40 | Самара |
$S = m \bigcup z$, получится:
SN | SF | SS | SG |
---|---|---|---|
S1 | Иванов | 80 | Санкт-Петербург |
S3 | Кротов | 100 | Санкт-Петербург |
S2 | Петров | 40 | Самара |
UPDATE S SET SG='Санкт Петербург' WHERE SG='Москва'