
- •НИЯУ "МИФИ"
- •Основы проектирования запросов 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.
Москва
2011

Основы проектирования запросов SQL
1.1
Результатом запроса SELECT всегда является таблица.
Данные, возвращаемые запросом содержат данные из таблиц БД, или результаты операций над ними.
Как правило один и тот же набор результирующих данных может быть получен различными способами.
Скорость двух эквивалентных с точки зрения результата запросов может различаться на порядок.

Основы проектирования запросов SQL
1.2
Манипулятивная часть языка SQL (DML) является декларативным языком программирования.
Процедурные возможности, как правило, являются СУБД-зависимыми (Transact SQL, PL/SQL)
Запросы могут быть объединены в хранимую процедуру для повторных вызовов.
Курсоры позволяют выполнить процедурные действия над отдельными строками, возвращенными запросом

Основы проектирования запросов SQL
1.1
Предложение SELECT
SELECT список_вывода FROM источники
WHERE условие_отбора_строк GROUP BY список_для_группирования HAVING условие_отбора_групп ORDER BY список_для_упорядочивания
SELECT определяет совокупность колонок результирующей таблицы;
WHERE определяет дополнительные условия, накладываемые на строки;
GROUP BY позволяет сгруппировать строки по определенному признаку для последующей обработки;
HAVING позволяет из всех групп выбрать некоторые группы; ORDER BY позволяет упорядочить строки результирующей таблицы; FROM определяет совокупность источников данных;

Основы проектирования запросов SQL
1.1
Порядок обработки запроса
Шаг 1 (FROM). Выделяются таблицы и представления, из которых выбираются нужные данные.
Шаг 2 (WHERE). Из выбранных таблиц выбираются строки, удовлетворяющие указанному условию отбора.
Шаг 3 (GROUP BY). Выбранные строки объединяются в группы (группируются) по указанным признакам.
Шаг 4 (HAVING). Из созданных групп выделяются группы, удовлетворяющие условию отбора групп. В качестве условия могут использоваться только атрибуты, участвующие в групировке
Шаг 5 (SELECT). Из выбранных групп в соответствии со списком вывода выделяются и обрабатываются необходимые данные, создавая строки и столбцы результирующей таблицы

Основы проектирования запросов SQL
1.1
Порядок обработки запроса SELECT [DISTINCT] список_вывода
список_вывода - определяет колонки в результирующей таблице DISTINCT – исключает вывод дубликатов
имя_таблицы.имя_колонки – уточненное имя.
* или имя_таблицы.* - получение всех колонок таблицы.
элемент AS новое_имя – задат новое имя колонки

Основы проектирования запросов SQL
1.1
Порядок обработки запроса
SELECT [DISTINCT] список_вывода
Пример1: |
|
DEPARTMENT |
|
|
|
Dep_id |
Dep_name |
Manager_id |
1 |
Кадры |
100 |
2 |
Продажи |
200 |
3 |
Маркетинг |
200 |
SELECT * FROM DEPARTMENT
Dep_id |
Dep_name |
Maneger_id |
1 |
Кадры |
100 |
2 |
Продажи |
200 |
3 |
Маркетинг |
200 |

Основы проектирования запросов SQL
1.1
Порядок обработки запроса
SELECT [DISTINCT] список_вывода
Пример2:
SELECT Dep_id, Dep_name
FROM DEPARTMENT
Dep_id |
Dep_name |
1 |
Кадры |
2 |
Продажи |
3 |
Маркетинг |
Пример3:
SELECT Dep_id as D, Dep_name as N
FROM DEPARTMENT
D |
N |
1 |
Кадры |
2 |
Продажи |
3 |
Маркетинг |
Пример4:
SELECT DISTINCT Manager_id as M_ID FROM DEPARTMENT
M_ID
100
200

Основы проектирования запросов SQL
1.1
Конструкция FROM,
FROM элемент1, элемент2, … Элементом может быть:
Ссылка на таблицу. Соединение таблиц.
Вложенное табличное выражение.
Ссылка на таблицу:
имя_таблицы [[AS] корреляционное имя ]
Имя таблицы существующую таблица базы данных. Корреляционное имя – псевдоним таблицы в рамках данного запроса.
Пример: |
|
SELECT D1.Dep_id, D2.Dep_name |
РЕЗУЛЬТАТ ? |
FROM Department D1, Department D2 |

Основы проектирования запросов SQL
1.1
Соединение таблиц
Соединение таблиц:
элемент1 [тип_соединения] JOIN элемент2 ON условие_соединения
Элементом может быть:
Ссылка на таблицу. Соединение таблиц.
Вложенное табличное выражение.
Тип соединения:
внутреннее (INNER) |
внешнее (OUTER) |
левое (LEFT) правое (RIGHT) полное (FULL)