
Презентации БД (ВФ) / DB_lec6
.pdfSQL
Structured Query Language
SQL
•Результатом запроса SELECT всегда является таблица.
•Данные, возвращаемые запросом содержат данные из таблиц БД, или результаты операций над ними.
•Как правило один и тот же набор результирующих данных может быть получен различными способами.
•Скорость двух эквивалентных с точки зрения результата запросов может различаться на порядок.
SQL
•! SQL " #"!$% ! % $&$%%$.
•($)"#$" % * , ! ! $, , -./0- % % (Transact SQL, PL/SQL)
•8$ % & 9 9:"# " ;$% ,$)"#$ # $; .

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

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

SQL
SELECT
SELECT [DISTINCT] _
_ -
DISTINCT –
_ !. _ – .
* _ !.* - .
# AS _ –

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

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