Similar presentations:
Виды Зависимостей между атрибутами
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%D1%8
0%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.
Расширенная фильтрация данныхоператор AND
119.
120.
Оператор OR1. Вывести название и цены всех товаров,
изготовленных
одним
из
указанных
поставщиков (DLL01 и BRS01)
121.
Решение122.
Задание• Вывести
список
всех
предлагаемых
поставщиками DLL01 и BRS01 товаров, цена
которых – 10 долларов и выше
123.
Внимание• Вначале обрабатываются логические
операторы AND, а потом – логические
операторы OR
124.
Решение (выбрать правильный)125.
Оператор INОператор IN служит для указания диапазона
условий, любое из которых может быть
выполнено. При этом значения, заключенные
в скобки, перечисляются через запятую.
126.
Инструкция SELECT извлекает все товары,предлагаемые поставщиками DLL01 и BRS01.
После оператора IN указан список значений
через запятую, а весь список заключен в
скобки.
127.
128.
Преимущества оператора INПри работе с длинными списками необходимых значений
синтаксис логического оператора IN гораздо понятнее.
При использовании оператора IN совместно с операторами
AND и OR гораздо легче управлять порядком обработки.
Операторы IN почти всегда быстрее обрабатываются, чем
списки операторов OR (впрочем, это сложно заметить в случае
коротких списков).
Самое большое преимущество логического оператора IN
заключается в том, что в нем может содержаться еще одна
инструкция SELECT, а это позволяет создавать очень гибкие
предложения WHERE.
129.
Оператор NOTКлючевое
слово,
применяемое
в
предложении where для отрицания какоголибо условия.
Пример: извлекается
список
товаров,
предлагаемых всеми поставщиками, кроме
DLL01.
130.
Логический оператор NOT отрицаетусловие, следующее за ним. Поэтому
СУБД извлекает не те значения vend_id,
которые совпадают с DLL01, а все
остальные.
131.
Фильтрация с использованиемметасимволов
132.
%133.
134.
135.
1. Вывести название товаров, названия вкоторых начинаются на F и заканчиваются на у.
2. Вывести еmail в которых есть сочетание
@forte.com
136.
137.
Метасимвол «знакподчеркивания»(_)
Еще
одним
полезным
метасимволом
является знак подчеркивания (_). Он
используется так же, как и знак %, но при
этом учитывается не множество символов, а
только один.
1. Вывести названия товаров в которых
неизвестны
первые
два
значения
и
заканчивается на словосочетания inch teddy
bear.
2. Повторите первое задание только с
использованием метасимвола % .
138.
Метасимвол«квадратные скобки» ([])
служит для указания набора символов,
каждый из которых должен совпадать с
искомым значением, причем в точно
указанном месте (в позиции метасимвола).
1. Найти всех клиентов
начинаются на J или M
имена
которых
139.
Метасимвол«квадратные скобки» ([])
служит для указания набора символов,
каждый из которых должен совпадать с
искомым значением, причем в точно
указанном месте (в позиции метасимвола).
1. Найти всех клиентов
начинаются на J или M
имена
которых
140.
Метасимвол, обозначающийпротивоположное действие (^)
• 1. Найти всех клиентов имена которых НЕ
начинаются на J или M
141.
Советы по использованиюметасимволов
• Не злоупотребляйте метасимволами. Если
можно использовать другой оператор поиска,
задействуйте его.
• При использовании метасимволов старайтесь
по возможности не вставлять их в начало
шаблона поиска. Шаблоны, начинающиеся с
метасимволов, обрабатываются медленнее
всего.
• Внимательно
следите
за
позицией
метасимволов. Если они находятся не на своем
месте, будут извлечены не те данные.
142.
Создание вычисляемых полейПримеры использования
143.
КонкатинацияКомбинирование
значений
(путем
присоединения их друг к другу) для получения
одного “длинного” значения.
SQL Server для конкатинации использует
оператор «+»
Пример: создать таблицу, в которой в одном
столбце объединены записи из нескольких
столбцов (по условию отчета)
144.
• Чтобы убрать пробелы справа от указанного значения, необходимоиспользовать функцию RTRIM (). Отбрасывает все пробелы справа от
указанного значения
• R- право по-английски
145.
146.
147.
Псевдоним- это альтернативное имя для поля или значения.
Псевдонимы
присваиваются
с
помощью
ключевого слова AS.
Рассмотрим следующую инструкцию SELECT.
148.
149.
Математические вычисления150.
151.
Математические операторы в SQL152.
Использование функций обработкиданных
Функции — это операции, которые чаще всего
приходится выполнять над данными, включая
различные преобразования и вычисления.
153.
Применение функций154.
Функции для работы с текстом155.
Наиболее часто используемыетекстовые функции
156.
Применение функции SOUNDEX157.
158.
Функции для работы сдатой/временем
• Извлечь список всех заказов, сделанных в
2012 году
159.
Функции для работы с числами160.
Использование итоговых функций161.
Итоговые функции162.
AVG163.
Самостоятельная работа1. Найти среднюю цену товара,
предлагаемых поставщиком DLL01.
164.
165.
Функция COUNTПодсчитывает количество строк:
- общее число строк в таблице
- число
строк,
удовлетворяющих
определенному критерию
166.
• Общее количество клиентов, содержащихсяв таблице Castomers
1. Клиенты, имеющие адреса электронной
почты
167.
Функция MAX• Возвращает наибольшее значение в
указанном столбце
Указана цена самого дорого товара
168.
Функция MINвозвращает наименьшее значение в
указанном столбце
Указана цена самого дешевого товара
169.
Функция SUMОтображает сумму значений столбца
170.
• Вычислить общую стоимость заказа покаждому элементу в таблице OrderItems,
для которых номер заказа равен 20005
171.
• Вычислить среднее значение цены поуникальным значениям в таблице Products
для поставщика DLL01
172.
• Выведите одной таблицей количествоэлементов в таблице Products, самую
высокую цены, самую низкую и среднюю
стоимость товара
173.
Группировка данных174.
Группировка данных175.
Группировка данных176.
Группировка данных177.
Рекомендации к применениюGroup BY
178.
179.
180.
Фильтрация по группам• WHERE фильтрует строки, a HAVING — группы
181.
Применение группировки182.
Вывести имена всех поставщиков, которыедоставляют два или более продукта
(необходимо изменить текущий запрос)
183.
• Вывести имена всех поставщиков, которыедоставляют два или более продукта
184.
• Вывести имена всех поставщиков, которыедоставляют два или более заказа за 4
доллара и более
185.
• Вывести имена всех поставщиков, которыедоставляют два или более товара за 4
доллара и более
Этапы решения:
1) вывести наименования всех поставщиков,
которые доставляют товары за 4 доллара и
более
2) Вывести имена всех поставщиков, которые
доставляют два или более товара за 4
доллара и более
186.
Этапы решения:1) вывести наименования всех поставщиков,
которые доставляют товары за 4 доллара и
более
187.
2) Вывести имена всех поставщиков, которыедоставляют два или более товара за 4
доллара и более
188.
2) Вывести имена всех поставщиков, которыедоставляют два или более товара за 4
доллара и более
189.
190.
Сравнение предложенийGROUP BY и ORDER BY
191.
192.
Выведите номер заказа и количество товарадля всех заказов, которые содержат три и
более товара
193.
Отсортируем полученный результат поколичеству заказанных товаров (добавить
значение ORDER BY)
194.
Порядок следования в инструкцииSelect
195.
Подзапросы- запросы, вложенные в другие запросы
Пример: необходимо вывести список всех
клиентов, которые заказали товар RGAN01
196.
1) извлекаем номера всех заказов, содержащих товар RGAN01из таблицы (ОrderItems);
197.
1) извлекаем номера всех заказов, содержащих товар RGAN01из таблицы (ОrderItems);
SELECT order_num
FROM OrderItems
WHERE prod_id = 'RGAN01';
198.
2) получаем идентификаторы всех клиентов, которые сделализаказы, перечисленные на предыдущем шаге;
199.
2) получаем идентификаторы всех клиентов, которые сделализаказы, перечисленные на предыдущем шаге;
200.
2.1) Объединим два первых запросаПодзапросы всегда обрабатываются, начиная с самой
внутренней инструкции SELECT в направлении “изнутри
наружу”
201.
2.1) Теперь имеются все идентификаторы всех клиентов,заказавших товар RGAN01
202.
3) Получаем имя клиента и его контактидентификатора клиента
3.1) Объединяем все три запроса
на основании
203.
204.
205.
Использование подзапросов ввычисляемых полях
Пример: Вывести общее количество заказов,
сделанных каждым клиентом из таблицы
Customers
206.
Использование подзапросов ввычисляемых полях
207.
1) извлекаем список клиентов изтаблицы Orders
(например под номером
1000000001):
208.
1.1) потом под номером1000000002
209.
1.2) потом под номерами1000000003, …, 1000000005
210.
2) Из таблицы Orders необходимо вывести атрибуты cust_name,cust_state
211.
Объединение таблицНадо ли where?
212.
Объединение таблицСамые мощные операции
213.
Объединение таблиц214.
Внутренние объединенияINNER JOIN – проверка равенства двух таблиц
215.
Объединение нескольких таблиц216.
ЗаданиеПерепишите запрос с использованием синтаксиса объединения
217.
Решение218.
Создание расширенныхобъединений
Использование псевдонимов таблиц
Создание расширенных
объединений
219.
220.
Типы объединений1
Самообъединение
2
Внешнее объединение
3
Естественное объединение
221.
1Самообъединение
222.
1Самообъединение
223.
1Самообъединение
224.
ЗаданиеПеределайте
подзапрос
использованием объединений
с
225.
1Самообъединение
226.
2Внешнее объединение
227.
2Внешнее объединение
228.
2Внешнее объединение
229.
2Внешнее объединение
230.
2Внешнее объединение
231.
2Внешнее объединение
232.
ЗаданиеПеределайте запрос с использованием функции RIGHT
OUTER JOIN
233.
3Естественное объединение
234.
3Естественное объединение
235.
Использование объединенийсовместно с итоговыми функциями
236.
Использование объединенийсовместно с итоговыми функциями
237.
Использование объединенийсовместно с итоговыми функциями
238.
ЗаданиеПеределайте запрос с использованием функции LEFT
OUTER JOIN
239.
Задание240.
Решение241.
Правила создания объединений242.
Создание комбинированныхзапросов
243.
244.
245.
246.
247.
Задание248.
249.
Задание• Переделайте запрос, используя оператор
UNION ALL
250.
Правила применения оператораUNION
251.
Сортировка результатовкомбинированных запросов
252.
Добавление данных (INSERT)253.
Добавление данных (INSERT)254.
Добавление данных (INSERT)255.
Добавление данных (INSERT)256.
Добавление данных (INSERT)257.
Добавление части строки258.
Добавление части строки259.
Добавление результатов запросов260.
Добавление результатов запросов261.
Добавление результатов запросов262.
Копирование данных их однойтаблицы в другую
• Чтобы скопировать содержимое какой-то
таблицы в новую таблицу используют
инструкцию SELECT INTO
263.
Копирование данных их однойтаблицы в другую
264.
Копирование данных их однойтаблицы в другую
265.
Копирование данных их однойтаблицы в другую
266.
Обновление и удаление данных267.
Обновление и удаление данных268.
Обновление и удаление данных269.
Обновление и удаление данных270.
Удаление данных271.
Удаление данных272.
Рекомендации273.
Рекомендации274.
Задание для самостоятельнойработы (Компьютерная фирма)
275.
Задание для самостоятельнойработы
Таблица Product представляет производителя (maker), номер
модели (model) и тип ('PC' - ПК, 'Laptop' - ПК-блокнот или 'Printer' принтер). Предполагается, что номера моделей в таблице Product
уникальны для всех производителей и типов продуктов.
В таблице PC для каждого ПК, однозначно определяемого
уникальным кодом – code, указаны модель – model (внешний ключ к
таблице Product), скорость - speed (процессора в мегагерцах), объем
памяти - ram (в мегабайтах), размер диска - hd (в гигабайтах),
скорость считывающего устройства - cd (например, '4x') и цена - price.
Таблица Laptop аналогична таблице РС за исключением того, что
вместо скорости CD содержит размер экрана -screen (в дюймах).
В таблице Printer для каждой модели принтера указывается,
является ли он цветным - color ('y', если цветной), тип принтера - type
(лазерный – 'Laser', струйный – 'Jet' или матричный – 'Matrix') и цена price.
276.
Задание для самостоятельнойработы
Products
insert into Product values('B','1121','PC')
insert into Product values('A','1232','PC')
insert into Product values('A','1233','PC')
insert into Product values('E','1260','PC')
insert into Product values('A','1276','Printer')
insert into Product values('D','1288','Printer')
insert into Product values('A','1298','Laptop')
insert into Product values('C','1321','Laptop')
insert into Product values('A','1401','Printer')
insert into Product values('A','1408','Printer')
insert into Product values('D','1433','Printer')
insert into Product values('E','1434','Printer')
insert into Product values('B','1750','Laptop')
insert into Product values('A','1752','Laptop')
insert into Product values('E','2113','PC')
insert into Product values('E','2112','PC')
277.
Задание для самостоятельнойработы
PC
insert into PC values(1,'1232',500,64,5,'12x',600)
insert into PC values(2,'1121',750,128,14,'40x',850)
insert into PC values(3,'1233',500,64,5,'12x',600)
insert into PC values(4,'1121',600,128,14,'40x',850)
insert into PC values(5,'1121',600,128,8,'40x',850)
insert into PC values(6,'1233',750,128,20,'50x',950)
insert into PC values(7,'1232',500,32,10,'12x',400)
insert into PC values(8,'1232',450,64,8,'24x',350)
insert into PC values(9,'1232',450,32,10,'24x',350)
insert into PC values(10,'1260',500,32,10,'12x',350)
insert into PC values(11,'1233',900,128,40,'40x',980)
insert into PC values(12,'1233',800,128,20,'50x',970)
278.
Задание для самостоятельнойработы
Laptop
insert into Laptop values(1,'1298',350,32,4,700,11)
insert into Laptop values(2,'1321',500,64,8,970,12)
insert into Laptop values(3,'1750',750,128,12,1200,14)
insert into Laptop values(4,'1298',600,64,10,1050,15)
insert into Laptop values(5,'1752',750,128,10,1150,14)
insert into Laptop values(6,'1298',450,64,10,950,12)
279.
Задание для самостоятельнойработы
Printer
insert into Printer values(1,'1276','n','Laser',400)
insert into Printer values(2,'1433','y','Jet',270)
insert into Printer values(3,'1434','y','Jet',290)
insert into Printer values(4,'1401','n','Matrix',150)
insert into Printer values(5,'1408','n','Matrix',270)
insert into Printer values(6,'1288','n','Laser',400)
280.
Задание для самостоятельнойработы
Запросы:
1. Найдите номер модели, скорость и размер жесткого
диска для всех ПК стоимостью менее 500 дол.
Вывести: model, speed и hd
281.
Задание для самостоятельнойработы
Запросы:
2. Найдите производителей принтеров. Вывести:
maker
282.
Задание для самостоятельнойработы
Запросы:
3. Найдите номер модели, объем памяти и
размеры
которых
экранов ПК-блокнотов,
превышает
1000
цена
дол.
283.
Задание для самостоятельнойработы
Запросы:
4. Найдите все записи таблицы Printer для
цветных принтеров.
284.
Задание для самостоятельнойработы
Запросы:
Найдите номер модели, скорость и
размер жесткого диска ПК, имеющих 12x
или 24x CD и цену менее 600 дол.
5.
285.
Задание для самостоятельнойработы
Запросы:
6. Для каждого производителя, выпускающего
ПК-блокноты c объёмом жесткого диска не
менее 10 Гбайт, найти скорости таких ПКблокнотов. Вывод: производитель, скорость.
286.
Задание для самостоятельнойработы
Запросы:
7. Найдите номера моделей и цены всех
имеющихся в продаже продуктов (любого
типа) производителя B (латинская буква).
287.
Задание для самостоятельнойработы
Запросы:
8. Найдите производителя, выпускающего
ПК, но не ПК-блокноты.
288.
Задание для самостоятельнойработы
Запросы:
Найдите производителей ПК с
процессором не менее 450 Мгц. Вывести:
Maker
9.
289.
Задание для самостоятельнойработы
Запросы:
10. Найдите модели принтеров,
имеющих самую высокую цену.
Вывести: model, price
290.
Задание для самостоятельнойработы
Запросы:
11. Найдите среднюю скорость ПК.
291.
Задание для самостоятельнойработы
Запросы:
12. Найдите среднюю скорость ПКблокнотов, цена которых превышает
1000 дол.
292.
Задание для самостоятельнойработы
Запросы:
13. Найдите среднюю скорость ПК,
выпущенных производителем A.
293.
Задание для самостоятельнойработы
Запросы:
14. Для каждого производителя, имеющего
модели в таблице Laptop, найдите средний
размер экрана выпускаемых им ПКблокнотов. Вывести: maker, средний размер
экрана.
294.
Задание для самостоятельнойработы
Запросы:
15. Найдите размеры жестких дисков,
совпадающих у двух и более PC.
Вывести: HD
295.
Задание для самостоятельнойработы
Запросы:
16.
Найдите
производителей,
выпускающих по меньшей мере три
различных модели ПК. Вывести:
Maker, число моделей ПК.
296.
Задание для самостоятельнойработы
Запросы:
17. Найдите максимальную цену ПК,
выпускаемых каждым производителем, у
которого есть модели в таблице PC.
Вывести: maker, максимальная цена.
297.
Задание для самостоятельнойработы
Запросы:
18. Для каждого значения скорости ПК,
превышающего 600 МГц, определите
среднюю цену ПК с такой же скоростью.
Вывести: speed, средняя цена.
298.
Задание для самостоятельнойработы
Запросы:
Найдите производителей, которые
производили
бы
как
ПК
со скоростью не менее 750 МГц, так и ПКблокноты со скоростью не менее 750 МГц.
Вывести: Maker
19.
299.
Задание для самостоятельнойработы
Запросы:
20. Используя таблицу Product, определить
количество производителей, выпускающих
по одной модели.
300.
Задание для самостоятельнойработы
Запросы:
21. Перечислите номера моделей любых
типов, имеющих самую высокую цену по
всей имеющейся в базе данных продукции.
301.
Задание для самостоятельнойработы
Запросы:
22. Найдите производителей принтеров,
которые производят ПК с наименьшим
объемом RAM и с самым быстрым
процессором среди всех ПК, имеющих
наименьший объем RAM. Вывести: Maker
302.
Задание для самостоятельнойработы
Запросы:
23. Найдите среднюю цену ПК и ПК-
блокнотов, выпущенных производителем
A (латинская буква). Вывести: одна общая
средняя цена.
303.
Задание для самостоятельнойработы (Фирма вторсырья)