Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
86
Добавлен:
10.05.2014
Размер:
1.17 Mб
Скачать

Основы проектирования запросов SQL

1.1

Вложенное табличное выражение (подзапрос)

Многострочный подзапрос

Emp

SELECT Emp_id, Dep_id, salary

FROM emp

200,250

 

WHERE salary <ALL

 

 

 

 

 

 

(SELECT salary

 

 

 

FROM emp

 

 

 

WHERE Dep_id = 2);

 

 

 

 

 

SELECT Emp_id, Dep_id, salary FROM emp

WHERE Dep_ID NOT IN (SELECT Dep_id FROM emp WHERE Dep_id = 1);

Dep_id Emp_id

Salary

1

10

100

1

15

150

2

20

200

2

25

250

3

30

300

РЕЗУЛЬТАТ ?

Основы проектирования запросов SQL

1.1

Вложенное табличное выражение (подзапрос) Пример: получить информацию об отделах и сотрудниках, используя

подзапрос.

 

Emp

Dep_id Emp_id

Salary

1

10

100

1

15

150

2

20

200

3

30

300

SELECT E.Emp_id FROM EMP E

WHERE Salary > (Select salary from emp where emp_id=20)

Основы проектирования запросов SQL

1.1

Конструкция WHERE

SELECT список_вывода

FROM источники

WHERE условие_отбора_строк

GROUP BY список_для_группирования

HAVING условие_отбора_групп

ORDER BY список_для_упорядочивания

WHERE условие_поиска

В результате использования WHERE, будут получены только те строки, для которых условие_поиска истенно.

Условие поиска имеет ограничения:

1.Имя колонки имя должно уникально идентифицировать колонку исходной таблицы .

2.В условии поиска конструкции WHERE НЕ МОГУТ!!! быть использованы агрегатные функции

Основы проектирования запросов SQL

1.1

Конструкция GROUP BY

SELECT список_вывода FROM источники

WHERE условие_отбора_строк GROUP BY список_для_группирования HAVING условие_отбора_групп ORDER BY список_для_упорядочивания

GROUP BY элемент [, элемент …]

Используется когда в список вывода конструкции SELECT включаются,

в том числе, и выражения, содержащие агрегатные функции. Элемент представляется в виде некоторого выражения группирования, содержащего имена колонок и используемого для определения группы строк.

Каждому выражению списка вывода, не содержащему агрегатную функцию, должно соответствовать выражение группирования. Т.е. выражения к которым не применяется агрегатная функция должны присутствовать в GROUP BY.

Основы проектирования запросов SQL

1.1

Конструкция HAVING

SELECT список_вывода FROM источники

WHERE условие_отбора_строк GROUP BY список_для_группирования HAVING условие_отбора_групп ORDER BY список_для_упорядочивания

HAVING условие_поиска

Синтаксические правила условие_поиска соответствует WHERE.

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

SELECT DeptID, SUM(Salary)

SELECT DeptID, SUM(Salary)

FROM Emp

FROM Emp

WHERE dep_id=1 and

GROUP BY DeptID

SUM(Salary) >100

GROUP BY DeptID

HAVING SUM(Salary) >100

Основы проектирования запросов SQL

1.1

Конструкция HAVING

SELECT список_вывода FROM источники

WHERE условие_отбора_строк GROUP BY список_для_группирования HAVING условие_отбора_групп ORDER BY список_для_упорядочивания

ORDER BY ключ_сортировки [направление_сортировки] , …

В качестве ключа_сортировки могут быть указаны имя колонки или

простое целое.

Направление_сортировки

По возрастанию(ASC)

По убыванию(DESC)

по умолчанию

 

Основы проектирования запросов SQL

1.1

Теоретико-множественные операции

UNION или UNION ALL – для операции объединения, MINUS – для операции вычитания,

INTERSECT – для операции пересечения.

Операция UNION

 

Возвращает результат

 

объединения двух запросов,

 

 

A

B

исключая дубликаты.

SELECT Dep_id FROM Dep UNION SELECT Dep_id FROM Emp

--------

1

2

3

Основы проектирования запросов SQL

1.1

Теоретико-множественные операции

Операция UNION ALL

A B

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

SELECT Dep_id FROM Dep UNION ALL SELECT Dep_id FROM Emp

--------

1

1

2

3

Основы проектирования запросов SQL

1.1

Теоретико-множественные операции

Операция INTERSECT

A B

Возвращает строки, которые присутствуют в обоих запросах.

SELECT Dep_id FROM Dep WHERE Dep_id <>3 INTERSECT SELECT Dep_id FROM Emp

--------

1

2

Основы проектирования запросов SQL

1.1

Теоретико-множественные операции

Операция MINUS

A B

Возвращает строки первого запроса, которые отсутствуют во втором

SELECT Dep_id FROM Dep MINUS SELECT Dep_id FROM Emp

WHERE Dep_id NOT IN(1,2)

--------

1

2

3

Соседние файлы в папке docs