Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 7. Операторы реляционной алгебры.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
157.18 Кб
Скачать

4) Деление: a divideby b

Результатом деления двух отношений (бинарного и унарного) является отношение, содержащее все значения атрибута первого бинарного отношения, которые соответствуют всем значениям унарного отношения.

Эта операция не имеет аналога в MS SQL Server 2008, поэтому рассмотрим на примере деления отношения R1 на R2:

R1:

A

X

A

Y

B

Z

B

X

C

Y

R2:

X

Y

В результате получится отношение:

R:

A

Операции расширения и подведения итогов

После того, как Э. Кодд предложил восемь основных операций, многочисленные авторы предложили новые алгебраические операции. Мы рассмотрим лишь две из них – расширение и подведение итогов. Эти операции удачно дополняют основной набор и являются наиболее востребованными.

1. Расширение

С помощью операции расширения из отношения создаётся новое отношение, содержащее новый атрибут, значения которого получены посредством скалярных вычислений.

Пусть дано следующее отношение Teachers:

TeacherID

Name

BirthDate

1

Кислицын О.П.

1.2.1970

2

Царев С.М.

10.03.1964

4

Пестов Д.Н.

2.05.1980

Добавим новый атрибут Age, который будет показывать, сколько полных лет исполнилось преподавателю:

SELECT TeacherID, Name, BirthDate, DATEDIFF(YEAR, BirthDate, GetDate()) AS ‘Age’ FROM Teachers

Результатом выполнения будет отношение:

TeacherID

Name

BirthDate

Age

1

Кислицын О.П.

1.2.1970

39

2

Царев С.М.

10.03.1964

45

4

Пестов Д.Н.

2.05.1980

29

2. Подведение итогов

Операция подведения итогов даёт возможность "вертикальных" вычислений. Для этого используются агрегатные функции, которые для набора значений возвращают одно единственное. Наиболее распространенные функции: Sum, Count, Avg, Min, Max.

Пусть дано следующее отношение Students:

StudentID

Name

GroupID

1

Казаков Петр

2

2

Васильев Иван

1

4

Шишкина Дарья

2

5

Драгомиров Евгений

1

6

Васнецова Евгения

2

Требуется подсчитать, сколько студентов в каждой группе:

SELECT GroupID, Count(StudentID) as ‘StudentCount' FROM Students

GROUP BY GroupID

Результатом выполнения будет отношение:

GroupID

StudentCount

1

2

2

3

Операторы обновления

Предназначены для управления данными в таблицах. Существует три операции обновления.

1) Вставка записи

Позволяет добавлять одну или несколько новых записей в отношение.

Пусть имеется отношение Students:

StudentID

Name

GroupID

1

Казаков Петр

2

2

Васильев Иван

1

4

Шишкина Дарья

2

Чтобы добавить в него две новые записи, можно использовать следующие операторы SQL:

INSERT INTO Students (Name, GroupID) VALUES (‘Драгомиров Евгений’, 1)

INSERT INTO Students (Name, GroupID) VALUES (‘Васнецова Евгения’, 2)

После выполнения, отношение Students будет выглядеть следующим образом:

StudentID

Name

GroupID

1

Казаков Петр

2

2

Васильев Иван

1

4

Шишкина Дарья

2

5

Драгомиров Евгений

1

6

Васнецова Евгения

2