Похожие презентации:
Виды Зависимостей между атрибутами
1.
2.
3.
Виды Зависимостей между атрибутами• Частично-фукнциональная
• Полная функциональная –
• Транзитивная -
4.
5.
ПодумайтеКакими
характеристиками
обладает студент?
6.
Датарождения
Номер
телефона
Адрес
Пол
Отделение
Отчество
Курс
Имя
Группа
Фамилия
Стипендия
7.
ФамилияИмя
Отчество
Пол
Дата
рождения
Телефон
Адрес
Отделение
Курс
Группа
Стипендия
Кустова
Ксения
Анатольевна
женский
04.12.2000
13-45-13
г. Ярославль, ул. Ньютона, д.20, кв.12.
Техническое
3
18КС
есть
8.
Группа: 18КСКурс: 3
Отделение: техническое
9.
Нормализация-процесс преобразования данных путем ликвидации
избыточности данных и иных противоречий с целью
приведения таблиц к виду, позволяющему осуществить
непротиворечивое и корректное редактирование данных
- это процесс приведения таблиц БД к ряду нормальных
форм с целью избежания избыточности, аномалий вставки,
удаления и редактирования данных.
• Цель- получение оптимальной структуры данных
10.
5НФ4НФ
НФБК
3НФ
2НФ
1НФ
Каждая форма –
набор требований
11.
• Декомпозиция (разбиение) таблицы –процесс деления таблицы с целью
устранения избыточности данных
• Избыточность – повторяющиеся данные,
содержащиеся в БД
12.
Нормальные формы- 1НФ
-2НФ
-3НФ
- БКНФ (Бойса-Кодда НФ) – усиленная 3НФ
-4НФ
-5НФ
- Доменно-ключевая НФ
13.
1НФОпределение
• Переменная отношения находится в первой
нормальной форме (1НФ) тогда и только
тогда, когда в любом допустимом значении
отношения каждый его кортеж содержит
только одно значение для каждого из
атрибутов
14.
- В каждом поле таблицы должно бытьтолько одно значение (атомарность)
- Не должно быть повторяющихся строк
15.
1НФ до нормализации16.
1НФ после нормализации17.
2НФОпределение
• Переменная отношения находится во
второй нормальной форме (2НФ) тогда и
только тогда, когда она находится в 1НФ и
каждый
ее
неключевой
атрибут
неприводимо
(функционально
полно)
зависит от ее потенциального ключа
18.
- Таблица в 1НФ- Есть первичный ключ
- Все атрибуты зависят от первичного
ключа целиком, а не от какой-то его
части
19.
2НФ до нормализации20.
21.
2НФ добавим первичный ключ22.
2НФ декомпозиция23.
3НФОпределение
• Переменная отношения находится в
третьей нормальной форме (3НФ) тогда и
только тогда, когда она находится во 2НФ и
отсутствуют транзитивные функциональные
зависимости неключевых атрибутов от
ключевых
24.
- Таблица во 2НФ- Все атрибуты зависят только от
первичного ключа, но не от других
атрибутов
25.
3НФ до нормализации26.
3НФ до нормализации27.
3НФ после нормализации28.
Проверка и закрепление знаний• Тестирование в Kahoot
- введите PIN-код, отображенный на экране
- введите Фамилию и Имя в поле NAME
Критерии оценивания
- 1 ошибка – «отлично»
- 2 ошибки – «хорошо»
- 3 ошибки – «удовлетворительно»
- -более трех ошибок – «неудовлетворительно»
29.
ВопросыЧто нового вы сегодня узнали?
30.
ВопросыЗачем по вашему мнению необходима
нормализация?
31.
ВопросыКакие нормальные формы вы теперь
знаете?
32.
ВопросыГде в дальнейшем возможно применение
знаний по теме «Нормализация баз данных»?
33.
34.
35.
Все)Идем делать практические работы
36.
ОПБД.НФ БК, 4 НФ, 5
НФ
37.
Бойса-Кодда Нормальная формаОпределение
• Переменная отношения находится в
нормальной форме Бойса — Кодда (иначе
— в усиленной третьей нормальной форме)
тогда и только тогда, когда каждая её
нетривиальная и неприводимая слева
функциональная зависимость имеет в
качестве своего детерминанта некоторый
потенциальный ключ.
38.
• Таблица в 3 НФ• Ключевые атрибуты не должны
зависеть он НЕключевых
39.
Пример БКНФДано:
Каждый сотрудник может курировать только ту работу для
которой он квалифицирован
– Максим - курирует маркетинг,
– Рома - программирование,
– Илья - дизайн
–…
Есть множество проектов над которыми они работают
Для каждого из проектов могут быть выполнены и
Разработка и дизайн и маркетинг
Куратор по каждому из направлений у проекта может быть
только один (дабы не было путанницы)
40.
БКНФ до нормализацииproject_id
Вид работы
Ответственный
1
Разработка
Рома
2
Маркетинг
Максим
2
Дизайн
Илья
1
Дизайн
Илья
3
Маркетинг
Диана
3
Разработка
Миша
41.
Пример БКНФ• Первичный ключ = составной (Id_Проектa +
Задача)
42.
Пример БКНФ• Первичный ключ = составной (Id_Проектa +
Задача)
• Но
проявляется
зависимость
части
первичного
ключа
(задачи)
от
ответственного
43.
Пример БКНФ• Первичный ключ = составной (Id_Проектa +
Задача)
• Но
проявляется
зависимость
части
первичного ключа (задачи) от ответственного
• Зная кем является ответственный можно
четко сказать какую задачу он выполняет в
проекте
44.
БКНФ до нормализацииproject_id
Вид работы
Ответственный
1
Разработка
Рома
2
Маркетинг
Максим
2
Дизайн
Илья
1
Дизайн
Илья
3
Маркетинг
Диана
3
Разработка
Миша
Решение?
45.
БКНФ до нормализацииproject_id
Вид работы
Ответственный
1
Разработка
Рома
2
Маркетинг
Максим
2
Дизайн
Илья
1
Дизайн
Илья
3
Маркетинг
Диана
3
Разработка
Миша
Декомпозиция
46.
БКНФ после нормализацииid
name
Вид работы
Id_проекта
Id_разработки
1
Рома
Разработка
1
1
2
Максим
Маркетинг
2
2
3
Илья
Дизайн
2
3
4
Илья
Дизайн
1
4
5
Диана
Маркетинг
3
5
6
Миша
Разработка
3
6
работы
проекты
47.
4НФОпределение
• Переменная отношения находится в
четвёртой нормальной форме, если она
находится в нормальной форме Бойса —
Кодда и не содержит нетривиальных
многозначных зависимостей.
48.
• Таблица находится в НФ БК• Устраняются многозначные зависимости
49.
4НФ ПримерДля одного сотрудника есть
- МНОЖЕСТВО проектов
- МНОЖЕСТВО увлечений
worker_id
project
hobbie
1
Сантехник
Радиотехника
1
КайзерДом
Гитара
2
FabioRoss
Футбол
3
КайзерДом
Хоккей
3
Доска Почета
Гитара
50.
4НФ Пример• Атрибуты Проект и Увлечение напрямую зависят
от первого столбца, но друг от друга они
независимы
worker_id
project
hobbie
1
Сантехник
Радиотехника
1
КайзерДом
Гитара
2
FabioRoss
Футбол
3
КайзерДом
Хоккей
3
Доска Почета
Гитара
51.
4НФ Пример• А что будет если увлечений у данного сотрудника
больше чем проектов?
worker_id
project
hobbie
1
Сантехник
Радиотехника
1
КайзерДом
Гитара
2
FabioRoss
Футбол
3
КайзерДом
Хоккей
3
Доска Почета
Гитара
52.
4НФ Пример• Еще вариант - выбрать все хобби сотрудников,
которые участвуют в проекте “КайзерДом”
worker_id
project
hobbie
1
Сантехник
Радиотехника
1
КайзерДом
Гитара
2
FabioRoss
Футбол
3
КайзерДом
Хоккей
3
Доска Почета
Гитара
53.
4НФ Примерworker_id
project
hobbie
1
Сантехник
Радиотехника
1
КайзерДом
Гитара
2
FabioRoss
Футбол
3
КайзерДом
Хоккей
3
Доска Почета
Гитара
Решение?
54.
4НФ Примерworker_id
project
hobbie
1
Сантехник
Радиотехника
1
КайзерДом
Гитара
2
FabioRoss
Футбол
3
КайзерДом
Хоккей
3
Доска Почета
Гитара
Декомпозиция
55.
4НФ Примерworker_id
project
worker_id
hobbie
1
Сантехник
1
Радиотехника
1
КайзерДом
1
Гитара
2
FabioRoss
2
Футбол
3
КайзерДом
3
Хоккей
3
Доска Почета
3
Гитара
Декомпозиция
56.
5НФОпределение
• Переменная отношения находится в пятой
нормальной форме (иначе — в
проекционно-соединительной нормальной
форме) тогда и только тогда, когда каждая
нетривиальная зависимость соединения в
ней определяется потенциальным ключом
(ключами) этого отношения.
57.
• Таблица находится в 4 НФ• Устраняются нетривиальные зависимости
(Декомпозиция без потерь)
58.
5НФ Примерworker
project
part
Миша
КайзерДом
Frontend
Рома
КайзерДом
Backend
Рома
Сантехник
API Integration
Ярик
Доска почета
Backend
Миша
Доска Почета
Frontend
Миша
Резина
Frontend
Миша делает только Frontend
Рома наоборот, делает все, кроме Frontend
Миша участвует в большом количестве проектов,
Ярик только в одном
...
59.
5НФ Примерworker
project
part
Миша
КайзерДом
Frontend
Рома
КайзерДом
Backend
Рома
Сантехник
API Integration
Ярик
Доска почета
Backend
Миша
Доска Почета
Frontend
Миша
Резина
Frontend
Декомпозируем без потерь таким образом, чтобы
при объединении декомпозированных таблиц мы
получили исходную таблицу
60.
5НФ Примерworker
Миша
Рома
Рома
project
КайзерДом
КайзерДом
Сантехник
worker
part
Миша
Frontend
Рома
Backend
API
Integration
Ярик
Доска
почета
Рома
Миша
Доска
Почета
Ярик
Миша
Резина
Backend
project
part
КайзерДом
Frontend
КайзерДом
Backend
Сантехник
API
Integration
Доска
почета
Backend
Доска
Почета
Frontend
Резина
Frontend
Декомпозируем без потерь таким образом, чтобы
при объединении декомпозированных таблиц мы
получили исходную таблицу
61.
62.
Все)ДЗ:
• Прочитать примеры в википедии по
нормальным формам.
• Ознакомится с 6НФ и Доменно-ключевой НФ.
• https://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D
1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD
%D0%B0%D1%8F_%D1%84%D0%BE%D1%80%D0
%BC%D0%B0
63.
SQL- декларативный язык программирования,
применяемый для создания, модификации и
управления данными в реляционной базе данных,
управляемой соответствующей системой управления
базами данных.
- IBM 1970-e - SEQUEL
– целью разработки было создание простого непроцедурного
языка, которым мог воспользоваться любой пользователь,
даже не имеющий навыков программирования
-* Идем в Википедию и читаем подробный разбор
стандартизации SQL
64.
SQL – Srtuctured Query Language –структурированный язык запросов для
взаимодействия с БД
Задача:
-для предоставления простого и эффективного
способа чтения и записи информации из БД
65.
Расширения SQL• Многие поставщики СУБД расширили
возможности SQL, введя в язык дополнительные
операторы или инструкции:
• - дополнительная функциональность
• -упрощение определенных операций
• - специфичны для конкретной БД
• - редко поддерживаются более чем одним
поставщиков
66.
Преимущества SQL:• -не относится к числу патентованных
языков
• - легко изучить (инструкции состоят из
простых английских слов)
• -мощный язык (можно выполнять очень
сложные операции с БД)
67.
SQL - элементы- операторы определения данных (Data Definition Language, DDL):
– CREATE создаёт объект базы данных (саму базу, таблицу,
представление, пользователя и так далее),
– ALTER изменяет объект,
– DROP удаляет объект;
-операторы манипуляции данными (Data Manipulation Language, DML):
– SELECT выбирает данные, удовлетворяющие заданным условиям,
– INSERT добавляет новые данные,
– UPDATE изменяет существующие данные,
– DELETE удаляет данные
68.
SQL - элементы- операторы определения доступа к данным (Data Control Language,
DCL):
• GRANT предоставляет пользователю (группе) разрешения на
определённые операции с объектом,
• REVOKE отзывает ранее выданные разрешения,
• DENY задаёт запрет, имеющий приоритет над разрешением;
- операторы управления транзакциями (Transaction Control Language,
TCL):
• COMMIT применяет транзакцию,
• ROLLBACK откатывает все изменения, сделанные в контексте
текущей транзакции,
• SAVEPOINT делит транзакцию на более мелкие участки.
69.
Далее, мы будемрассматривать только
MySQL как пример РСУБД
70.
Типы данныхТип данных
Диапазон
UNSIGNED
TINYINT
-128 — 127
0 — 255
SMALLINT
-32 768 — 32 767
0 — 65 535
MEDIUMINT
-8 388 608 — 8 388 607
0 — 16 777 215
INT
-2 147 483 648 — 2 147 483 647
0 — 4 294 967 295
BIGINT
-9 223 372 036 854 775 808 —
9 223 372 036 854 775 807
0 — 18 446 744 073 709 551 615
Указание размера для целочисленных типов ( int(3) ) не меняет диапазон
возможных значений. Это справочно-сервисная информация, которую иногда
используют инструменты для работы с MySQL.
71.
Типы данных-дробные числаТип данных
Максимальный диапазон
FLOAT(M,D)
-3,402823466E+38 до -1,175494351E-38, 0, и от
1,175494351E-38 до 3,402823466E+38
DOUBLE(M,D)
-1,7976931348623157E+308 до -2,2250738585072014E-308, 0, и от
2,2250738585072014E-308 до 1,7976931348623157E+308
DECIMAL(M,D)
65 цифр
M — количество отводимых под число символов.
D — количество символов дробной части.
UNSIGNED - запрещает указывать отрицательные значения
72.
Типы данных - строкиТип данных
Длина
N
VARCHAR(N)
0 - 65535
Переменная
CHAR(N)
0 - 255
Фиксированная (дополняется справа пробелами
при недостаточно длине)
73.
Типы данныхТип данных
Формат
Примечание
DATE
YYYY-MM-DD
в качестве разделителя может выступать не только дефис «», но и любой символ отличный от цифры
DATETIME
YYYY-MM-DD
HH:mm:SS
ANSI - стандарт даты/времени
TIMESTAMP
00000000000000
в виде количества секунд, прошедших с полуночи 1 января
1970 года по гринвичскому времени
TIME
HH:mm:SS
-838:59:59.000000 до 838:59:59.000000
YEAR
YYYY
TIME, DATETIME, TIMESTAMP поддерживают так же указание дробной
части секунд
74.
Создание БД-- Простое создание базы данных
CREATE DATABASE test;
-- Создание базы данных с указанием кодировки по
умолчанию
CREATE DATABASE test DEFAULT CHARACTER SET utf8;
-- Создать базу данных, если таковая не существует
-- Если существует - не пытаться создавать
CREATE DATABASE IF NOT EXISTS test;
75.
Удаление/переименование БД-- Удаление базы данных
DROP DATABASE test;
-- Удаление БД. Если БД не существует - не выдаст
ошибку.
DROP DATABASE IF EXISTS test;
-- Переименование БД
RENAME DATABASE test TO production;
76.
Создание таблицыCREATE TABLE `department` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
77.
NULLNULL обозначает отсутствующее или неизвестное
значение и обрабатывается отличным от других
значений образом
+----------+-----------+----------+----------+
| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |
+----------+-----------+----------+----------+
| NULL | NULL | NULL | NULL |
+----------+-----------+----------+----------+
нужно пользоваться операторами IS NULL и IS NOT NULL
78.
Создание таблицыCREATE TABLE `department` (
`id` int(11) unsigned NOT NULL
AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
79.
Создание таблицыCREATE TABLE `department` (
`id` int(11) unsigned NOT NULL
AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
80.
Primary keyЗадается при создании таблицы
Часто, при создании суррогатного ключа
используется опция AUTO_INCREMENT для
ключевого атрибута
81.
ПринципыСтараться использовать типы данных минимального
размера
Простые типы
– Сравнение чисел проще чем строк, так как не учитываются
кодировки
– Используйте встроенные типы (не надо использовать строки
для дат)
Стараться избегать значений NULL
– Усложняет работу для самой БД
– Порождает неопределенности
82.
Создание БДНе забываем
ОБНОВЛЯТЬ
БД
83.
Создание таблицНе забываем ОБНОВЛЯТЬ БД
84.
Создание таблицИли на
панели
инструменто
в нажимаем
и вводим
листинг
запроса
(GREAT
TABLE…)
85.
Создание таблиц86.
Создание таблиц87.
Создание таблиц88.
Создание таблиц89.
Схема данных (диаграмма БД)90.
Схема данных (диаграмма БД)91.
Добавление данных в таблицы БД92.
Добавление данных в таблицы БД93.
Добавление данных в таблицы БД94.
Добавление данных в таблицы БД95.
SELECT (выбрать)• Зарезервированное слово (является частью
SQL)
• !!! Нельзя называть таблицу или столбец
зарезервированными словами
• «Что хотите извлечь и куда»
96.
• Select prod_name/извлекает один столбецНАЗВАНИЕ ПРОДУКТА из таблицы ПРОДУКТЫ/
• From Products;
• (данные не фильтруются и не сортируются)
• Лучше писать в Select Продукты.Название
продукта
• Нечувствительны к регистру символов
инструкций в отличие от имен таблиц, столбцов
и значений
97.
Извлечение нескольких столбцов• Select prod_id, prod_name, prod_price
/извлекает несколько столбцов из таблицы
ПРОДУКТЫ/
• From Products;
98.
Извлечение всех столбцов• Select *
• From Products;
• !!! Лучше не использовать групповой
символ (*), извлечение ненужных столбцов
обычно приводит к снижению
производительности запроса и приложения
в целом
99.
Извлечение уникальных строк• Select Distinct prod_id
• From Products;
• СУБД возвращает только уникальные
(неповторяющиеся) значения
• Должно находиться непосредственно перед
списком имен столбцов
• Применяется ко всем столбцам, а не только перед
которым оно стоит
• Select Distinct prod_id, prod_price
100.
• Для извлечения лишь нескольких первыхзаписей (н-р, первых пяти)
101.
комментарииИнструкции не выполняются, не
обрабатываются.
Обозначения:
-- (два дефиса) все, что идет далее считается
текстом комментария в строке
/* - помечает начало комментария
*/ - завершение комментария
(все, что находится между, становится
комментарием)
102.
103.
Сортировка полученных данныхORDER BY заставляет СУБД отсортировать
данные в алфавитном порядке
104.
105.
Сортировка по нескольким столбцам106.
Сортировка по положению столбца107.
108.
Фильтрация данныхиспользование предложения WHERE
109.
Операторы в предложенииWHERE
110.
111.
Сравнение с одиночным значением112.
113.
114.
115.
116.
117.
Задание)• 1. Выведите товары без цены
• 2. Вывести клиентов, у которых не указан
118.
Ответы119.
Расширенная фильтрация данныхоператор AND
120.
121.
Оператор OR1. Вывести название и цены всех товаров,
изготовленных
одним
из
указанных
поставщиков (DLL01 и BRS01)
122.
Решение123.
Решение124.
Задание• Вывести
список
всех
предлагаемых
поставщиками DLL01 и BRS01 товаров, цена
которых – 10 долларов и выше
125.
Решение126.
Внимание• Вначале обрабатываются логические
операторы AND, а потом – логические
операторы OR
127.
Решение (выбрать правильный)128.
Оператор INОператор IN служит для указания диапазона
условий, любое из которых может быть
выполнено.
При
этом
значения,
заключенные в скобки, перечисляются через
запятую.
129.
Инструкция SELECT извлекает все товары,предлагаемые поставщиками DLL01 и BRS01.
После оператора IN указан список значений
через запятую, а весь список заключен в
скобки.
130.
131.
Преимущества оператора INПри работе с длинными списками необходимых значений
синтаксис логического оператора IN гораздо понятнее.
При использовании оператора IN совместно с операторами
AND и OR гораздо легче управлять порядком обработки.
Операторы IN почти всегда быстрее обрабатываются, чем
списки операторов OR (впрочем, это сложно заметить в случае
коротких списков).
Самое большое преимущество логического оператора IN
заключается в том, что в нем может содержаться еще одна
инструкция SELECT, а это позволяет создавать очень гибкие
предложения WHERE.
132.
Оператор NOTКлючевое
слово,
применяемое
в
предложении where для отрицания какоголибо условия.
Пример: извлекается список товаров,
предлагаемых всеми поставщиками, кроме
DLL01.
133.
Логический оператор NOT отрицаетусловие, следующее за ним. Поэтому
СУБД извлекает не те значения
vend_id, которые совпадают с DLL01, а
все остальные.
134.
Фильтрация с использованиемметасимволов
135.
%136.
137.
138.
1. Вывести название товаров, названия вкоторых начинаются на F и заканчиваются на у.
2. Вывести еmail в которых есть сочетание
@forte.com
139.
1. Вывести название товаров, названия вкоторых начинаются на F и заканчиваются на
у.
140.
2. Вывести еmail в которых есть сочетание@forte.com
141.
142.
Метасимвол «знак подчеркивания»(_)Еще одним полезным метасимволом
является знак подчеркивания (_). Он
используется так же, как и знак %, но при
этом учитывается не множество символов, а
только один.
1. Вывести названия товаров в которых
неизвестны
первые
два
значения
и
заканчивается на словосочетания inch teddy
bear.
2. Повторите первое задание только с
использованием метасимвола % .
143.
Метасимвол«квадратные скобки» ([])
служит для указания набора символов,
каждый из которых должен совпадать с
искомым значением, причем в точно
указанном месте (в позиции метасимвола).
1. Найти всех клиентов
начинаются на J или M
имена
которых
144.
Метасимвол«квадратные скобки» ([])
служит для указания набора символов,
каждый из которых должен совпадать с
искомым значением, причем в точно
указанном месте (в позиции метасимвола).
1. Найти всех клиентов
начинаются на J или M
имена
которых
145.
Метасимвол, обозначающийпротивоположное действие (^)
• 1. Найти всех клиентов имена которых НЕ
начинаются на J или M
146.
Метасимвол, обозначающийпротивоположное действие (^)
• 1. Найти всех клиентов имена которых НЕ
начинаются на J или M
147.
Советы по использованию метасимволов• Не злоупотребляйте метасимволами. Если
можно использовать другой оператор поиска,
задействуйте его.
• При
использовании
метасимволов
старайтесь по возможности не вставлять их в
начало
шаблона
поиска.
Шаблоны,
начинающиеся
с
метасимволов,
обрабатываются медленнее всего.
• Внимательно
следите
за
позицией
метасимволов. Если они находятся не на своем
месте, будут извлечены не те данные.
148.
Создание вычисляемых полейПримеры использования
149.
КонкатинацияКомбинирование
значений
(путем
присоединения их друг к другу) для получения
одного “длинного” значения.
SQL Server для конкатинации использует
оператор «+»
Пример: создать таблицу, в которой в одном
столбце объединены записи из нескольких
столбцов (по условию отчета)
150.
• Чтобы убрать пробелы справа от указанного значения, необходимоиспользовать функцию RTRIM (). Отбрасывает все пробелы справа от
указанного значения
• R- право по-английски
151.
152.
153.
Псевдоним- это альтернативное имя для поля или
значения. Псевдонимы присваиваются с
помощью ключевого слова AS.
Рассмотрим следующую инструкцию SELECT.
154.
155.
Математические вычисления156.
157.
Математические операторы в SQL158.
Использование функций обработкиданных
Функции — это операции, которые чаще всего
приходится выполнять над данными, включая
различные преобразования и вычисления.
159.
Применение функций160.
Функции для работы с текстом161.
Наиболее часто используемые текстовыефункции
162.
Применение функции SOUNDEX163.
164.
Функции для работы с датой/временем• Извлечь список всех заказов, сделанных в
2012 году
165.
Функции для работы с числами166.
Использование итоговых функций167.
Итоговые функции168.
AVG169.
Самостоятельная работа1. Найти среднюю цену товара,
предлагаемых поставщиком DLL01.
170.
171.
Функция COUNTПодсчитывает количество строк:
- общее число строк в таблице
- число
строк,
удовлетворяющих
определенному критерию
172.
• Общее количество клиентов, содержащихсяв таблице Castomers
1. Клиенты, имеющие адреса электронной
почты
173.
Функция MAX• Возвращает наибольшее значение в
указанном столбце
Указана цена самого дорого товара
174.
Функция MINвозвращает наименьшее значение в
указанном столбце
Указана цена самого дешевого товар
175.
Функция SUMОтображает сумму значений столбца
176.
• Вычислить общую стоимость заказа покаждому элементу в таблице OrderItems,
для которых номер заказа равен 20005
177.
• Вычислить среднее значение цены поуникальным значениям в таблице Products
для поставщика DLL01
178.
• Выведите одной таблицей количествоэлементов в таблице Products, самую
высокую цены, самую низкую и среднюю
стоимость товара
179.
180.
Группировка данных181.
Группировка данных182.
Группировка данных183.
Группировка данных184.
Рекомендации к применениюGroup BY
185.
186.
187.
Фильтрация по группам• WHERE фильтрует строки, a HAVING — группы
188.
Применение группировки189.
Вывести имена всех поставщиков, которые доставляют дваили более продукта
(необходимо изменить текущий запрос)
190.
• Вывести имена всех поставщиков, которыедоставляют два или более продукта
191.
• Вывести имена всех поставщиков, которыедоставляют два или более заказа за 4
доллара и более
192.
• Вывести имена всех поставщиков, которыедоставляют два или более товара за 4
доллара и более
Этапы решения:
1) вывести наименования всех поставщиков,
которые доставляют товары за 4 доллара и
более
2) Вывести имена всех поставщиков,
которые доставляют два или более товара
за 4 доллара и более
193.
Этапы решения:1) вывести наименования всех поставщиков,
которые доставляют товары за 4 доллара и
более
194.
2) Вывести имена всех поставщиков,которые доставляют два или более товара
за 4 доллара и более
195.
2) Вывести имена всех поставщиков,которые доставляют два или более товара
за 4 доллара и более
196.
197.
Сравнение предложенийGROUP BY и ORDER BY
198.
199.
Выведите номер заказа и количество товарадля всех заказов, которые содержат три и
более товара
200.
Выведите номер заказа и количество товарадля всех заказов, которые содержат три и
более товара
201.
Отсортируем полученный результат поколичеству заказанных товаров (добавить
значение ORDER BY)
202.
Отсортируем полученный результат поколичеству заказанных товаров (добавить
значение ORDER BY)
203.
Порядок следования в инструкции Select204.
Подзапросы- запросы, вложенные в другие запросы
Пример: необходимо вывести список всех
клиентов, которые заказали товар RGAN01
205.
1) извлекаем номера всех заказов, содержащих товарRGAN01 из таблицы (ОrderItems);
206.
1) извлекаем номера всех заказов, содержащих товарRGAN01 из таблицы (ОrderItems);
SELECT order_num
FROM OrderItems
WHERE prod_id = 'RGAN01';
207.
2) получаем идентификаторы всех клиентов, которыесделали заказы, перечисленные на предыдущем шаге;
208.
2) получаем идентификаторы всех клиентов, которыесделали заказы, перечисленные на предыдущем шаге;
209.
2.1) Объединим два первых запросаПодзапросы всегда обрабатываются, начиная с самой
внутренней инструкции SELECT в направлении “изнутри
наружу”
210.
2.1) Теперь имеются все идентификаторы всех клиентов,заказавших товар RGAN01
211.
3) Получаем имя клиента и его контакт на основанииидентификатора клиента
3.1) Объединяем все три запроса
212.
213.
214.
Использование подзапросов ввычисляемых полях
Пример: Вывести общее количество
заказов, сделанных каждым клиентом из
таблицы Customers
215.
Использование подзапросов ввычисляемых полях
216.
1) извлекаем список клиентов изтаблицы Orders
(например под номером
1000000001):
217.
1.1) потом под номером1000000002
218.
1.2) потом под номерами1000000003, …, 1000000005
219.
2) Из таблицы Orders необходимо вывести атрибутыcust_name, cust_state
220.
Объединение таблицНадо ли where?
221.
Объединение таблицСамые мощные операции
222.
Объединение таблиц223.
Внутренние объединенияINNER JOIN – проверка равенства двух таблиц
224.
Объединение нескольких таблиц225.
ЗаданиеПерепишите запрос с использованием синтаксиса объединения
226.
Решение227.
Создание расширенныхобъединений
Использование псевдонимов таблиц
Создание расширенных объединений
228.
229.
Типы объединений1
Самообъединение
2
Внешнее объединение
3
Естественное объединение
230.
1Самообъединение
231.
1Самообъединение
232.
1Самообъединение
233.
ЗаданиеПеределайте
подзапрос
использованием объединений
с
234.
Решение235.
1Самообъединение
236.
2Внешнее объединение
237.
2Внешнее объединение
238.
2Внешнее объединение
239.
2Внешнее объединение
240.
2Внешнее объединение
241.
2Внешнее объединение
242.
ЗаданиеПеределайте запрос с использованием функции RIGHT
OUTER JOIN
243.
3Естественное объединение
244.
3Естественное объединение
245.
Использование объединений совместнос итоговыми функциями
246.
Использование объединений совместнос итоговыми функциями
247.
Использование объединений совместнос итоговыми функциями
248.
ЗаданиеПеределайте запрос с использованием функции LEFT
OUTER JOIN
249.
Задание250.
Решение251.
Правила создания объединений252.
Создание комбинированных запросов253.
254.
255.
256.
257.
Задание258.
259.
Задание• Переделайте запрос, используя оператор
UNION ALL
260.
Правила применения оператора UNION261.
Сортировка результатовкомбинированных запросов
262.
Добавление данных (INSERT)263.
Добавление данных (INSERT)264.
Добавление данных (INSERT)265.
Добавление данных (INSERT)266.
Добавление данных (INSERT)267.
Добавление части строки268.
Добавление части строки269.
Добавление результатов запросов270.
Добавление результатов запросов271.
Добавление результатов запросов272.
Копирование данных их одной таблицыв другую
• Чтобы скопировать содержимое какой-то
таблицы в новую таблицу используют
инструкцию SELECT INTO
273.
Копирование данных их одной таблицыв другую
274.
Копирование данных их одной таблицыв другую
275.
Копирование данных их одной таблицыв другую