Базы данных и СУБД SQL

Содержание

Слайд 2

Запрос на выборку SELECT smth Информатика. 1 семестр. Тема 13. Применение SQL

Запрос на выборку

SELECT smth

Информатика. 1 семестр. Тема 13. Применение SQL

Слайд 3

Запрос на выборку SELECT smth. Информатика. 1 семестр. Тема 13. Применение

Запрос на выборку

SELECT smth.

Информатика. 1 семестр. Тема 13. Применение SQL

SELECT expr1,...,

exprN
FROM source1,..., sourceN
[ [ INNER ] JOIN othersource [ON join_predicate1 ] ]
[ WHERE predicate2 ]
[ GROUP BY group_expr1,..., group_exprN ]
[ HAVING group_predicate ]
[ ORDER BY field1,..., fieldN [ ASC | DESC ] ]
[ LIMIT [ offset, ] rowcount ]
Слайд 4

Запрос на выборку SELECT smth. Оператор WHERE Информатика. 1 семестр. Тема 13. Применение SQL

Запрос на выборку

SELECT smth.

Оператор WHERE

Информатика. 1 семестр. Тема 13. Применение SQL

Слайд 5

Информатика. 1 семестр. Тема 13. Применение SQL WHERE Условный оператор в

Информатика. 1 семестр. Тема 13. Применение SQL

WHERE

Условный оператор в SQL

Используется для отбора записей – указывает оператору языка управления данными (DML) записи, на которые он действует
Не обязательный в SQL (DML) выражениях
В выражениях с SELECT, DELETE, UPDATE предваряет критерии отбора данных
Критерии отбора должны быть записаны в форме предикатов булевского вида (TRUE, FALSE или NULL)
Действует на исходный набор записей (до группировки)
Слайд 6

Информатика. 1 семестр. Тема 13. Применение SQL Применение WHERE SQL-DML-выражение FROM

Информатика. 1 семестр. Тема 13. Применение SQL

Применение WHERE

SQL-DML-выражение
FROM table_name
WHERE predicate

Все

записи, для которых значением предиката является истина – будут задействованы (возвращены)

Записи, для которых значением предиката является ложь или неопределённость (NULL) – будут исключены из обработки (выборки)

DELETE
FROM mytable
WHERE mycol IS NULL OR mycol = 100

Слайд 7

Запрос на выборку SELECT smth. Оператор HAVING Информатика. 1 семестр. Тема 13. Применение SQL

Запрос на выборку

SELECT smth.

Оператор HAVING

Информатика. 1 семестр. Тема 13. Применение SQL

Слайд 8

Информатика. 1 семестр. Тема 13. Применение SQL HAVING Условный оператор (параметр)

Информатика. 1 семестр. Тема 13. Применение SQL

HAVING

Условный оператор (параметр) в

SQL
Указывает условия на результат агрегатных функций (MAX, SUM, AVG,…)
Предикаты строятся только из выражений, указанных в разделе GROUP BY и значений агрегатных функций, вычисленных для каждой группы, образованной GROUP BY
Необходимо, чтобы в SELECT были заданы только столбцы, перечисленные в GROUP BY и/или агрегированные значения
Если параметр GROUP BY не указан в SELECT, HAVING дублирует WHERE
Слайд 9

Информатика. 1 семестр. Тема 13. Применение SQL SELECT DeptID, SUM(SaleAmount) FROM

Информатика. 1 семестр. Тема 13. Применение SQL

SELECT DeptID, SUM(SaleAmount)
FROM Sales
WHERE

SaleDate = ‘01-Jan-2000’
GROUP BY DeptID
HAVING SUM(SaleAmount) > 1000

SELECT d.DeptName, COUNT(*)
FROM employee e, departament d
WHERE e.DeptID = d.DeptID
GROUP BY d.DeptName
HAVING COUNT (*) > 1000

Получение
идентификаторов отделов, продажи которых превысили 1000 за 1 января 2000 года

Получение
списка отделов, в которых работает более чем один сотрудник

Слайд 10

