SQL (SELECT)
Формат
Последовательность обработки элементов
Примеры
Предложение WHERE (типы условий поиска)
Предложение WHERE
Соответствие шаблону
Соответствие шаблону
Соответствие шаблону
Соответствие шаблону
Значение NULL
Предложение ORDER BY
Предложение ORDER BY
Построение вычисляемых полей
Нетривиальные запросы
Нетривиальные запросы
Использование итоговых функций
Использование итоговых функций
Явные операции соединения
Декартово произведение
объединениие
Пересечение и разность
Предикат EXISTS
SOME | ANY и all
263.50K
Категория: Базы данныхБазы данных

Предикат Exists. SQL (Select)

1. SQL (SELECT)

2. Формат

ФОРМАТ
SELECT [ALL | DISTINCT ] {*|[имя_столбца
[AS новое_имя]]} [,...n] FROM
имя_таблицы [[AS] псевдоним] [,...n]
[WHERE <условие_поиска>]
[GROUP BY имя_столбца [,...n]]
[HAVING <критерии выбора групп>]
[ORDER BY имя_столбца [,...n]]

3. Последовательность обработки элементов

ПОСЛЕДОВАТЕЛЬНОСТЬ
ОБРАБОТКИ ЭЛЕМЕНТОВ
FROM – определяются имена используемых таблиц;
WHERE – выполняется фильтрация строк объекта в
соответствии с заданными условиями;
GROUP BY – образуются группы строк , имеющих
одно и то же значение в указанном столбце;
HAVING – фильтруются группы строк объекта в
соответствии с указанным условием;
SELECT – устанавливается, какие столбцы должны
присутствовать в выходных данных;
ORDER BY – определяется упорядоченность
результатов выполнения операторов.

4. Примеры

ПРИМЕРЫ
Составить список сведений о всех клиентах:
SELECT * FROM Клиент
Составить список всех фирм:
SELECT ALL Клиент.Фирма FROM Клиент
Или
SELECT DISTINCT Клиент.Фирма FROM Клиент

5. Предложение WHERE (типы условий поиска)

ПРЕДЛОЖЕНИЕ WHERE
(ТИПЫ УСЛОВИЙ ПОИСКА)
Сравнение: сравниваются результаты
вычисления одного выражения с результатами
вычисления другого.
Диапазон: проверяется, попадает ли результат
вычисления выражения в заданный диапазон
значений.
Принадлежность множеству: проверяется,
принадлежит ли результат вычислений
выражения заданному множеству значений.
Соответствие шаблону: проверяется, отвечает
ли некоторое строковое значение заданному
шаблону.
Значение NULL: проверяется, содержит ли
данный столбец определитель NULL
(неизвестное значение).

6. Предложение WHERE

ПРЕДЛОЖЕНИЕ WHERE
SELECT * FROM Сделка WHERE Количество>20
SELECT Название, Цена FROM Товар WHERE
Цена Between 100 And 150
SELECT Фамилия, ГородКлиента FROM Клиент
WHERE ГородКлиента in ("Москва", "Самара")

7. Соответствие шаблону

СООТВЕТСТВИЕ ШАБЛОНУ
Символ % – вместо этого символа может
быть подставлено любое количество
произвольных символов.
Символ _ заменяет один символ строки.
[] – вместо символа строки будет
подставлен один из возможных символов,
указанный в этих ограничителях.
[^] – вместо соответствующего символа
строки будут подставлены все символы,
кроме указанных в ограничителях.

8. Соответствие шаблону

СООТВЕТСТВИЕ ШАБЛОНУ
Найти клиентов, у которых в номере телефона
вторая цифра – 4
SELECT Клиент.Фамилия, Клиент.Телефон FROM
Клиент WHERE Клиент.Телефон Like "_4%"

9. Соответствие шаблону

СООТВЕТСТВИЕ ШАБЛОНУ
Найти клиентов, у которых в номере телефона
вторая цифра 2, 3 или 4
SELECT Клиент.Фамилия, Клиент.Телефон
FROM Клиент
WHERE Клиент.Телефон Like "_[2-4]%"

10. Соответствие шаблону

СООТВЕТСТВИЕ ШАБЛОНУ
Найти клиентов, у которых в фамилии
встречается слог "ро"
SELECT Клиент.Фамилия
FROM Клиент
WHERE Клиент.Фамилия Like "%ро%"

11. Значение NULL

ЗНАЧЕНИЕ NULL
Найти клиентов, у которых нет телефона
SELECT Фамилия, Телефон
FROM Клиент
WHERE Телефон Is Not Null

