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