🗊Презентация Базы данных и SQL. Лекция 19 часть 2

Категория: Информатика
Нажмите для полного просмотра!
Базы данных и SQL. Лекция 19 часть 2, слайд №1Базы данных и SQL. Лекция 19 часть 2, слайд №2Базы данных и SQL. Лекция 19 часть 2, слайд №3Базы данных и SQL. Лекция 19 часть 2, слайд №4Базы данных и SQL. Лекция 19 часть 2, слайд №5Базы данных и SQL. Лекция 19 часть 2, слайд №6Базы данных и SQL. Лекция 19 часть 2, слайд №7Базы данных и SQL. Лекция 19 часть 2, слайд №8Базы данных и SQL. Лекция 19 часть 2, слайд №9Базы данных и SQL. Лекция 19 часть 2, слайд №10Базы данных и SQL. Лекция 19 часть 2, слайд №11Базы данных и SQL. Лекция 19 часть 2, слайд №12Базы данных и SQL. Лекция 19 часть 2, слайд №13Базы данных и SQL. Лекция 19 часть 2, слайд №14Базы данных и SQL. Лекция 19 часть 2, слайд №15Базы данных и SQL. Лекция 19 часть 2, слайд №16Базы данных и SQL. Лекция 19 часть 2, слайд №17Базы данных и SQL. Лекция 19 часть 2, слайд №18Базы данных и SQL. Лекция 19 часть 2, слайд №19Базы данных и SQL. Лекция 19 часть 2, слайд №20Базы данных и SQL. Лекция 19 часть 2, слайд №21Базы данных и SQL. Лекция 19 часть 2, слайд №22Базы данных и SQL. Лекция 19 часть 2, слайд №23Базы данных и SQL. Лекция 19 часть 2, слайд №24Базы данных и SQL. Лекция 19 часть 2, слайд №25Базы данных и SQL. Лекция 19 часть 2, слайд №26Базы данных и SQL. Лекция 19 часть 2, слайд №27Базы данных и SQL. Лекция 19 часть 2, слайд №28Базы данных и SQL. Лекция 19 часть 2, слайд №29Базы данных и SQL. Лекция 19 часть 2, слайд №30Базы данных и SQL. Лекция 19 часть 2, слайд №31Базы данных и SQL. Лекция 19 часть 2, слайд №32Базы данных и SQL. Лекция 19 часть 2, слайд №33

Содержание

Вы можете ознакомиться и скачать презентацию на тему Базы данных и SQL. Лекция 19 часть 2. Доклад-сообщение содержит 33 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Базы данных и SQL
Лекция 19
Описание слайда:
Базы данных и SQL Лекция 19

Слайд 2





Повторим изученное на прошлом занятии

Что такое первичный и ссылочный ключ?
Что такое Реляционная база данных?
Что такое СУБД?
Как будет выглядеть запрос, если мы ищем что-то с конкретным условием?
Оператор для интервального запроса? (between)
Как оператор исключает повторы?
Что используем, если помнишь только несколько букв из фамилии?
Описание слайда:
Повторим изученное на прошлом занятии Что такое первичный и ссылочный ключ? Что такое Реляционная база данных? Что такое СУБД? Как будет выглядеть запрос, если мы ищем что-то с конкретным условием? Оператор для интервального запроса? (between) Как оператор исключает повторы? Что используем, если помнишь только несколько букв из фамилии?

Слайд 3





Что будем изучать сегодня
Связывание сущностей 1:1 и 1: многим
Обеспечение целостности
Джоины
Объединение (union)
Minus и Except
Группировки
SUM и AVG и Having
Описание слайда:
Что будем изучать сегодня Связывание сущностей 1:1 и 1: многим Обеспечение целостности Джоины Объединение (union) Minus и Except Группировки SUM и AVG и Having

Слайд 4





В этой презентации мы попробуем понять, как связывать таблицы друг с другом, но изначально необходимо определиться с нюансами и тонкостями этих связок. Связь позволяет моделировать отношения между объектами предметной области. Существует 3 типа связей:
В этой презентации мы попробуем понять, как связывать таблицы друг с другом, но изначально необходимо определиться с нюансами и тонкостями этих связок. Связь позволяет моделировать отношения между объектами предметной области. Существует 3 типа связей:

1. «Один-к-одному» (1:1) - любому экземпляру сущности А соответствует только один экземпляр сущности В, и наоборот.






Например (обыкновенно), у одного мужа может быть лишь одна жена и у одной жены – только один муж.
Описание слайда:
В этой презентации мы попробуем понять, как связывать таблицы друг с другом, но изначально необходимо определиться с нюансами и тонкостями этих связок. Связь позволяет моделировать отношения между объектами предметной области. Существует 3 типа связей: В этой презентации мы попробуем понять, как связывать таблицы друг с другом, но изначально необходимо определиться с нюансами и тонкостями этих связок. Связь позволяет моделировать отношения между объектами предметной области. Существует 3 типа связей: 1. «Один-к-одному» (1:1) - любому экземпляру сущности А соответствует только один экземпляр сущности В, и наоборот. Например (обыкновенно), у одного мужа может быть лишь одна жена и у одной жены – только один муж.