Запрос на выборку SELECT smth WHERE predicate Построение логических предикатов Информатика.

Запрос на выборку

SELECT smth
WHERE predicate

Построение логических предикатов

Информатика. 1 семестр. Тема

13. Применение SQL
Слайд 11

Информатика. 1 семестр. Тема 13. Применение SQL Построение предиката для WHERE

Информатика. 1 семестр. Тема 13. Применение SQL

Построение предиката для WHERE

Условный

предикат – выражение, которое должно возвращать значения TRUE, FALSE или NULL
Значение NULL возвращается если арифметическая, логическая операция или операция сравнения выполняется над операндом со значением NULL), за исключением операций проверки на пустое значение (EXISTS, IS NULL)
Выражения, используемые для построения предиката могут использовать парные круглые скобки [ ( , ) ] любой степени вложенности
Для выполнения логических операций над частями предиката используются операторы AND, OR и NOT
Слайд 12

Информатика. 1 семестр. Тема 13. Применение SQL Построение предиката для WHERE

Информатика. 1 семестр. Тема 13. Применение SQL

Построение предиката для WHERE

Условный

предикат может включать подзапросы
В выражениях могут использоваться функции определённые в SQL (NOW, YEAR etc.) или определённые в базе данных (CREATE FUNCTION…)
Для проверки значения можно использовать: LIKE –для сравнения с шаблоном, IS – для специальных значений, IN – для вхождения в список
Контроль вхождения значения в заданный диапазон выполняется с использованием BETWEEN … AND …
(в Access) Для построения выражений в роли констант могут использоваться статистические функции по подмножеству для вычисления вспомогательных числовых значений (DSum , DAvg, DMax, DMin, Dcount etc.)

(2)

Слайд 13

Информатика. 1 семестр. Тема 13. Применение SQL SELECT ProductID, Name, Color

Информатика. 1 семестр. Тема 13. Применение SQL

SELECT ProductID, Name, Color
FROM Production
WHERE

Name IN (''Blade'', ''Crown Race'', ''Spokes'');

Наличие в списке значений

SELECT ProductID, Name, Color
FROM Production
WHERE ProductID BETWEEN 725 AND 734;

Вхождение в диапазон между двумя значениями

SELECT ProductID, Name, Color
FROM Production
WHERE Name LIKE (''%Frame%'')
AND ProductID <= 12
AND Color = ''Red'' ;

Совпадение с шаблоном, сравнение, объединение условий

Слайд 14

Запрос на выборку SELECT smth Оператор LIKE Информатика. 1 семестр. Тема 13. Применение SQL

Запрос на выборку

SELECT smth

Оператор LIKE

Информатика. 1 семестр. Тема 13. Применение SQL

Слайд 15

