- •Лекция 7. Операторы реляционной алгебры
- •Понятие реляционной алгебры
- •Основные операторы реляционной алгебры
- •1) Объединение: a union b
- •2) Пересечение: a intersect b
- •3) Вычитание: a minus b
- •4) Произведение: a times b
- •3) Соединение
- •1) Выборка (или ограничение)
- •2) Проекция
- •4) Деление: a divideby b
- •Операции расширения и подведения итогов
- •1. Расширение
- •2. Подведение итогов
- •Операторы обновления
- •1) Вставка записи
- •2) Удаление записи.
- •3) Обновление записи
3) Вычитание: a minus b
Результатом операции вычитания является отношение, которое содержит все кортежи, принадлежащие первому отношению и не принадлежащие второму отношению.
Условия необходимы те же: совместимость по типу и замкнутость.
Пример: рассмотрим отношение Teachers (преподаватели) и Supervisors (кураторы, могут руководить преподавателями):
Teachers:
TeacherID |
Name |
BirthDate |
1 |
Кислицын О.П. |
1.2.1970 |
2 |
Царев С.М. |
10.03.1964 |
4 |
Пестов Д.Н. |
2.05.1980 |
Supervisors:
SupervisorID |
Name |
BirthDate |
1 |
Кислицын О.П. |
1.2.1970 |
2 |
Царев С.М. |
10.03.1964 |
4 |
Нечаев Н.В. |
12.08.1970 |
Требуется вывести всех преподавателей (из таблицы Teachers), которые одновременно являются кураторами.
SELECT Name FROM Teachers
EXCEPT
SELECT Name FROM Supervisors
Результатом выполнения запроса будет:
Name |
Пестов Д.Н. |
4) Произведение: a times b
Результатом является отношение, содержащее все возможные кортежи, которые являются сочетанием двух кортежей, принадлежащих двум отношениям.
Для произведения необходимо свойство замкнутости, т.е. результатом является не просто множество пар кортежей, а множество целых кортежей. В реляционной алгебре каждая пара кортежей заменяется одним благодаря сцеплению (сцепление – это объединение в смысле теории множеств, а не реляционной алгебры).
При произведении может возникнуть проблема одинаковых имён атрибутов. В этом случае одно из конфликтующих полей необходимо переименовать.
Пример: рассмотрим отношения Students и Courses (учебные курсы):
Students:
StudentID |
Name |
GroupID |
BirthDate |
1 |
Казаков Петр |
2 |
23.04.1990 |
2 |
Васильев Иван |
1 |
11.05.1991 |
4 |
Шишкина Дарья |
2 |
23.09.1991 |
Courses:
CourseID |
Name |
1 |
Базы данных |
2 |
Технологии программирования |
3 |
Программирование в среде С++ |
Требуется для каждого студента вывести список всех доступных учебных курсов. Составим следующий код:
SELECT Students.Name AS ‘Student’, Courses.Name AS ‘CourseName’
FROM Students
CROSS JOIN Courses
Результат выполнения запроса:
Name |
Name |
Казаков Петр |
Базы данных |
Васильев Иван |
Базы данных |
Шишкина Дарья |
Базы данных |
Казаков Петр |
Технологии программирования |
Васильев Иван |
Технологии программирования |
Шишкина Дарья |
Технологии программирования |
Казаков Петр |
Программирование в среде С++ |
Васильев Иван |
Программирование в среде С++ |
Шишкина Дарья |
Программирование в среде С++ |
2. Специальные реляционные операции.