Слайд 5





2. «Один-ко-многим» (1:М) - любому экземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В, но любому экземпляру сущности В соответствует только один экземпляр сущности А
2. «Один-ко-многим» (1:М) - любому экземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В, но любому экземпляру сущности В соответствует только один экземпляр сущности А









Например, у поэта может быть множество стихов, но автор у них один.
Описание слайда:
2. «Один-ко-многим» (1:М) - любому экземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В, но любому экземпляру сущности В соответствует только один экземпляр сущности А 2. «Один-ко-многим» (1:М) - любому экземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В, но любому экземпляру сущности В соответствует только один экземпляр сущности А Например, у поэта может быть множество стихов, но автор у них один.

Слайд 6





3.  «Многие-ко-многим» - любому экземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В, и любому экземпляру сущности В соответствует 0, 1 или несколько экземпляров сущности А. 
3.  «Многие-ко-многим» - любому экземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В, и любому экземпляру сущности В соответствует 0, 1 или несколько экземпляров сущности А. 










Например, у каждого преподавателя в университете может быть множество студентов. В свою очередь, каждого студента обучает некоторое множество преподавателей.
Описание слайда:
3. «Многие-ко-многим» - любому экземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В, и любому экземпляру сущности В соответствует 0, 1 или несколько экземпляров сущности А. 3. «Многие-ко-многим» - любому экземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В, и любому экземпляру сущности В соответствует 0, 1 или несколько экземпляров сущности А. Например, у каждого преподавателя в университете может быть множество студентов. В свою очередь, каждого студента обучает некоторое множество преподавателей.

Слайд 7





Обеспечение целостности
В теории баз данных целостность данных означает корректность данных и их непротиворечивость. Обычно, она также включает целостность связей, которая исключает ошибки связей между первичным и вторичным ключом. К примеру, когда существуют дочерние записи-сироты, которые не имеют связи с родительскими записями. В данном случае, таблица с секциями ссылается на таблицу со ступенями (M:1), но у секции B отсутствует ссылка на родительскую запись, а секция С вообще ссылается на несуществующую ступень.
Описание слайда:
Обеспечение целостности В теории баз данных целостность данных означает корректность данных и их непротиворечивость. Обычно, она также включает целостность связей, которая исключает ошибки связей между первичным и вторичным ключом. К примеру, когда существуют дочерние записи-сироты, которые не имеют связи с родительскими записями. В данном случае, таблица с секциями ссылается на таблицу со ступенями (M:1), но у секции B отсутствует ссылка на родительскую запись, а секция С вообще ссылается на несуществующую ступень.

Слайд 8





Чтобы обеспечить целостность, работа с данными должна производиться с учетом нижеперечисленных правил: 
Чтобы обеспечить целостность, работа с данными должна производиться с учетом нижеперечисленных правил: 
1. Невозможно ввести в связанное поле подчиненной таблицы значение, отсутствующее в связанном поле главной таблицы. Однако можно ввести пустое значение, показывающее, что для данной записи связь отсутствует. 
2. Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице. 
3. Невозможно изменить значение ключевого поля в главной таблице, если существуют записи, связанные с данной таблицей.
Описание слайда:
Чтобы обеспечить целостность, работа с данными должна производиться с учетом нижеперечисленных правил: Чтобы обеспечить целостность, работа с данными должна производиться с учетом нижеперечисленных правил: 1. Невозможно ввести в связанное поле подчиненной таблицы значение, отсутствующее в связанном поле главной таблицы. Однако можно ввести пустое значение, показывающее, что для данной записи связь отсутствует. 2. Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице. 3. Невозможно изменить значение ключевого поля в главной таблице, если существуют записи, связанные с данной таблицей.

Слайд 9





JOIN
Переходим непосредственно к коду. Наша задача – научиться связывать несколько таблиц в рамках одного запроса. В этом нам поможет оператор JOIN. Ключевое слово JOIN в SQL используется при построении select-выражений. Инструкция JOIN позволяет объединить колонки из нескольких таблиц в одну. Объединение происходит временное и целостность таблиц не нарушается. Существует три типа join-выражений:    inner join;    outer join;    cross join; В свою очередь, outer join может быть left, right и full (слова inner и outer обычно опускаются). В качестве примера возьмём две простые таблицы (таблица А с работниками ссылается на таблицу B с должностями) и сконструируем для них SQL-выражения с использованием join.
Описание слайда:
JOIN Переходим непосредственно к коду. Наша задача – научиться связывать несколько таблиц в рамках одного запроса. В этом нам поможет оператор JOIN. Ключевое слово JOIN в SQL используется при построении select-выражений. Инструкция JOIN позволяет объединить колонки из нескольких таблиц в одну. Объединение происходит временное и целостность таблиц не нарушается. Существует три типа join-выражений: inner join; outer join; cross join; В свою очередь, outer join может быть left, right и full (слова inner и outer обычно опускаются). В качестве примера возьмём две простые таблицы (таблица А с работниками ссылается на таблицу B с должностями) и сконструируем для них SQL-выражения с использованием join.

