ТОРА (9) - Семинар №1 - Операции реляционной алгебры

Материал из Кафедра ИУ5 МГТУ им. Н.Э.Баумана, студенческое сообщество
Перейти к навигации Перейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

Операции реляционной алгебры и их связь с 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 - количество поставляемых деталей.

Примеры экземпляров отношений

$$S$$
SN SF SS SG
S1 Иванов 80 Москва
S2 Петров 40 Самара
S3 Кротов 100 Москва
$$P$$
PN PF PC
P1 болт 20
P2 гайка 25
P3 шайба 10
P4 гайка 30
$$SP$$
SN PN kol
S1 P1 100
S1 P3 200
S2 P3 150
S3 P3 50

Задачи

Задача №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='Москва'