Оператор выборки в Transact-SQL. Использование представлений (Лабораторная работа № 3), страница 7

Обозначение

Сокращения

year

yy, yyyy

quarter

qq, q

month

mm, m

dayofyear

dy, y

day

dd, d

week

wk, ww

hour

hh

minute

mi

second

ss, s

millisecond

ms

2.3. Способы реализации операций реляционной алгебры в Transact-SQL

В теории реляционных баз данных известен такой аппарат, как реляционная алгебра. Она представляет собой набор операций, выполняемых над отношениями (таблицами) с целью получения новых отношений. Поиск информации в реляционных БД теоретически сводится к выполнению некоторого множества операций над исходными таблицами БД. На практике для этих целей используется оператор select, синтаксис которого позволяет конструировать как простые, так и довольно сложные запросы. Понятно, что реляционная алгебра и способы записи оператора select должны быть взаимосвязаны. И действительно, для любой операции реляционной алгебры существует шаблон (возможно, даже не один) select-вызова, что показано в табл. 7. Следует заметить, что в табл. 7 не рассмотрены операции «пересечение» и «разность», поскольку они не имеют реализации в Transact-SQL.  

Таблица 7 – Использование оператора select для выполнения конкретных реляционных операций

Операция

Запись select-вызова в Transact-SQL

Примечание

Объединение

select * from R1

union

select * from R2

Операции объединения соответствует ключевое слово union

Декартово произведение

select * from R1, R2

Ограничение

select * from R where C(x)

Для задания ограничивающего условия служит секция where оператора select

x – простой или составной атрибут отношения R

Проекция

select A1,…,An from R

Множество атрибутов, по которому выполняется проекция, задается в списке выражений сразу после ключевого слова select

Тета-соединение

select *

from R1, R2

where C(x)

или

select *

from R1 join R2

on C(x)

Здесь x – атрибут (простой или составной) отношения


Продолжение таблицы 7

Эквисоединение

select *

from R1, R2

where R1.k = R2.k

или

select *

from R1 inner join R2

on R1.k = R2.k

Атрибут k является общим для обоих отношений

Естественное соединение

select k, x11, x12, …, x1n, x21, x22, …, x2m

from R1, R2

where R1.k = R2.k

Атрибут k является общим для обоих отношений; атрибуты x11, …, x1n принадлежат отношению R1; атрибуты x21, …, x2m – отношению R2

Внешнее соединение

select *

from R1 full outer join R2

on R1.k = R2.k

Атрибут k является общим для обоих отношений

Левое внешнее соединение

select *

from R1 left outer join R2

on R1.k = R2.k

Атрибут k является общим для обоих отношений

Правое внешнее соединение

select *

from R1 right outer join R2

on R1.k = R2.k

Атрибут k является общим для обоих отношений

Расширенная проекция

select f(x)

from R

Здесь f(x) может пониматься как одна функция от простого или составного атрибута x, или как множество функций, примененных к простым атрибутам, входящим в составной атрибут x

Расширенная проекция с переименованием атрибутов

select f(x) as y

from R

Сортировка

select *

from R

order by x


Продолжение таблицы 7

Агрегирование

select f(x)

from R

Здесь f(x) – агрегатная функция

Группирование

select x

from R

group by x

x – простой или составной атрибут отношения R

Группирование с агрегированием

select x, f(y)

from R

group by x

x и y – атрибуты отношения R, не обязательно совпадающие

Группирование с ограничением

select x

from R

group by x

having C(y)

x и y – атрибуты отношения R, не обязательно совпадающие