Слайд 10





Inner Join
Обратите внимание на диаграмму множеств. Внутреннее соединение INNER JOIN производит выборку только тех записей, которые соответствуют пересечению таблиц А и В. Работник «Иванов» из таблицы А не нашёл себе соответствий в таблице В, также, как и вид должности «Охрана» из таблицы В не привязан ни к одному работнику, поэтому данные значения не попали в конечный результат выборки.
Описание слайда:
Inner Join Обратите внимание на диаграмму множеств. Внутреннее соединение INNER JOIN производит выборку только тех записей, которые соответствуют пересечению таблиц А и В. Работник «Иванов» из таблицы А не нашёл себе соответствий в таблице В, также, как и вид должности «Охрана» из таблицы В не привязан ни к одному работнику, поэтому данные значения не попали в конечный результат выборки.

Слайд 11





LEFT OUTER JOIN
Левостороннее внешнее соединение LEFT OUTER JOIN производит полный выбор записей из таблицы, содержащейся во FROM (в данном случае А) с соответствующими записями (если таковые имеются) таблицы B. Если совпадения нет, то правая часть будет содержать NULL
Описание слайда:
LEFT OUTER JOIN Левостороннее внешнее соединение LEFT OUTER JOIN производит полный выбор записей из таблицы, содержащейся во FROM (в данном случае А) с соответствующими записями (если таковые имеются) таблицы B. Если совпадения нет, то правая часть будет содержать NULL

Слайд 12





RIGHT OUTER JOIN 
Правостороннее внешнее соединение действует по аналогии с LEFT JOIN’ом. RIGHT OUTER JOIN производит полный выбор записей из таблицы, которая указана после слов RIGHT JOIN (в данном случае из В) с соответствующими записями (если таковые имеются) таблицы А. Если совпадения нет, то левая часть будет содержать NULL.
Описание слайда:
RIGHT OUTER JOIN Правостороннее внешнее соединение действует по аналогии с LEFT JOIN’ом. RIGHT OUTER JOIN производит полный выбор записей из таблицы, которая указана после слов RIGHT JOIN (в данном случае из В) с соответствующими записями (если таковые имеются) таблицы А. Если совпадения нет, то левая часть будет содержать NULL.

Слайд 13





FULL OUTER JOIN
Полное внешнее соединение FULL OUTER JOIN производит выборку множества всех записей из таблицы А и B с соответствующими записями с обеих сторон при их наличии. Если совпадения нет, отсутствующая сторона будет содержать NULL. Обратите внимание на две последних строки в итоговой выборке.
Описание слайда:
FULL OUTER JOIN Полное внешнее соединение FULL OUTER JOIN производит выборку множества всех записей из таблицы А и B с соответствующими записями с обеих сторон при их наличии. Если совпадения нет, отсутствующая сторона будет содержать NULL. Обратите внимание на две последних строки в итоговой выборке.

Слайд 14





CROSS JOIN
Также существует выборка перекрестного  соединения (называемое ещё  декартовым произведением), -  CROSS JOIN, с перебором всех вариантов,  которое сложно объяснить диаграммами: 
SELECT * 
FROM a CROSS JOIN b;  
 ---(ещё можно написать запрос как  ---SELECT * FROM a, b) 
Данное перекрестное соединение выбирает  буквально "всё ко всему", в результате мы  получим 4 x 4 = 16 записей, т.е. намного  больше, чем в оригинале мы имеем  в таблицах
Описание слайда:
CROSS JOIN Также существует выборка перекрестного соединения (называемое ещё декартовым произведением), - CROSS JOIN, с перебором всех вариантов, которое сложно объяснить диаграммами: SELECT * FROM a CROSS JOIN b; ---(ещё можно написать запрос как ---SELECT * FROM a, b) Данное перекрестное соединение выбирает буквально "всё ко всему", в результате мы получим 4 x 4 = 16 записей, т.е. намного больше, чем в оригинале мы имеем в таблицах

Слайд 15






Работа со множествами
 Прежде чем начать описание функций и их свойств в SQL, работающих со множествами – дадим определение термину “множество” на языке SQL. Ведь многим из нас известно, что множество - это один из ключевых объектов математики, в частности, теории множеств и логики. По определению Бертрана Рассела: “Множество – совокупность различных элементов, мыслимая как единое целое” .  
 
 А сейчас переместим это определение в базу данных и увидим, что вывод любого запроса можно принять за множество. Наверное у вас возникнет вопрос в виде: “И что же это нам дает?” Ответ прост – применение некоторых свойств и операций, присущих множествам. Сейчас мы с вами разберем, что это за операции и как они реализованы в SQL.
