Материал: Письменные лекции по дисциплине «Базы данных»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Выбирает все наборы значений (по столбцам <columns...>) таблицы <table1> и все наборы значений (по тем же столбцам <columns...>) таблицы <table2>, по итогу образуя таблицу их пересечения (т. е. те кортежи, которые есть в обеих таблицах).

Пример

Имя

Возраст

Вес

 

 

 

Harry

34

80

 

 

 

Sally

28

64

 

 

 

George

29

70

 

 

 

Helena

54

54

 

 

 

Peter

34

80

 

 

 

Имя

Возраст

Вес

 

 

 

Daffy

24

19

 

 

 

George

29

70

 

 

 

Donald

25

23

 

 

 

Scrooge

81

27

 

 

 

Sally

28

64

SELECT Имя, Возраст, Вес FROM Персоны

INTERSECT

SELECT Имя, Возраст, Вес FROM Персонажи

Имя

Возраст

Вес

 

 

 

George

29

70

 

 

 

Sally

28

64

 

 

 

5. Разность

SELECT <columns...> FROM <table1>

EXCEPT

SELECT <columns...> FROM <table2>

Выбирает все наборы значений (по столбцам <columns...>) таблицы <table1> и все наборы значений (по тем же столбцам <columns...>) таблицы <table2>, по итогу образуя таблицу их разности (т. е. те кортежи, которые есть в первой таблице и при этом отсутствуют во второй).

Пример

Имя

Возраст

Вес

 

 

 

Harry

34

80

 

 

 

Sally

28

64

 

 

 

George

29

70

 

 

 

Helena

54

54

 

 

 

Peter

34

80

 

 

 

Имя

Возраст

Вес

 

 

 

Daffy

24

19

 

 

 

George

29

70

 

 

 

Donald

25

23

 

 

 

Scrooge

81

27

 

 

 

Sally

28

64

SELECT Имя, Возраст, Вес FROM Персоны

EXCEPT

SELECT Имя, Возраст, Вес FROM Персонажи

Имя

Возраст

Вес

 

 

 

Harry

34

80

 

 

 

Helena

54

54

 

 

 

Peter

34

80

6. Произведение

SELECT <columns...> FROM <tables...>

Выбирает все наборы значений (по столбцам <columns...>) по указанным таблицам <tables...>.

Пример

Код_мульта

Название_мульта

 

 

0

The Simpsons

 

 

1

Family Guy

 

 

2

Duck Tales

 

 

Код_канала

Название_канала

 

 

 

 

 

 

0

 

СТС

 

 

 

 

 

 

1

 

 

2x2

 

 

 

 

 

SELECT * FROM Мультфильмы, Каналы

 

 

Код_мульта

Название_мульт

Код_канала

 

Название_канала

 

а

 

 

 

 

 

 

 

 

0

The Simpsons

0

 

СТС

 

 

 

 

 

0

The Simpsons

1

 

2x2

 

 

 

 

 

1

Family Guy

0

 

СТС

 

 

 

 

 

1

Family Guy

1

 

2x2

 

 

 

 

 

2

Duck Tales

0

 

СТС

 

 

 

 

 

2

Duck Tales

1

 

2x2

 

 

 

 

 

7. Деление

 

 

 

 

Реляционное деление достаточно нетривиально описать. В целом, из первой таблицы берутся значения строк, для которых присутствуют все комбинации значений из второй таблицы.

Пример

Код_мульта

Название_мульта

Название_канала

 

 

 

0

The Simpsons

RenTV

 

 

 

0

The Simpsons

2x2

 

 

 

0

The Simpsons

СТС

 

 

 

1

Family Guy

RenTV

 

 

 

1

Family Guy

2x2

 

 

 

2

Duck Tales

СТС

 

 

 

2

Duck Tales

2x2

 

 

 

Название_канала

RenTV

2х2

Family Guy и The Simpsons — мультфильмы, которые показывались и на RenTV, и на 2x2 (условие во второй таблице). При этом Duck Tales не показывалось по RenTV, потому был исключен из результирующей таблицы.

 

Код_мульта

Название_мульта

 

 

 

 

0

The Simpsons

 

 

 

 

1

Family Guy

 

 

 

8. Соединение

 

SELECT <columns...> FROM <tables...> WHERE <condition>

Выбирает все наборы значений (по столбцам <columns...>) по указанным таблицам <tables...> в соответствии с условием <condition>. Первый этап — произведение. Второй этап — фильтрация в соответствии с условием.

Пример

Код_мульта

Название_мульта

Название_канала

 

 

 

0

The Simpsons

2x2

 

 

 

1

Family Guy

2x2

 

 

 

2

Duck Tales

RenTV

 

 

 

Код_канала

Частота

 

 

RenTV

3.1415

 

 

2x2

783.25

SELECT * FROM Мультфильмы, Каналы WHERE Название_канала =

Код_канала

Первый этап — произведение.

Код_мульт

Название_муль

Название_кана

Код_канал

Частот

а

та

ла

а

а

 

 

 

 

 

0

The Simpsons

2x2

RenTV

3.1415

 

 

 

 

 

0

The Simpsons

2x2

2x2

783.25

 

 

 

 

 

1

Family Guy

2x2

RenTV

3.1415

 

 

 

 

 

1

Family Guy

2x2

2x2

783.25

 

 

 

 

 

2

Duck Tales

RenTV

RenTV

3.1415

 

 

 

 

 

2

Duck Tales

RenTV

2x2

783.25

 

 

 

 

 

Второй этап — фильтрация в соответствии с условием.

 

Код_мульт

Название_муль

Название_кана

 

Код_канал

Частот

а

 

та

 

ла

 

а

а

 

 

 

 

 

 

0

The Simpsons

2x2

 

2x2

783.25

 

 

 

 

 

 

 

1

Family Guy

 

2x2

 

2x2

783.25

 

 

 

 

 

 

 

 

2

 

Duck Tales

 

RenTV

 

RenTV

3.1415

 

 

 

 

 

 

 

Подробнее: http://migku

.wikidot.com/gos-db-16