Базы данных: выборка данных

Содержание

Слайд 2

Получение итоговых значений Как узнать количество книг, написанных тем или иным

Получение итоговых значений

Как узнать количество книг, написанных тем или иным автором?
Как

определить среднее количество книг на складе?
Слайд 3

Найти минимальное и максимальное количество книг на складе. SELECT MIN(stock) min_stock, MAX(stock) max_stock FROM book

Найти минимальное и максимальное количество книг на складе.

SELECT
MIN(stock) min_stock,
MAX(stock) max_stock


FROM book
Слайд 4

Предложение GROUP BY Предложение GROUP BY используется для определения групп выходных

Предложение GROUP BY

Предложение GROUP BY используется для определения групп выходных строк, к которым

могут применяться агрегатные функции (COUNT, MIN, MAX, AVG и SUM)
Слайд 5

Предложение GROUP BY Неправильно: SELECT author, COUNT(*) book_count FROM book SELECT

Предложение GROUP BY

Неправильно:

SELECT
author,
COUNT(*) book_count
FROM book

SELECT
author,
COUNT(*) book_count
FROM book


GROUP BY author

Правильно:

Слайд 6

Предложение HAVING Предложение HAVING применяется после группировки для определения предиката, фильтрующего

Предложение HAVING

Предложение HAVING применяется после группировки для определения предиката, фильтрующего группы по значениям

агрегатных функций.
В предложении HAVING нельзя использовать псевдоним(book_count), используемый для именования значений агрегатной функции в предложении SELECT.
Слайд 7

Порядок обработки предложений в операторе SELECT: FROM WHERE GROUP BY HAVING SELECT ORDER BY

Порядок обработки предложений в операторе SELECT:
FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY

Слайд 8

Использование в запросе нескольких источников записей В предложении FROM допускается указание

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

В предложении FROM допускается указание нескольких таблиц.
Поэтому

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

SELECT
*
FROM Borrowing, book

Слайд 9

Явные операции соединения. Синтаксис: FROM [INNER] {{LEFT | RIGHT | FULL

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

Синтаксис:
FROM <таблица 1>
[INNER]
{{LEFT | RIGHT | FULL } [OUTER]}

JOIN <таблица 2>
[ON <предикат>]
Соединение может быть либо внутренним (INNER), либо одним из внешних (OUTER). Служебные слова INNER и OUTER можно опускать, поскольку внешнее соединение однозначно определяется его типом — LEFT (левое), RIGHT (правое) или FULL (полное), а просто JOIN будет означать внутреннее соединение.
Слайд 10

Вывести список членов библиотеки которые брали книги. SELECT * FROM Member

Вывести список членов библиотеки которые брали книги.

SELECT
*
FROM Member m


INNER JOIN Borrowing b
ON b.memberid = m.memberid
Слайд 11

Внешнее соединение LEFT JOIN означает, что помимо строк, для которых выполняется

Внешнее соединение LEFT JOIN означает, что помимо строк, для которых выполняется условие предиката,

в результирующий набор попадут все остальные строки из первой таблицы (левой). При этом отсутствующие значения столбцов из правой таблицы будут заменены NULL-значениями.

SELECT
*
FROM MEMBER M
LEFT JOIN BORROWING B
ON B.MEMBERID = M.MEMBERID

Слайд 12

FULL JOIN В результирующую таблицу попадут не только те строки, которые

FULL JOIN
В результирующую таблицу попадут не только те строки, которые имеют

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

SELECT
*
FROM MEMBER M
FULL JOIN BORROWING B
ON B.MEMBERID = M.MEMBERID

Слайд 13

Преобразование типов и оператор CAST Попытка выполнить запрос Приведет к ошибке:

Преобразование типов и оператор CAST

Попытка выполнить запрос
Приведет к ошибке:
Conversion failed

when converting the varchar value 'Total books amount - ' to data type int.
(«Не допускается неявное преобразование типа varchar к типу int. Используйте для выполнения этого запроса функцию CONVERT».)

SELECT
'Total books amount - ' + SUM(STOCK)
FROM BOOK

Слайд 14

Если переписать наш запрос в виде: в результате получим то, что

Если переписать наш запрос в виде:
в результате получим то, что требовалось

SELECT


'Total books amount - ' + CAST(SUM(STOCK) as CHAR(30)) amount
FROM BOOK
Слайд 15

Выражение CAST Синтаксис выражения CAST очень простой CAST( AS ) Следует

Выражение CAST

Синтаксис выражения CAST очень простой
CAST(<выражение> AS <тип данных>)
Следует иметь в виду, во-первых,

что не любые преобразования типов возможны (стандарт содержит таблицу допустимых преобразований типов данных). Во-вторых, результат функции CAST для значения выражения, равного NULL, тоже будет NULL.
сурс
Слайд 16

Выберем среднее количество книг в библиотеке Вернет: 7.00, а должно быть

Выберем среднее количество книг в библиотеке
Вернет: 7.00, а должно быть 7.17
Следовательно, CAST нужно

применить к аргументу агрегатной функции
Вернет 7.166666

SELECT
CAST(AVG(STOCK) AS NUMERIC(6,2))
FROM BOOK

SELECT
AVG(CAST(STOCK AS NUMERIC(6,2)))
FROM BOOK

Слайд 17

SELECT CAST(AVG(CAST(STOCK AS NUMERIC(6,2))) AS NUMERIC(6,2)) FROM BOOK Результат выполнения: 7.17

SELECT
CAST(AVG(CAST(STOCK AS NUMERIC(6,2))) AS NUMERIC(6,2))
FROM BOOK

Результат выполнения: 7.17