Описание слайда:
Работа со множествами Прежде чем начать описание функций и их свойств в SQL, работающих со множествами – дадим определение термину “множество” на языке SQL. Ведь многим из нас известно, что множество - это один из ключевых объектов математики, в частности, теории множеств и логики. По определению Бертрана Рассела: “Множество – совокупность различных элементов, мыслимая как единое целое” . А сейчас переместим это определение в базу данных и увидим, что вывод любого запроса можно принять за множество. Наверное у вас возникнет вопрос в виде: “И что же это нам дает?” Ответ прост – применение некоторых свойств и операций, присущих множествам. Сейчас мы с вами разберем, что это за операции и как они реализованы в SQL.

Слайд 16





Объединение. UNION
Объединением двух множеств A и B называется множество, содержащее в себе все элементы исходных множеств, и обозначается как A ∪ B.  В языке SQL ключевое слово UNION применяется для объединения результатов двух SQL-запросов в единую таблицу, состоящую из схожих строк. Оба запроса должны возвращать одинаковое число столбцов и совместимые типы данных в соответствующих столбцах!!!  Оператор указывается между запросами. В упрощенном виде это выглядит следующим образом: 
 <запрос1> UNION [ALL]
 <запрос2> UNION [ALL]
 <запрос3>  .....; 





По умолчанию, любые дублирующие записи автоматически скрываются(своего рода default-ный DISTINCT), если не использовано выражение UNION ALL. Необходимо отметить, что UNION сам по себе не гарантирует порядок строк. Строки из второго запроса могут оказаться в начале, в конце или вообще перемешаться со строками из первого запроса. В случаях, когда требуется определенный порядок, необходимо использовать выражение ORDER BY
Описание слайда:
Объединение. UNION Объединением двух множеств A и B называется множество, содержащее в себе все элементы исходных множеств, и обозначается как A ∪ B. В языке SQL ключевое слово UNION применяется для объединения результатов двух SQL-запросов в единую таблицу, состоящую из схожих строк. Оба запроса должны возвращать одинаковое число столбцов и совместимые типы данных в соответствующих столбцах!!! Оператор указывается между запросами. В упрощенном виде это выглядит следующим образом: <запрос1> UNION [ALL] <запрос2> UNION [ALL] <запрос3> .....; По умолчанию, любые дублирующие записи автоматически скрываются(своего рода default-ный DISTINCT), если не использовано выражение UNION ALL. Необходимо отметить, что UNION сам по себе не гарантирует порядок строк. Строки из второго запроса могут оказаться в начале, в конце или вообще перемешаться со строками из первого запроса. В случаях, когда требуется определенный порядок, необходимо использовать выражение ORDER BY

Слайд 17





Как выглядит объединение множеств на языке SQL:







(SELECT * FROM sales2005) 
UNION (SELECT * FROM sales2006); 
 В результате отобразятся две строки с Иваном, так как эти строки различаются значениями в столбцах. Но при этом в результате присутствует лишь одна строка с Алексеем, поскольку значения в столбцах полностью совпадают. Применение UNION ALL дает другой результат, так как дубликаты не скрываются. Выполнение запроса: 
(SELECT * FROM sales2005)
 UNION ALL 
(SELECT * FROM sales2006);                                                                        

  даст следующий результат:
Описание слайда:
Как выглядит объединение множеств на языке SQL: (SELECT * FROM sales2005) UNION (SELECT * FROM sales2006); В результате отобразятся две строки с Иваном, так как эти строки различаются значениями в столбцах. Но при этом в результате присутствует лишь одна строка с Алексеем, поскольку значения в столбцах полностью совпадают. Применение UNION ALL дает другой результат, так как дубликаты не скрываются. Выполнение запроса: (SELECT * FROM sales2005) UNION ALL (SELECT * FROM sales2006); даст следующий результат:

Слайд 18





Разность. MINUS или EXCEPT
Разность двух множеств — это операция, результатом которой является множество, в которое входят все элементы первого множества, не входящие во второе множество. A\B означает множество элементов, принадлежащих A, но не принадлежащих B. В языке SQL нет стандарта для оператора разности множеств, поэтому он может в некоторых СУБД принимать значение MINUS, в других – EXCEPT. В любом случае, как и UNION, оператор разности обладает ограничением на результат запросов, которые должны быть совместимы по объединению, т.е. содержать одинаковое количество столбцов, и каждый столбец первого запроса должен быть того же типа данных (или автоматически приводиться к нему), что и находящийся в том же месте столбец второго запроса.
 <запрос1> MINUS/EXCEPT 
<запрос2> MINUS/EXCEPT 
<запрос3>  .....;
Описание слайда:
Разность. MINUS или EXCEPT Разность двух множеств — это операция, результатом которой является множество, в которое входят все элементы первого множества, не входящие во второе множество. A\B означает множество элементов, принадлежащих A, но не принадлежащих B. В языке SQL нет стандарта для оператора разности множеств, поэтому он может в некоторых СУБД принимать значение MINUS, в других – EXCEPT. В любом случае, как и UNION, оператор разности обладает ограничением на результат запросов, которые должны быть совместимы по объединению, т.е. содержать одинаковое количество столбцов, и каждый столбец первого запроса должен быть того же типа данных (или автоматически приводиться к нему), что и находящийся в том же месте столбец второго запроса. <запрос1> MINUS/EXCEPT <запрос2> MINUS/EXCEPT <запрос3> .....;

