ТОРА (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 условие

Предметная область, используемая в задачах

Этого семинара, само собой.

Таблицы

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

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

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

Задачи

Задача №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
S1 P3 200
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 kol < 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 kol > 100 AND P.PN = SP.PN AND SP.SN = S.SN

Задача №8

Все поставщики переехали из Москвы в Питер. Модифицировать таблицу S.