Информатика. 1 семестр. Тема 13. Применение SQL LIKE match_expression [ NOT

Информатика. 1 семестр. Тема 13. Применение SQL

LIKE

match_expression [ NOT ] LIKE

pattern ESCAPE esc_char

Проверяет символьную строку на совпадение с заданным шаблоном
Используется как часть выражения WHERE smth

Слайд 16

Информатика. 1 семестр. Тема 13. Применение SQL SELECT p.FirstName, p.LastName, ph.PhoneNumber

Информатика. 1 семестр. Тема 13. Применение SQL

SELECT p.FirstName, p.LastName, ph.PhoneNumber
FROM Person.PersonPhone

AS ph
INNER JOIN Person.Person AS p
ON ph.BusinessEntityID = p.BusinessEntityID
WHERE ph.PhoneNumber LIKE '415%'
ORDER BY p.LastName;

Получение
списка телефонных номеров с кодом города 415

FirstName LastName Phone
-------------- ------------------- ------------
Ruben Alonso 415-555-124
Shelby Cook 415-555-0121
Karen Hu 415-555-0114
John Long 415-555-0147
David Long 415-555-0123

Слайд 17

Запрос на выборку SELECT smth Операции с множествами Информатика. 1 семестр. Тема 13. Применение SQL

Запрос на выборку

SELECT smth

Операции с множествами

Информатика. 1 семестр. Тема 13. Применение

SQL
Слайд 18

Информатика. 1 семестр. Тема 13. Применение SQL Операции с множествами в

Информатика. 1 семестр. Тема 13. Применение SQL

Операции с множествами в WHERE

Множества (списки значений) в предикатах оператора WHERE могут использоваться для проверки наличия заданного значения (в списке) или для выполнения однотипной операции сравнения с элементами списка
Для проверки наличия значения в списке можно использовать оператор IN (…)
Проверка списка на наличие элементов выполняется предикатом EXISTS (…)
Операция сравнения значения со всеми элементами списка составляется с использованием предикатов ANY (…), SAME (…) и ALL (…). ANY эквивалентно объединению выражений посредством OR, а ALL – с помощью AND
В некоторых случаях пустой список может выступать эквивалентом «пустого» значения (NULL)
Слайд 19

Информатика. 1 семестр. Тема 13. Применение SQL SELECT ProductID, Name, Color

Информатика. 1 семестр. Тема 13. Применение SQL

SELECT ProductID, Name, Color
FROM Production
WHERE

Vendor IN (''Toyota'', ''Nissan'', ''Mitsubishi'', ''Mazda'');

Совпадение со значением из списка

SELECT ProductID, Name, Color
FROM Production
WHERE ProductID = ANY ( 725 , 730 , 734 );

Равенство любому значению из списка

SELECT ProductID, Name, Color
FROM Production
WHERE EXISTS ( SELECT ProductID
FROM Production
WHERE Vendor =''Ford'');

Наличие в списке значений

Слайд 20

Запрос на выборку SELECT smth Вложенные запросы (подзапросы) Информатика. 1 семестр. Тема 13. Применение SQL

Запрос на выборку

SELECT smth

Вложенные
запросы
(подзапросы)

Информатика. 1 семестр. Тема 13. Применение SQL

Слайд 21

Информатика. 1 семестр. Тема 13. Применение SQL Использование подзапросов в WHERE

Информатика. 1 семестр. Тема 13. Применение SQL

Использование подзапросов в WHERE

Условный

предикат может включать подзапрос
В составе предиката подзапрос заключается в круглые скобки [ ( , ) ]
Вложенный запрос (подзапрос) должен возвращать скалярное (одно) логическое значение (или NULL) либо выступать операндом в операции, возвращающем подобное значение
Операции с подзапросами, возвращающими список значений, должны использовать предикаты ANY (SOME) и ALL для группового сопоставления, EXISTS для проверки наличия результатов или IN для анализа вхождения значения
Слайд 22

Информатика. 1 семестр. Тема 13. Применение SQL SELECT ProductID, Name, Color

Информатика. 1 семестр. Тема 13. Применение SQL

SELECT ProductID, Name, Color
FROM Production
WHERE

Cost >= ( SELECT AVG( Cost )
FROM Production );

Сравнение с единственным возвращаемым значением

SELECT Name, NCost
FROM ( SELECT Name, Cost * 1.15 AS NCost
FROM Production )
WHERE ProductID >= 725 );

Использование подзапроса как источника данных

SELECT ProductID, Name, Color
FROM Production
WHERE EXISTS ( SELECT ProductID
FROM Production );

Наличие в списке хотя бы одного результата

Слайд 23

Запрос на выборку SELECT smth Оператор JOIN Информатика. 1 семестр. Тема 13. Применение SQL

Запрос на выборку

SELECT smth

Оператор JOIN

Информатика. 1 семестр. Тема 13. Применение SQL

Слайд 24

Информатика. 1 семестр. Тема 13. Применение SQL JOIN Оператор SQL реализующий

Информатика. 1 семестр. Тема 13. Применение SQL

JOIN

Оператор SQL реализующий операцию

соединения реляционной алгебры для раздела FROM
В схему таблицы-результата входят столбцы обеих таблиц-операндов («сцепление» схем операндов)
Каждая строка таблицы-результата является «сцеплением» строк таблиц-операндов
Результирующий набор строк зависит от типа операции соединения и условия соединения
При необходимости соединения нескольких таблиц операция соединения применяется несколько раз (последовательно)
Слайд 25