Слайд 19





Как выглядит разность множеств на языке SQL (версия для СУБД MS SQL Server): 
(SELECT person FROM sales2005)  EXCEPT (SELECT person FROM sales2006); В результате отобразится строка с Сергеем, уникальным именем для sales2005, т.к. все остальные имена были исключены множеством имён sales2006. Обратите внимание, что Пётр в конечную выборку не попал.
Описание слайда:
Как выглядит разность множеств на языке SQL (версия для СУБД MS SQL Server): (SELECT person FROM sales2005) EXCEPT (SELECT person FROM sales2006); В результате отобразится строка с Сергеем, уникальным именем для sales2005, т.к. все остальные имена были исключены множеством имён sales2006. Обратите внимание, что Пётр в конечную выборку не попал.

Слайд 20





Агрегаты
Очень часто в языке SQL ставятся задачи выделения по набору данных максимальных, минимальных или иных значений поля. Теми средствами, которые были нами изучены ранее, получить эти значения проблематично, поэтому на помощь приходят агрегатные функции.  Агрегатные функции выполняют вычисление на наборе значений и возвращают одиночное значение.
 
Агрегаты, за исключением COUNT, не учитывают значения NULL. Эти функции часто используются в выражении GROUP BY инструкции SELECT.  
Все агрегатные функции являются детерминированными. Это означает, что агрегатные функции возвращают одну и ту же величину при каждом их вызове на одном и том же наборе входных значений.
Описание слайда:
Агрегаты Очень часто в языке SQL ставятся задачи выделения по набору данных максимальных, минимальных или иных значений поля. Теми средствами, которые были нами изучены ранее, получить эти значения проблематично, поэтому на помощь приходят агрегатные функции. Агрегатные функции выполняют вычисление на наборе значений и возвращают одиночное значение. Агрегаты, за исключением COUNT, не учитывают значения NULL. Эти функции часто используются в выражении GROUP BY инструкции SELECT. Все агрегатные функции являются детерминированными. Это означает, что агрегатные функции возвращают одну и ту же величину при каждом их вызове на одном и том же наборе входных значений.

Слайд 21





Агрегаты
Список функций, который входит в стандарт SQL:  
COUNT – функция возвращает количество элементов в группе или количество строк в таблице. 
SUM – возвращает арифметическую сумму всех выбранных значений данного поля.   
AVG – возвращает среднее всех выбранных значений данного поля. 
MAX – возвращает наибольшее из всех выбранных значений данного поля. 
MIN – возвращает наименьшее из всех выбранных значений данного поля.
Описание слайда:
Агрегаты Список функций, который входит в стандарт SQL: COUNT – функция возвращает количество элементов в группе или количество строк в таблице. SUM – возвращает арифметическую сумму всех выбранных значений данного поля. AVG – возвращает среднее всех выбранных значений данного поля. MAX – возвращает наибольшее из всех выбранных значений данного поля. MIN – возвращает наименьшее из всех выбранных значений данного поля.

Слайд 22





Группировка
Выражение GROUP BY используется для определения групп выходных строк, к которым могут применяться агрегатные функции (COUNT, MIN, MAX, AVG и SUM). Если это предложение отсутствует, и используются агрегатные функции, то все столбцы с именами, упомянутыми в SELECT, должны быть включены в агрегатные функции, и эти функции будут применяться ко всему набору строк, которые удовлетворяют предикату запроса. 
В противном случае все столбцы списка SELECT, не вошедшие в агрегатные функции, должны быть указаны в предложении GROUP BY. 
В результате чего все выходные строки запроса разбиваются на группы, характеризуемые одинаковыми комбинациями значений в этих столбцах. После чего к каждой группе будут применены агрегатные функции.
Описание слайда:
Группировка Выражение GROUP BY используется для определения групп выходных строк, к которым могут применяться агрегатные функции (COUNT, MIN, MAX, AVG и SUM). Если это предложение отсутствует, и используются агрегатные функции, то все столбцы с именами, упомянутыми в SELECT, должны быть включены в агрегатные функции, и эти функции будут применяться ко всему набору строк, которые удовлетворяют предикату запроса. В противном случае все столбцы списка SELECT, не вошедшие в агрегатные функции, должны быть указаны в предложении GROUP BY. В результате чего все выходные строки запроса разбиваются на группы, характеризуемые одинаковыми комбинациями значений в этих столбцах. После чего к каждой группе будут применены агрегатные функции.

Слайд 23





Группировка

