Устройство ИНТЕРНЕТА,
HTTP, HTML, верстка
Веб-сервер�Лекции 1 и 2�ЛР 1
Работа с данными�PHP, MySQL, веб-формы, фильтрация данных�Лекции 3 и 4�ЛР 2
Лекция 4: �Введение в базы данных. CRUD на SQL. Join'ы и агрегирующие функции
intervolga.ru/school/
Степан Александрович Овчинников,
к.т.н., ген.директор, MVP 1C-Битрикс
Зачем нужны БД?
Изучим
Видео про БД от mail.ru
https://www.youtube.com/watch?v=SfYaAQ9-RnE&t=1s
https://www.youtube.com/watch?v=dGwkG2VyDTY&t=1s
https://www.youtube.com/watch?v=nbmEBvoVAp0&t=1s
https://www.youtube.com/watch?v=XkS3937Xn8M&t=1s
https://www.youtube.com/watch?v=4Tgvd6NPufs&t=1s
https://www.youtube.com/watch?v=9yWZ-LIsAII&t=1s
https://www.youtube.com/watch?v=HYg6O_YaFEk&t=1s
https://www.youtube.com/watch?v=ocmHxM52CLo&t=1s
Лидеры рынка реляционных БД
Есть три явных лидера по числу успешных кейсов в мире СУРБД.
MS, Oracle, MySQL и ее форки
MySQL — бесплатная open-source промышленная СУРБД, сопоставимая с конкурентами по возможностям.
В web-проектах занимает более 50% рынка.
MySQL – почти 50% веб-сайтов
MySQL – почти 50% веб-сайтов
А в РФ - 89%
MySQL
89%
В 2008 Sun Microsystems приобрела MySQL AB за 1 млрд долларов
В 2010 Oracle приобрела Sun Microsystems за 7,4 млрд долларов
В 2008 Sun Microsystems приобрела MySQL AB за 1 млрд долларов
В 2010 Oracle приобрела Sun Microsystems за 7,4 млрд долларов
Что должен знать профессионал про MySQL
Берем матрицу компетенций веб-разработчика
Стажер
Основы Mysql
Типы таблиц Mysql
Типы данных
типы join-ов
Junior
Select со всеми конструкциями, включая Join
Применение Alter
Отношение многие ко многим
Индексы, оптимизация
Работа с СУБД в консоли
Экспорт/Импорт данных
Middle и Senior
Middle
Настройка прав доступа
Знание основных функций в операторах SQL
Кэширование в MySQL
Триггеры
Проектирование структуры БД
Хранимые процедуры
Модели (4 шт) хранения деревьев
Нормализация/Денормализация
Senior
Транзакции, уровни изоляции
Репликации
MySQL - Стажер
Основы Mysql
http://www.mysql.ru/docs/ilyin/
http://www.mysql.ru/docs/man/Data_Definition.html
http://www.mysql.ru/docs/man/Data_Manipulation.html
http://www.mysql.ru/docs/man/Functions.html
Типы таблиц Mysql
https://habrahabr.ru/post/64851/
http://itif.ru/otlichiya-myisam-innodb/
http://www.mysql.ru/docs/man/Table_types.html
https://habrahabr.ru/post/108104/
https://ruhighload.com/%d0%a1%d1%80%d0%b0%d0%b2%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5+innodb+%d0%b8+myisam
Типы данных
https://vk.com/@websvirep-tipy-dannyh-v-mysql
http://www.mysql.ru/docs/man/Column_types.html
https://dev.mysql.com/doc/refman/5.7/en/data-types.html
Типы join-ов
https://vk.com/@websvirep-tipy-joinov-v-mysql
https://ru.wikipedia.org/wiki/Join_%28SQL%29
http://www.skillz.ru/dev/php/article-Obyasnenie_SQL_obedinenii_JOIN_INNER_OUTER.html
В описании формата запросов https://dev.mysql.com/doc/refman/5.7/en/join.html обратить внимание на возможные сочетания слов left/right/inner/outer
MySQL - Junior
Select со всеми конструкциями, включая Join
http://www.mysql.ru/docs/man/SELECT.html
Применение Alter
http://www.mysql.ru/docs/man/ALTER_TABLE.html
http://webew.ru/articles/2125.webew
http://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html
http://oracleplsql.ru/alter-table.html
Отношение многие ко многим
https://vk.com/@websvirep-mysql-otnoshenie-mnogie-ko-mnogim
Индексы, оптимизация
http://www.mysql.ru/docs/man/MySQL_indexes.html
Работа с СУБД в консоли
Экспорт/Импорт данных
https://rusadmin.biz/bloknot/import-i-eksport-bd-mysql-pri-pomoshhi-konsoli/
MySQL - Middle
Настройка прав доступа
https://geeksmagazine.org/post/7/kak-sozdat-polzovatelya-i-dat-emu-prava-v-mysql
Знание основных функций в операторах SQL
Кэширование в MySQL
http://adminunix.ru/ke-shirovanie-zaprosov-v-mysql/
https://habr.com/post/41166/
Триггеры
https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html
Проектирование структуры БД
Хранимые процедуры
https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html
Модели (4 шт) хранения деревьев
https://www.slideshare.net/billkarwin/models-for-hierarchical-data
https://cpiv.bitrix24.ru/~fEu49
Нормализация/Денормализация
Разберем как это работает по шагам
Рекомендую sql-academy.org
Далее будем разбирать сквозной пример
Преподаватели
Занятия
Студенты
Группы
Таблица и select
Select c фильтром
Select c фильтром и сортировкой
Фильтрация по 2 полям
Связь двух таблиц
Связь двух таблиц
Разберем подробнее как работает join
Это условие объединения
Теоретически условие объединения может быть любым
А если НЕ написать условие объединения?
Декартово произведение – ”каждый с каждым”
Допустим есть таблицы А, В, С.
В каждой по 10 записей.
Сколько записей вернет запрос�
Select * from A
inner join B
inner join C�
?
Декартово произведение – ”каждый с каждым”
Допустим есть таблицы А, В, С.
В каждой по 10 записей.
Сколько записей вернет запрос�
Select * from A
inner join B
inner join C�не 10
и не 30
10*10*10=1000
Объединение и фильтрация
Структура БД. Понятие “Урок” и связи с другими таблицами
Собираем человеко-понятную запись об уроке. Урок+преподаватель
Собираем человеко-понятную запись об уроке. Урок+преподаватель+класс
Запись об уроке. Добавим фильтр и сортировку
Добавление �записи
Left join
Left join с условием
Select c подсчетом количества
Сколько уроков в расписании проводится в кабинете 13?
Агрегирующие функции
Агрегирующие функции
Общая стоимость заказов
Операция удаления
Удаление без where опасно!
Update c фильтром
Update без фильтра – опасен!
Решаем задачи и практикуемся
Учебная БД
1. Компьютерная фирма
Схема БД состоит из четырех отношений:
Product(maker, model, ctype)
PC(code, model, speed, ram, hd, cd, price)
Laptop(code, model, speed, ram, hd, screen, price)
Printer(code, model, color, ptype, price)
Отношение Product представляет производителя (maker), номер модели (model) и тип (PC - ПК, Laptop - ПК-блокнот или Printer - принтер). Предполагается, что номера моделей уникальны для всех производителей и типов продуктов. В отношении PC для каждого номера модели, обозначающего ПК, указаны скорость -speed (процессора в мегагерцах), общий объем RAM (в мегабайтах), размер диска -hd (в гигабайтах), скорость считывающего устройства CD (например, 4х) и цена - price. Отношение Laptop аналогично отношению РС за исключением того, что вместо скорости CD содержится размер экрана -screen (в дюймах). В отношении Printer для каждой модели принтера указывается, является ли он цветным - color (\'y\', если цветной), тип принтера - ptype (лазерный - Laser, струйный - Jet или матричный - Matrix) и цена.
Схема данных
Задачи
1. Найдите номер модели, скорость и размер жесткого диска для всех ПК стоимостью менее 500 дол. Вывести: model, speed и hd
Ответ
1. Найдите номер модели, скорость и размер жесткого диска для всех ПК стоимостью менее 500 дол. Вывести: model, speed и hd
Select model , speed, hd From pc Where price < 500
Задачи
1. Найдите номер модели, скорость и размер жесткого диска для всех ПК стоимостью менее 500 дол. Вывести: model, speed и hd
Задачи
1. Найдите номер модели, скорость и размер жесткого диска для всех ПК стоимостью менее 500 дол. Вывести: model, speed и hd
Select model , speed, hd From pc Where price < 500
Задачи
3. Найдите номер модели, объем памяти и размеры экранов ПК-блокнотов, цена которых превышает 1000 дол.
Задачи
3. Найдите номер модели, объем памяти и размеры экранов ПК-блокнотов, цена которых превышает 1000 дол.
select model, ram, screen from laptop where price > 1000
Задачи
Найдите номер модели, скорость и размер жесткого диска ПК, имеющих 12x или 24x CD и цену менее 600 дол.
Задачи
Найдите номер модели, скорость и размер жесткого диска ПК, имеющих 12x или 24x CD и цену менее 600 дол.
Select model , speed , hd from pc where (cd = '12x' or cd = '24x') and price < 600
Задачи
Найдите номер модели, скорость и размер жесткого диска ПК, имеющих 12x или 24x CD и цену менее 600 дол.
Задачи
Найдите номер модели, скорость и размер жесткого диска ПК, имеющих 12x или 24x CD и цену менее 600 дол.
Select model , speed , hd from pc where (cd = '12x' or cd = '24x') and price < 600
Задачи
Найдите номер модели, скорость и размер жесткого диска ПК, имеющих 12x или 24x CD и цену менее 600 дол.
Задачи
Найдите номер модели, скорость и размер жесткого диска ПК, имеющих 12x или 24x CD и цену менее 600 дол.
Select model ,speed , hd from pc where (cd = '12x' or cd = '24x') and price < 600
Задачи
Укажите производителя и скорость для тех ПК-блокнотов, которые имеют жесткий диск объемом не менее 10 Гбайт.
Задачи
Укажите производителя и скорость для тех ПК-блокнотов, которые имеют жесткий диск объемом не менее 10 Гбайт.
Select maker, speed from Product inner join Laptop on Product.model = Laptop.model
where hd >= 10
Задача 2. Пользователи и лайки
Есть пользователи (id, имя) и они могут ставить друг другу лайки.
Задавайте вопросы.
Алексей Эдуардович Шкарупа, �руководитель отдела управления проектами
Степан Александрович Овчинников
ген.директор, к.т.н., MVP 1C-Битрикс
вертикальная оцифровка бизнеса