Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_Семестр1_Лекции / Informatika_2013_1_semestr_Tema_13_Primenenie_S.pptx
Скачиваний:
38
Добавлен:
05.06.2015
Размер:
351.94 Кб
Скачать

Использование подзапросов

в• УсловныйWHEREпредикат может включать подзапрос

В составе предиката подзапрос заключается в круглые скобки [ ( , ) ]

Вложенный запрос (подзапрос) должен

возвращать скалярное (одно) логическое значение (или NULL) либо выступать операндом в операции, возвращающем подобное значение

• Операции с подзапросами, возвращающими список значений, должны использовать предикаты ANY

Информатика(SOME. 1 семестр) и. ТемаALL13. ПрименениедляSQLгруппового

EXISTS

SELECT ProductID, Name, Color

FROM Production

WHERE EXISTS ( SELECT

ProductID

FROM Production ); SELECT ProductID, Name, Color

FROM Production

WHERE Cost >= ( SELECT AVG(

Cost )

FROM Production );

SELECT Name, NCost

FROM ( SELECT Name, Cost * 1.15 AS NCost

FROM Production ) WHERE ProductID >= 725 );

Наличие в

списке хотя бы одного

результата

Сравнение с единственны

м

возвращаем

ым

значением

Использован

ие

подзапроса

как

источника

данных

Информатика. 1 семестр. Тема 13. Применение SQL

Запрос на выборку

SELECT smth

Оператор JOIN

Информатика. 1 семестр. Тема 13. Применение SQL

JOIN

Оператор SQL реализующий операцию соединения реляционной алгебры для раздела FROM

В схему таблицы-результата входят столбцы обеих таблиц-операндов

(«сцепление» схем операндов)

Каждая строка таблицы-результата является «сцеплением» строк таблиц- операндов

Результирующий набор строк зависит от типа операции соединения и условия

соединения

Информатика. 1необходимостисем стр. Тема 13. Пр менение SQL

• При соединения

SELECT expessions [,... n] FROM table1

[ INNER | [ LEFT | RIGHT | FULL ] OUTER | CROSS ] JOIN

table2

[ ON condition ]

Для перекрёстного соединения (декартова произведения) CROSS JOIN

можно использовать (,) SELECT expessions [,... n]

FROM table1,…, tableN

Информатика. 1 семестр. Тема 13. Применение SQL

Виды оператора JOIN

Исходные данные

INNER JOIN

Person

 

 

внутреннее соединение

CityI

 

Name

 

таблиц

 

d

 

OUTER JOIN – внешнее

Андрей

1

 

Леонид

2

 

соединение таблиц

Address

Сергей

1

LEFT OUTER JOIN

City

4

Book

 

Григор

 

левое внешнее

Idий

Name

 

соединение таблиц

1

Москва

(несимметричное)

2

Санкт-

 

RIGHT OUTER JOIN

Петербург

3

Казань

правое внешнее соединение таблиц

(несимметричное)

CROSS JOIN – перекрёстное соединение

FULL OUTER JOIN

таблиц

Информатикаполное. 1 семестрвнешнее. Тема 13. Применение SQL

INNER JOIN

Внутреннее соединение таблиц

Симметричный оператор

Результат – таблица из соединённых строк

таблиц-операндов по

SELECT * FROM

предикату

 

Person

 

 

INNER JOIN City

ON Person.CityId =

Person-City

 

 

City.Id

Person.Ci

City.Id

Person Na

me

tyID

 

Андрей

1

1

Леонид

2

2

Сергей

1

1

Person

Name

CityI

 

 

d

 

Андрей

1

 

Леонид

2

Address

Сергей

1

City

4

Book

Григор

 

Idий

Name

 

1

Москва

2

Санкт-

 

Петербург

3

Казань

City.Name

 

 

Москва

 

 

Санкт-

 

 

Петербург

 

 

Москва

 

 

LEFT OUTER

ЛевоеJOINвнешнее соединение таблиц

Несимметричный оператор

Результат – таблица из соединённых строк таблиц- операндов по предикату

дополненных оставшимися

SELECT * FROM

строками левой таблицы (дополняютсяPerson NULL)

LEFT OUTER JOIN

City

Person.Ci

City.Id

Person.Na

ON Person.CityId =

me

tyID

 

 

City.Id

 

1

1

Андрей

 

Леонид

 

2

2

Сергей

 

1

1

Григорийсеместр

4

NULL

Person

Name

CityI

 

 

d

 

Андрей

1

 

Леонид

2

Address

Сергей

1

City

4

Book

Григор

 

Idий

Name

 

1

Москва

2

Санкт-

 

Петербург

3

Казань

City.Name

Москва

Санкт- Петербург

Москва NULL

RIGHT OUTER

ПравоеJOINвнешнее соединение таблиц

Несимметричный оператор

Результат – таблица из соединённых строк таблиц- операндов по предикату

дополненных оставшимися

SELECT * FROM

строками правой таблицы (дополняютсяPerson NULL)

RIGHT OUTER JOIN

City

Person.Ci

City.Id

Person.Na

ON Person.CityId =

me

tyID

 

City.Id

1

1

Андрей

Леонид

2

2

Сергей

1

1

NULL семестр NULL

3

Person

Name

CityI

 

 

d

 

Андрей

1

 

Леонид

2

Address

Сергей

1

City

4

Book

Григор

 

Idий

Name

 

1

Москва

2

Санкт-

 

Петербург

3

Казань

City.Name

Москва

Санкт- Петербург

Москва

Казань

FULL OUTER

ПолноеJOIN внешнее соединение таблиц

Симметричный оператор

Результат – таблица из соединённых строк таблиц- операндов по предикату

дополненных оставшимися

SELECT * FROM

строками обеих таблиц (дополняютсяPerson NULL)

FULL OUTER JOIN

PersonCity.Na

Person.Ci

City.Id

me

tyID

 

ON Person.CityId =

Андрей

 

1

1

City.Id

 

2

2

Леонид

 

Сергей

 

1

1

NULL

 

NULL

3

Григорийсеместр

4

NULL

Person

Name

CityI

 

 

d

 

Андрей

1

 

Леонид

2

Address

Сергей

1

City

4

Book

Григор

 

Idий

Name

 

1

Москва

2

Санкт-

 

Петербург

3

Казань

City.Name

Москва

Санкт- Петербург

Москва

Казань NULL