Следует иметь в виду, что для GROUP BY все значения NULL трактуются как равные, то есть при группировке по полю, содержащему NULL-значения, все такие строки попадут в одну группу. 
Если при наличии предложения GROUP BY, в предложении SELECT отсутствуют агрегатные функции, то запрос просто вернет по одной строке из каждой группы. Эту возможность, наряду с ключевым словом DISTINCT, можно использовать для исключения дубликатов строк в результирующем наборе.
Описание слайда:
Группировка Следует иметь в виду, что для GROUP BY все значения NULL трактуются как равные, то есть при группировке по полю, содержащему NULL-значения, все такие строки попадут в одну группу. Если при наличии предложения GROUP BY, в предложении SELECT отсутствуют агрегатные функции, то запрос просто вернет по одной строке из каждой группы. Эту возможность, наряду с ключевым словом DISTINCT, можно использовать для исключения дубликатов строк в результирующем наборе.

Слайд 24





Функция COUNT(*)
Функция COUNT(*) возвращает количество элементов в группе. Сюда входят NULL и повторяющиеся значения. Например:  
 
SELECT COUNT(*) 
FROM sales2005 
 
вернёт 5, поскольку строк в таблице sales2005 пять штук. 
Функция COUNT(название_поля) оценивает поле построчно  и возвращает количество значений, не равных NULL. 

Например:  
SELECT COUNT(amount) FROM sales2005 

вернёт 4, поскольку в таблице sales2005 в поле amount содержится четыре строки, значения которых не равны NULL.
Описание слайда:
Функция COUNT(*) Функция COUNT(*) возвращает количество элементов в группе. Сюда входят NULL и повторяющиеся значения. Например: SELECT COUNT(*) FROM sales2005 вернёт 5, поскольку строк в таблице sales2005 пять штук. Функция COUNT(название_поля) оценивает поле построчно и возвращает количество значений, не равных NULL. Например: SELECT COUNT(amount) FROM sales2005 вернёт 4, поскольку в таблице sales2005 в поле amount содержится четыре строки, значения которых не равны NULL.

Слайд 25





Функция COUNT(*)
Функция COUNT(DISTINCT имя_поля) оценивает значения в поле для каждой строки в группе и возвращает количество уникальных значений, не равных NULL. 
Например:  
 
SELECT COUNT(DISTINCT person) 
FROM sales2005 
 
вернёт 3, поскольку в таблице sales2005 в поле person содержится три уникальных имени, не смотря на то, что всего значений там пять.  Как вы считаете, что произойдёт, если добавить группировку по полю person?
Описание слайда:
Функция COUNT(*) Функция COUNT(DISTINCT имя_поля) оценивает значения в поле для каждой строки в группе и возвращает количество уникальных значений, не равных NULL. Например: SELECT COUNT(DISTINCT person) FROM sales2005 вернёт 3, поскольку в таблице sales2005 в поле person содержится три уникальных имени, не смотря на то, что всего значений там пять. Как вы считаете, что произойдёт, если добавить группировку по полю person?

Слайд 26





SUM
Возвращает сумму всех, либо только уникальных (при наличии DISTINCT), значений в выражении. Функция SUM может быть использована только для числовых столбцов. Псевдозначения NULL пропускаются.  


Например:  
SELECT  SUM(amount) 
FROM sales2005 
 вернёт сумму всех значений поля amount, т.е. 14000. 

Теперь попробуем добавить группировку по имени: 

SELECT  person, SUM(amount) 
FROM sales2005 
GROUP BY person 
Наш запрос вернёт следующий результат:
Описание слайда:
SUM Возвращает сумму всех, либо только уникальных (при наличии DISTINCT), значений в выражении. Функция SUM может быть использована только для числовых столбцов. Псевдозначения NULL пропускаются. Например: SELECT SUM(amount) FROM sales2005 вернёт сумму всех значений поля amount, т.е. 14000. Теперь попробуем добавить группировку по имени: SELECT person, SUM(amount) FROM sales2005 GROUP BY person Наш запрос вернёт следующий результат:

Слайд 27





AVG
Возвращает среднее арифметическое группы значений. Пустые множества NULL пропускаются. Функция AVG() вычисляет среднее арифметическое набора  значений, выполняя деление суммы этих значений на  количество значений, не равных NULL. Например:  

SELECT  AVG(amount) 
FROM sales2005 

 Запрос вернёт среднее всех значений поля amount, т.е. 3500. 

Теперь попробуем добавить группировку по имени: 
SELECT  person, AVG(amount) 
FROM sales2005
GROUP BY person 
Наш запрос вернёт следующий результат:
Описание слайда:
AVG Возвращает среднее арифметическое группы значений. Пустые множества NULL пропускаются. Функция AVG() вычисляет среднее арифметическое набора значений, выполняя деление суммы этих значений на количество значений, не равных NULL. Например: SELECT AVG(amount) FROM sales2005 Запрос вернёт среднее всех значений поля amount, т.е. 3500. Теперь попробуем добавить группировку по имени: SELECT person, AVG(amount) FROM sales2005 GROUP BY person Наш запрос вернёт следующий результат:

Слайд 28





