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

SQL

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

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

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

 

 

 

 

 

 

Коррелированный подзапрос.

 

Emp

 

Dept

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dep_id

Emp_id

 

Salary

 

Dep_id

Name_dept

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

10

 

100

 

1

 

P , % =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

15

 

150

 

2

 

IT

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

20

 

200

 

3

 

R $ $%

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

25

 

250

SELECT Emp_id emp, Name_dept Name

 

 

 

 

 

 

 

 

 

 

 

 

 

3

30

 

300

FROM

dept d

 

 

 

 

 

 

 

 

 

 

 

 

 

WHERE EXISTS

 

 

 

4

70

 

500

 

 

(SELECT null

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FROM emp e

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

WHERE d.Dep_id = e.Dept_id);

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SQL

 

 

 

 

 

 

Коррелированный подзапрос.

 

Emp

 

Dept

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dep_id

Emp_id

 

Salary

 

Dep_id

Name_dept

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

10

 

100

 

1

 

P , % =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

15

 

150

 

2

 

IT

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

20

 

200

 

3

 

R $ $%

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

25

 

250

 

 

 

 

 

 

 

 

 

 

SELECT Emp_id emp, Name_dept Name

 

 

 

 

 

3

30

 

300

FROM

dept d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

WHERE d.dep_id IN

 

 

 

 

 

4

70

 

500

 

 

(SELECT e.dep_id

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FROM emp e);

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SQL

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

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

FROM источники

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

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

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

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

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

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

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

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

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

SQL

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

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

FROM источники

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

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

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

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

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

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

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

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

SQL

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

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

FROM источники

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

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

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

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

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

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

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

SELECT DeptID, SUM(Salary)

FROM Emp

GROUP BY DeptID

HAVING SUM(Salary) >100

SQL

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

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

FROM источники

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

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

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

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

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

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

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

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

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

 

по умолчанию

 

Соседние файлы в папке Презентации БД (ВФ)