Интернет Университет информационных технологий Твой путь к знаниям
  Искать!
Курсы | Обучение | Школа | Магазин | Общение | Новости | Помощь

поддержка курса Основы SQL
информация [+] Автор: Л.Н. Полякова | ISBN: 978-5-9556-0101-4


 
 
Страницы: « | 1 | 2 | 3 | вопросы | » для печати и PDA
Если Вы заметили ошибку - сообщите нам или выделите ее и нажмите Ctrl+Enter

Операция объединения

Объединение ( UNION ) R \cup S отношений R и S можно получить в результате их конкатенации с образованием одного отношения с исключением кортежей-дубликатов. При этом отношения R и S должны быть совместимы, т.е. иметь одинаковое количество полей с совпадающими типами данных. Иначе говоря, отношения должны быть совместимы по объединению.

Объединением двух таблиц R и S является таблица, содержащая все строки, которые имеются в первой таблице R, во второй таблице S или в обеих таблицах сразу.

SELECT R.a1, R.a2 
FROM R
UNION
SELECT S.b2, S.b1 
FROM S
Пример 5.13. Объединение отношений в SQL. (html, txt)

Операция пересечения

Операция пересечения ( INTERSECT ) R \cap S=R-(R-S) определяет отношение, которое содержит кортежи, присутствующие как в отношении R, так и в отношении S. Отношения R и S должны быть совместимы по объединению .

Пересечением двух таблиц R и S является таблица, содержащая все строки, присутствующие в обеих исходных таблицах одновременно.

SELECT R.a1, R.a2
FROM R,S
WHERE R.a1=S.b1 AND R.a2=S.b2

   или

SELECT R.a1, R.a2
FROM R
WHERE R.a1 IN    
    (SELECT S.b1 FROM S
     WHERE S.b1=R.a1) AND R.a2 IN
         (SELECT S.b2
          FROM S
          WHERE S.b2=R.a2)
Пример 5.14. Пересечение отношений в SQL. (html, txt)

Операция разности

Разность ( EXCEPT ) R-S двух отношений R и S состоит из кортежей, которые имеются в отношении R, но отсутствуют в отношении S. Причем отношения R и S должны быть совместимы по объединению.

Разностью двух таблиц R и S является таблица, содержащая все строки, которые присутствуют в таблице R, но отсутствуют в таблице S.

SELECT R.a1, R.a2
FROM R
WHERE NOT EXISTS 
    (SELECT S.b1,S.b2
     FROM S
     WHERE S.b1=R.a2 AND S.b2=R.a1)
Пример 5.15. Разность отношений в SQL. (html, txt)

Операция деления отношений

Результат операции деления R:S - набор кортежей отношения R, определенных на множестве атрибутов C, которые соответствуют комбинации всех кортежей отношения S .

T1=ПC( R );
T2=ПC( (S X T1) -R );
T=T1 - T2.

Отношение R определено на множестве атрибутов A, а отношение S - на множестве атрибутов B, причем A \supseteq B и C=A - B.

Пусть A ={имя, пол, рост, возраст, вес}; B ={имя, пол, возраст}; C ={рост, вес}.

Таблица 5.6.
Отношение R
имя пол рост возраст вес
aж1602060
bм1803070
cж1501640
Отношение S
имя пол возраст
aж20
T1=ПC(R)
рост вес
16060
18070
15040
TT=(S X T1)-R
имя пол возраст рост вес
aж2018070
aж2015040
T2=ПC((S X T1)-R)
рост вес
18070
15040
T=T1-T2
рост вес
16060

Пример 5.16. Деление отношений в SQL.

  • Создание отношения R
    CREATE TABLE R
    (i     int primary key,
    имя    varchar(3),
    пол    varchar(3),
    рост   int,
    возраст int,
    вес    int)
    Пример 5.16a. Деление отношений в SQL. (html, txt)
  • Создание отношения S
    CREATE TABLE S
    (i     int primary key,
    имя    varchar(3),
    пол    varchar(3),
    возраст int)
    Пример 5.16b. Деление отношений в SQL. (html, txt)
  • Создание отношения T1
    CREATE VIEW T1
    AS 
    SELECT рост,вес
    FROM R
    Пример 5.16c. Деление отношений в SQL. (html, txt)
  • Создание отношения TT
    CREATE VIEW TT AS
    SELECT S.имя, S.пол, S.возраст, 
           T1.рост, T1.вес
    FROM S, T1
    Пример 5.16d. Деление отношений в SQL. (html, txt)
  • Создание отношения T2
    CREATE VIEW T2
    AS
    SELECT TT.рост, TT.вес
    FROM TT
    WHERE NOT EXISTS 
        (SELECT R.рост, R.вес
         FROM R
         WHERE TT.имя=R.имя AND TT.пол=R.пол
               AND TT.возраст=R.возраст 
               AND TT.рост=R.рост 
    		   AND TT.вес=R.вес)
    Пример 5.16e. Деление отношений в SQL. (html, txt)
  • Создание отношения T
    SELECT T1.рост, T1.вес
    FROM T1
    WHERE NOT EXISTS 
        (SELECT T2.рост,T2.вес
         FROM T2
         WHERE T1.рост=T2.рост AND T1.вес=T2.вес)
    Пример 5.16f. Деление отношений в SQL. (html, txt)
Перейти к вопросам »
Страницы: « | 1 | 2 | 3 | вопросы | » для печати и PDA
 
 

Внимание! Если Вы увидите ошибку на нашем сайте, выделите её и нажмите Ctrl+Enter.
Нужна помощь?
• Забыли пароль? Вам сюда...
• Есть вопрос? Спрашивайте!
Вы можете:
• Изменить персональные данные
• Изменить параметры подписки
Интернет-магазин:
• Ваши заказы здесь
• Ваш личный счет
Курсы | Учебные программы | Учебники | Вопросы и Ответы | Форум | Новости | Помощь

Телефон: +7 (499) 253-9312, 253-9313, факс: +7 (499) 253-9310, email: info@intuit.ru
© INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование, 2003-2011
Проект Издательства "Открытые Системы".
Партнеры: РМ Телеком, KRAFTWAY COMPUTERS.
Rambler's Top100