MAX() – возвращает максимальное значение выражения.  
MAX() – возвращает максимальное значение выражения.  
MIN() – возвращает минимальное значение выражения. 
NULL пропускается для обеих функций. 
При  использовании со столбцами, содержащими символьные  значения, функция MAX находит наибольшее значение в упорядоченной последовательности, а MIN - наименьшее.  

Например: 
SELECT  MAX(person) 
FROM sales2005 
вернёт максимальное значение поля person (по алфавиту, но, если точнее, то по ASCII), т.е. «Пётр». 
Теперь попробуем добавить группировку по имени и вычислить максимальные и минимальные цифры: 
SELECT  person, MAX(amount) AS ‘Max’, MIN(amount) AS ‘Min’ 
FROM sales2005 
GROUP BY person 
 Наш запрос вернёт следующий результат:
Описание слайда:
MAX() – возвращает максимальное значение выражения. MAX() – возвращает максимальное значение выражения. MIN() – возвращает минимальное значение выражения. NULL пропускается для обеих функций. При использовании со столбцами, содержащими символьные значения, функция MAX находит наибольшее значение в упорядоченной последовательности, а MIN - наименьшее. Например: SELECT MAX(person) FROM sales2005 вернёт максимальное значение поля person (по алфавиту, но, если точнее, то по ASCII), т.е. «Пётр». Теперь попробуем добавить группировку по имени и вычислить максимальные и минимальные цифры: SELECT person, MAX(amount) AS ‘Max’, MIN(amount) AS ‘Min’ FROM sales2005 GROUP BY person Наш запрос вернёт следующий результат:

Слайд 29





Важный момент: большой плюс агрегатов состоит в том, что, в рамках одного запроса, вы можете вызвать их сколько угодно. 
Важный момент: большой плюс агрегатов состоит в том, что, в рамках одного запроса, вы можете вызвать их сколько угодно. 
Например: 
 SELECT   person,   MAX(amount) AS mx,   MIN(amount) AS mn,  COUNT(amount) AS cnt,  AVG(amount) AS avrg  SUM(amount) AS sm FROM sales2005 GROUP BY person 
 Этот код вернёт следующий результат: 
Главное: не забывать группировать!
Описание слайда:
Важный момент: большой плюс агрегатов состоит в том, что, в рамках одного запроса, вы можете вызвать их сколько угодно. Важный момент: большой плюс агрегатов состоит в том, что, в рамках одного запроса, вы можете вызвать их сколько угодно. Например: SELECT person, MAX(amount) AS mx, MIN(amount) AS mn, COUNT(amount) AS cnt, AVG(amount) AS avrg SUM(amount) AS sm FROM sales2005 GROUP BY person Этот код вернёт следующий результат: Главное: не забывать группировать!

Слайд 30





HAVING — необязательный (опциональный) параметр оператора SELECT для указания условия на результат агрегатных функций (MAX, SUM, AVG, …). HAVING аналогичен WHERE за исключением того, что строки отбираются не по значениям столбцов, а строятся из значений столбцов, указанных в GROUP BY, и значений агрегатных функций, вычисленных для каждой группы, образованной GROUP BY . Иными словами, WHERE предназначен для фильтрации по полям, а HAVING – для фильтрации по группам
HAVING — необязательный (опциональный) параметр оператора SELECT для указания условия на результат агрегатных функций (MAX, SUM, AVG, …). HAVING аналогичен WHERE за исключением того, что строки отбираются не по значениям столбцов, а строятся из значений столбцов, указанных в GROUP BY, и значений агрегатных функций, вычисленных для каждой группы, образованной GROUP BY . Иными словами, WHERE предназначен для фильтрации по полям, а HAVING – для фильтрации по группам
Необходимо, чтобы в SELECT были заданы только требуемые в выходном потоке столбцы, перечисленные в GROUP BY и/или агрегированные значения. Распространённая ошибка — указание в SELECT столбца, пропущенного в GROUP BY. Если параметр GROUP BY в SELECT не задан, HAVING применяется к «группе» всех строк таблицы, полностью дублируя WHERE (допускается не во всех реализациях стандарта SQL). Например, мы хотим получить людей, у которых суммарное количество средств превышает 4 тысячи + вывести средний показатель дохода по таким людям: 
SELECT person, AVG(amount) AS my_avg 
FROM sales2005 
GROUP BY person  
HAVING SUM(amount) > 4000
Описание слайда:
HAVING — необязательный (опциональный) параметр оператора SELECT для указания условия на результат агрегатных функций (MAX, SUM, AVG, …). HAVING аналогичен WHERE за исключением того, что строки отбираются не по значениям столбцов, а строятся из значений столбцов, указанных в GROUP BY, и значений агрегатных функций, вычисленных для каждой группы, образованной GROUP BY . Иными словами, WHERE предназначен для фильтрации по полям, а HAVING – для фильтрации по группам HAVING — необязательный (опциональный) параметр оператора SELECT для указания условия на результат агрегатных функций (MAX, SUM, AVG, …). HAVING аналогичен WHERE за исключением того, что строки отбираются не по значениям столбцов, а строятся из значений столбцов, указанных в GROUP BY, и значений агрегатных функций, вычисленных для каждой группы, образованной GROUP BY . Иными словами, WHERE предназначен для фильтрации по полям, а HAVING – для фильтрации по группам Необходимо, чтобы в SELECT были заданы только требуемые в выходном потоке столбцы, перечисленные в GROUP BY и/или агрегированные значения. Распространённая ошибка — указание в SELECT столбца, пропущенного в GROUP BY. Если параметр GROUP BY в SELECT не задан, HAVING применяется к «группе» всех строк таблицы, полностью дублируя WHERE (допускается не во всех реализациях стандарта SQL). Например, мы хотим получить людей, у которых суммарное количество средств превышает 4 тысячи + вывести средний показатель дохода по таким людям: SELECT person, AVG(amount) AS my_avg FROM sales2005 GROUP BY person HAVING SUM(amount) > 4000