Информатика. 1 семестр. Тема 13. Применение SQL SELECT expessions [,... n]

Информатика. 1 семестр. Тема 13. Применение SQL

SELECT expessions [,... n]
FROM table1
[

INNER | [ LEFT | RIGHT | FULL ] OUTER | CROSS ] JOIN
table2
[ ON condition ]

SELECT expessions [,... n]
FROM table1,…, tableN

Для перекрёстного соединения (декартова произведения) CROSS JOIN можно использовать (,)

Слайд 26

Информатика. 1 семестр. Тема 13. Применение SQL Person Виды оператора JOIN

Информатика. 1 семестр. Тема 13. Применение SQL

Person

Виды оператора JOIN

City

Address
Book

INNER JOIN

– внутреннее соединение таблиц
OUTER JOIN – внешнее соединение таблиц
LEFT OUTER JOIN – левое внешнее соединение таблиц (несимметричное)
RIGHT OUTER JOIN – правое внешнее соединение таблиц (несимметричное)
FULL OUTER JOIN – полное внешнее соединение таблиц

CROSS JOIN – перекрёстное соединение таблиц

Исходные данные

Слайд 27

Информатика. 1 семестр. Тема 13. Применение SQL Person INNER JOIN City

Информатика. 1 семестр. Тема 13. Применение SQL

Person

INNER JOIN

City

Address
Book

Внутреннее соединение таблиц
Симметричный оператор
Результат

– таблица из соединённых строк таблиц-операндов по предикату

Person-City

SELECT * FROM Person
INNER JOIN City
ON Person.CityId = City.Id

Слайд 28

Информатика. 1 семестр. Тема 13. Применение SQL Person LEFT OUTER JOIN

Информатика. 1 семестр. Тема 13. Применение SQL

Person

LEFT OUTER JOIN

City

Address
Book

Левое внешнее соединение

таблиц
Несимметричный оператор
Результат – таблица из соединённых строк таблиц-операндов по предикату дополненных оставшимися строками левой таблицы (дополняются NULL)

SELECT * FROM Person
LEFT OUTER JOIN City
ON Person.CityId = City.Id

Слайд 29

Информатика. 1 семестр. Тема 13. Применение SQL Person RIGHT OUTER JOIN

Информатика. 1 семестр. Тема 13. Применение SQL

Person

RIGHT OUTER JOIN

City

Address
Book

Правое внешнее соединение

таблиц
Несимметричный оператор
Результат – таблица из соединённых строк таблиц-операндов по предикату дополненных оставшимися строками правой таблицы (дополняются NULL)

SELECT * FROM Person
RIGHT OUTER JOIN City
ON Person.CityId = City.Id

Слайд 30

Информатика. 1 семестр. Тема 13. Применение SQL Person FULL OUTER JOIN

Информатика. 1 семестр. Тема 13. Применение SQL

Person

FULL OUTER JOIN

City

Address
Book

Полное внешнее соединение

таблиц
Симметричный оператор
Результат – таблица из соединённых строк таблиц-операндов по предикату дополненных оставшимися строками обеих таблиц (дополняются NULL)

SELECT * FROM Person
FULL OUTER JOIN City
ON Person.CityId = City.Id

Слайд 31

Информатика. 1 семестр. Тема 13. Применение SQL Person CROSS JOIN City

Информатика. 1 семестр. Тема 13. Применение SQL

Person

CROSS JOIN

City

Address
Book

Перекрёсное соединение таблиц
Симметричный оператор
Результат

– таблица из соединённых строк таблиц-операндов, давая все возможные сочетания строк двух таблиц

SELECT * FROM Person
CROSS JOIN City
[ WHERE predicate ]

Слайд 32

Информатика. 1 семестр. Тема 13. Применение SQL INNER JOIN Схемы объединения

Информатика. 1 семестр. Тема 13. Применение SQL

