ТОРА (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_{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 | Москва |
$$\Pi_{SS,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='Москва'