Слайд 31





Исходя из изученных нами положений, выведем общий синтаксис запроса: 
Исходя из изученных нами положений, выведем общий синтаксис запроса: 
 
SELECT [DISTINCT] {список_вывода_через_запятую | *}
 FROM таблица_1 AS псевдоним_1 [INNER/LEFT/RIGHT/FULL] JOIN таблица_2 AS псевдоним_2 
ON псевдоним_1.поле_1 = псевдоним_2.поле_2
 [INNER/LEFT/RIGHT/FULL] JOIN …         --- сколько угодно JOIN’ов
 ON … AND …   --- возможны множественные условия 
WHERE условие_отбора_записей     --- с AND, OR, IN и т.д.
 GROUP BY поля_через_запятую
 HAVING условие_отбора_групп  --- с AND, OR, IN и т.д. 
 
UNION / EXCEPT / INTERSECT  --- если ведётся работа с множествами 
 
SELECT ….    -- новый запрос (множество) аналогично
 …
 ORDER BY поля_через_запятую
Описание слайда:
Исходя из изученных нами положений, выведем общий синтаксис запроса: Исходя из изученных нами положений, выведем общий синтаксис запроса: SELECT [DISTINCT] {список_вывода_через_запятую | *} FROM таблица_1 AS псевдоним_1 [INNER/LEFT/RIGHT/FULL] JOIN таблица_2 AS псевдоним_2 ON псевдоним_1.поле_1 = псевдоним_2.поле_2 [INNER/LEFT/RIGHT/FULL] JOIN … --- сколько угодно JOIN’ов ON … AND … --- возможны множественные условия WHERE условие_отбора_записей --- с AND, OR, IN и т.д. GROUP BY поля_через_запятую HAVING условие_отбора_групп --- с AND, OR, IN и т.д. UNION / EXCEPT / INTERSECT --- если ведётся работа с множествами SELECT …. -- новый запрос (множество) аналогично … ORDER BY поля_через_запятую

Слайд 32





Что изучили сегодня
Связывание сущностей 1:1 и 1: многим
Обеспечение целостности
Для чего используем Джоины?
Объединение (union)
Для чего используется Minus и Except?
Как осуществляется Группировка
Когда и как пользоваться Sum, AVG и Having
Описание слайда:
Что изучили сегодня Связывание сущностей 1:1 и 1: многим Обеспечение целостности Для чего используем Джоины? Объединение (union) Для чего используется Minus и Except? Как осуществляется Группировка Когда и как пользоваться Sum, AVG и Having

Слайд 33





Домашнее задание
По первой части:
1) Грабер М. Введение в SQL – читать главы 8, 9, 14 полностью. 
2) на сайте SQL-EX.RU выполнить к следующему занятию задачи 6, 7, 8 (решить через JOIN), 9, 16, 23, 34, 35, 36, 38, 40, 44, 45, 48, 49, 50. 
По второй части (Агрегаты)
1) читать презентации!  
2) Грабер М. Введение в SQL –  главы 6, 7, 10, 12, 15 полностью; 
3) на сайте SQL-EX.RU выполнить к следующему занятию задачи с 1 по 27 включительно, 37, 39, 55, 56, 71, 80, 91. 
http://2sql.ru/novosti/sql-having/ - тут можно найти теорию
Описание слайда:
Домашнее задание По первой части: 1) Грабер М. Введение в SQL – читать главы 8, 9, 14 полностью. 2) на сайте SQL-EX.RU выполнить к следующему занятию задачи 6, 7, 8 (решить через JOIN), 9, 16, 23, 34, 35, 36, 38, 40, 44, 45, 48, 49, 50. По второй части (Агрегаты) 1) читать презентации! 2) Грабер М. Введение в SQL – главы 6, 7, 10, 12, 15 полностью; 3) на сайте SQL-EX.RU выполнить к следующему занятию задачи с 1 по 27 включительно, 37, 39, 55, 56, 71, 80, 91. http://2sql.ru/novosti/sql-having/ - тут можно найти теорию



Похожие презентации
Mypresentation.ru
Загрузить презентацию