INNER JOIN

Схемы объединения множеств

LEFT OUTER

JOIN

LEFT OUTER JOIN с фильтрацией

Слайд 33

Запрос на выборку SELECT smth Оператор UNION Информатика. 1 семестр. Тема 13. Применение SQL

Запрос на выборку

SELECT smth

Оператор UNION

Информатика. 1 семестр. Тема 13. Применение SQL

Слайд 34

Информатика. 1 семестр. Тема 13. Применение SQL UNION Оператор объединения результатов

Информатика. 1 семестр. Тема 13. Применение SQL

UNION

Оператор объединения результатов двух SQL-запросов

в единую таблицу, состоящую их схожих строк
Оба запроса должны возвращать одинаковое число столбцов с совместимые типы данных

<запрос1>
UNION [ALL]
<запрос2>
UNION [ALL]
<запрос3>
.....;

В объединение не включаются (скрываются) повторяющиеся строки
Оператор ALL требует включение всех строк в результирующий набор

Слайд 35

Информатика. 1 семестр. Тема 13. Применение SQL UNION Пример

Информатика. 1 семестр. Тема 13. Применение SQL

UNION

Пример

Слайд 36

Запрос на выборку SELECT smth Групповые запросы Информатика. 1 семестр. Тема 13. Применение SQL

Запрос на выборку

SELECT smth

Групповые запросы

Информатика. 1 семестр. Тема 13. Применение SQL

Слайд 37

Запрос на выборку SELECT smth Статистические функции по подмножеству Информатика. 1 семестр. Тема 13. Применение SQL

Запрос на выборку

SELECT smth

Статистические функции по подмножеству

Информатика. 1 семестр. Тема 13.

Применение SQL
Слайд 38

Информатика. 1 семестр. Тема 13. Применение SQL Статистические функции по подмножеству

Информатика. 1 семестр. Тема 13. Применение SQL

Статистические функции по подмножеству

DAvg -

подсчет среднего арифметического значения столбца или выражения,
DCount - подсчет количества записей,
DFirst - нахождение первого значения столбца из группы,
DLast - нахождение последнего значения столбца из группы,
DМах - определение максимального значения столбца или выражения,
DMin - определение минимального значения столбца или выражения,
DSum - подсчет суммы значений столбца или выражения.
Синтаксис операторов следующий:
<имя_функции> ("выражение";"источник";"критерий")
Слайд 39

Информатика. 1 семестр. Тема 13. Применение SQL Статистические функции по подмножеству

Информатика. 1 семестр. Тема 13. Применение SQL

Статистические функции по подмножеству

Select fio,

score, groupID
From students
Where score > DAvg ("God",
"students",
"groupID<>1")
and groupID <> 1 ;

Важно! Параметры запроса записываются как строковые литералы (в кавычках)

Слайд 40

Информатика. 1 семестр. Тема 13. Применение SQL Недокументированная функциональность СФпП Select

Информатика. 1 семестр. Тема 13. Применение SQL

Недокументированная функциональность СФпП

Select fio, score
From

students
Where score >= DAvg (subject,"students”);

Существует возможность использования переменных выражений в качестве параметров статистических функций по подмножеству

Слайд 41

Запрос на выборку SELECT smth Перекрестные запросы Информатика. 1 семестр. Тема 13. Применение SQL

Запрос на выборку

SELECT smth

Перекрестные запросы

Информатика. 1 семестр. Тема 13. Применение SQL

Слайд 42

Информатика. 1 семестр. Тема 13. Применение SQL Перекрестные запросы Transform Select

Информатика. 1 семестр. Тема 13. Применение SQL

Перекрестные запросы

Transform <итоговые функции>
Select <заголовки

строк и итоги по строкам>
From <источник данных>
Group by <заголовки строк>
Pivot <заголовки столбцов>;

Transform Sum(God) As Sum-God
Select Izd, Sum(god) as SumGod, Count(*) asKolFirm
From Firm
Group by Izd
Pivot Nazf;
<итоговые функции>