Выбирает все наборы значений (по столбцам <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 |
|
|
|
|||
|
|
|
|
|
|
|
|