
- •НИЯУ "МИФИ"
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Процедурные элементы Transact SQL
- •Триггеры как инструмент ограничения целостности в 7.2 Transact SQL
- •Триггеры как инструмент ограничения целостности в 7.2 Transact SQL
- •Триггеры как инструмент ограничения целостности в 7.3 Transact SQL
- •Триггеры как инструмент ограничения целостности в 7.4 Transact SQL
- •Триггеры как инструмент ограничения целостности в 7.5 Transact SQL
- •Курсор, как средство процедурного доступа к табличным данным 7.6 в Transact SQL

Основы проектирования запросов 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