12. Предложение ORDER BY

ПРЕДЛОЖЕНИЕ ORDER BY
Вывести список клиентов в алфавитном
порядке
SELECT Клиент.Фамилия, Клиент.Фирма
FROM Клиент
ORDER BY Клиент.Фамилия
ASC – по возрастанию
DESC – по убыванию

13. Предложение ORDER BY

ПРЕДЛОЖЕНИЕ ORDER BY
Вывести список клиентов в алфавитном
порядке
SELECT Клиент.Фамилия, Клиент.Фирма
FROM Клиент
ORDER BY Клиент.Фирма,
Клиент.Фамилия
ASC – по возрастанию
DESC – по убыванию

14. Построение вычисляемых полей

ПОСТРОЕНИЕ
ВЫЧИСЛЯЕМЫХ ПОЛЕЙ
Рассчитать общую стоимость для каждой сделки
SELECT Товар.Название, Товар.Цена,
Сделка.Количество, Товар.Цена*Сделка.Количество
AS Стоимость FROM Товар
INNER JOIN Сделка ON
Товар.КодТовара=Сделка.КодТовара

15. Нетривиальные запросы

НЕТРИВИАЛЬНЫЕ ЗАПРОСЫ
Получить список фирм с указанием фамилии и
инициалов клиентов
SELECT Фирма,
Фамилия+" "+ Left(Имя,1)+"."+Left(Отчество,1)+
"."AS ФИО
FROM Клиент

16. Нетривиальные запросы

НЕТРИВИАЛЬНЫЕ ЗАПРОСЫ
Получить список товаров с указанием года и
месяца продажи
SELECT Товар.Название, Year(Сделка.Дата)
AS Год, Month(Сделка.Дата)
AS Месяц
FROM Товар INNER JOIN Сделка
ON Товар.КодТовара=Сделка.КодТовара

17. Использование итоговых функций

ИСПОЛЬЗОВАНИЕ
ИТОГОВЫХ ФУНКЦИЙ
Count (Выражение) - определяет количество
записей в выходном наборе SQL-запроса;
Min/Max (Выражение) - определяют наименьшее
и наибольшее из множества значений в
некотором поле запроса;
Avg (Выражение) - эта функция позволяет
рассчитать среднее значение множества
значений, хранящихся в определенном поле
отобранных запросом записей. Оно является
арифметическим средним значением, т.е.
суммой значений, деленной на их количество.
Sum (Выражение) - вычисляет сумму множества
значений, содержащихся в определенном поле
отобранных запросом записей.

18. Использование итоговых функций

ИСПОЛЬЗОВАНИЕ
ИТОГОВЫХ ФУНКЦИЙ
Определить первое по алфавиту название товара
SELECT Min(Товар.Название) AS Min_Название
FROM Товар
Определить количество сделок
SELECT Count(*) AS Количество_сделок
FROM Сделка

19. Явные операции соединения

ЯВНЫЕ ОПЕРАЦИИ
СОЕДИНЕНИЯ
FROM таблица 1
[INNER]
{{LEFT | RIGHT | FULL } {OUTER ]} JOIN таблица 2
[ON предикат]

20. Декартово произведение

ДЕКАРТОВО ПРОИЗВЕДЕНИЕ
SELECT Laptop.model, Product.model
FROM Laptop CROSS JOIN
Product

21. объединениие

ОБЪЕДИНЕНИИЕ
Запрос 1
UNION [ALL]
Запрос 2
• Количество выходных столбцов для каждого
запроса одинаково.
• Выходные столбцы должны быть совместимы.
• В результирующем столбце имена столбцов из
первого запроса.
• ORDER BY может быть указано только в конце всего
составного запроса.

22. Пересечение и разность

ПЕРЕСЕЧЕНИЕ И РАЗНОСТЬ
INTERSECT
EXCEPT
Аналогичны UNION

23. Предикат EXISTS

ПРЕДИКАТ EXISTS
EXISTS
[NOT] EXISTS (табличный подзапрос)
TRUE / FALSE
• Не принимает значение UNKNOWN
• Обычно используется в зависимых
(коррелирующих) подзапросах
• Может иметь разные значения для разных строк
основного запроса

24. SOME | ANY и all

SOME | ANY И ALL
SOME | ANY – синонимы
Выражение оператор сравнения SOME | ANY
(подзапрос)
Выражение оператор сравнения ALL (подзапрос)
English     Русский Правила