Изложены фундаментальные идеи SQL и MySQL. Рассмотрены базовые принципы построения запросов и такие основы SQL, как объединения таблиц, фильтрация данных для создания расширенных запросов, форматирование запросов, построение подзапросов, генерация производных таблиц, структурирование запросов и вывод таблиц. Подробно описаны принципы анализа данных с использованием наборов данных MySQL. Представлены методики выполнения сложных запросов к базам данных. Показано использование простой математики и логики, множественных фильтров, описаны приемы агрегирования данных. Рассказывается о том, как проводить скользящий анализ, изучать временные ряды, а также управлять сложными массивами данных в MySQL.
Для разработчиков и администраторов баз данных, программистов
Эффективная работа с базами данных MySQL с помощью SQL-операций, извлечения данных и пользовательских запросов
Книга поможет вам с помощью практических советов изучить процесс создания SQL-запросов от самого начального уровня до экспертного. Вы освоите различные методы извлечения нужных сведений из баз данных MySQL.
Подробно изложены фундаментальные идеи SQL и MySQL. Вы познакомитесь с построением запросов с использованием простых, а затем более сложных объединений таблиц и постепенно освоит приемы фильтрации данных для создания расширенных запросов. Рассматриваются такие основы SQL, как форматирование запросов, построение подзапросов, генерация производных таблиц. Книга дает возможность лучше понять архитектуру баз данных MySQL на основе SQL-вычислений, реляционной логики, группировки и агрегирования данных. Рассказывается о том, как проводить скользящий анализ, изучать временные ряды, а также управлять сложными массивами данных в MySQL.
В книге:
- Подробно описаны принципы анализа данных с использованием наборов данных MySQL
- Представлены методики выполнения сложных запросов к базам данных MySQL
- Рассматриваются такие понятия SQL, как объединение таблиц, фильтрация данных, структурирование запросов и вывод таблиц
- Показано использование простой математики и логики, множественных фильтров, описаны приемы агрегирования данных
- Даны примеры грамотного использования табличных выражений, подзапросов и сложных вычислений, правильного применения расширенных методов для проведения анализа скользящих и временных рядов
- Практические примеры проводят читателя через все этапы освоения SQL — от новичка до мастера
Для кого эта книга
Эта книга предназначена для специалистов по работе с данными: разработчиков баз данных, разработчиков SQL, аналитиков данных и экспертов по бизнес-аналитике, которые хотят создавать сложные запросы и извлекать нужную аналитику из своих наборов данных. Книга также поможет умным новичкам найти и использовать готовые SQL-запросы из книги в своей работе.
Книгу “MySQL. Практические рецепты” можно купить со скидкой в интернет-магазине издательства “БХВ“.
Об авторе. 15
Об авторе рецензии. 16
Благодарности. 17
Введение. 18
Зачем нужно изучать SQL?. 18
Почему MySQL?. 19
Что представляет собой SQL?. 19
Для кого предназначена эта книга. 19
Что даст вам эта книга. 20
Как читать эту книгу. 20
Детализированный запрос. 21
Структура книги. 21
Цветные изображения. 23
Образец данных и образцы запросов. 23
Версии MySQL. 23
Теперь самое время начать работу с запросами к MySQL. 23
ГЛАВА 1. Составление основных запросов SQL.. 25
Предварительные условия. 25
- Реляционные базы данных. 26
- Запуск MySQL Workbench. 27
- Подключение к базе данных. 30
- Просмотр таблиц в базе данных. 31
- Обнаружение всех представлений в базе данных. 32
- Использование клиентской командной строки. 32
- Вывод данных в таблицу. 35
- Отображение данных из определенного поля. 38
- Поиск столбцов в таблице. 39
- Отображение данных из определенного набора полей. 40
- Использование командной строки для отображения структуры таблицы.. 41
- Изменение имени поля в выходных данных. 42
- Сортировка данных. 43
- Сортировка данных в порядке, обратном алфавитному. 46
- Применение нескольких сортировочных критериев. 47
- Ограничение количества отображаемых записей. 48
Резюме. 50
Основные знания, приобретенные в этой главе. 50
ГЛАВА 2. Использование нескольких таблиц при составлении
запросов данных. 53
Хранение данных в нескольких таблицах. 53
- Соединение таблиц. 54
- Соединение таблиц с разными именами полей и связями. 58
- Удаление дубликатов из результатов запроса. 59
- Соединение нескольких таблиц. 62
- Использование псевдонимов таблиц. 65
- Соединение нескольких таблиц. 68
- Визуализация баз данных. 70
- Использование представлений для запоминания сложных объединений таблиц 72
Резюме. 73
Основные знания, приобретенные в этой главе. 74
ГЛАВА 3. Расширенное соединение таблиц. 75
Многообразие типов соединений таблиц. 75
- LEFT JOIN и возврат всех данных из таблицы с левым соединением.. 76
- RIGHT JOIN и возврат всех данных из таблицы с правым соединением.. 79
- Соединения через промежуточные таблицы.. 81
- Использование в соединениях нескольких полей. 83
- Объединение таблицы с самой собой. 85
- Соединение таблиц по диапазонам значений. 88
- Перекрестные соединения. 91
- Объединение концепций. 92
Резюме. 93
Основные знания, приобретенные в этой главе. 93
ГЛАВА 4. Фильтрация данных. 95
Использование языка SQL для фильтрации данных. 95
- Фильтрация данных с помощью соединений. 96
- Фильтрация данных с использованием соединения нескольких таблиц. 96
- Фильтрация выводимых данных с помощью промежуточных таблиц. 99
- Фильтрация текста. 102
- Применение нескольких текстовых фильтров. 103
- Исключение элемента. 105
- Использование нескольких фильтров исключения. 106
- Фильтрация чисел, превышающих заданный порог. 108
- Фильтрация чисел ниже определенного порога. 109
- Фильтрация по значениям до определенного числа включительно. 110
- Фильтрация по диапазону значений. 111
- Использование булевых фильтров (True или False) 113
Резюме. 115
Основные знания, приобретенные в этой главе. 115
ГЛАВА 5. Применение сложных фильтров при составлении запросов. 117
Комплексные методы фильтрации. 117
- Фильтры “или… или…”. 118
- Одновременное использование нескольких отдельных критериев. 119
- Использование нескольких фильтров и исключение данных. 120
- Одновременная фильтрация текста и чисел. 122
- Одновременное применение сложных альтернативных фильтров. 123
- Поиск с учетом регистра. 126
- Отключение чувствительности к регистру в фильтрах. 127
- Поиск с использованием подстановочных знаков. 129
- Подстановочные знаки для исключения данных. 131
- Включение чувствительности к регистру в фильтрах подстановочных знаков 132
- Фильтрация данных по определенной части текста. 133
- Работа с NULL, или с незаполненными полями. 136
- Поиск с помощью регулярных выражений. 138
Резюме. 139
Основные знания, полученные в этой главе. 140
ГЛАВА 6. Выполнение простых расчетов. 141
Выполнение вычислений на языке SQL. 141
- Выполнение простых математических действий. 141
- Анализ типов данных в представлениях MySQL. 144
- Изоляция сегментов формул с использованием математики. 146
- Расчет коэффициентов. 147
- Предотвращение ошибок деления на ноль. 149
- Увеличение значений на определенный процент. 150
- Сортировка вывода по результату расчетов. 151
- Обработка недостающих данных. 153
- Фильтрация вычислений. 155
- Сложные вычисляемые фильтры.. 157
- Быстрое написание точного SQL-запроса. 160
Резюме. 161
Основные знания, полученные в этой главе. 161
ГЛАВА 7. Объединение результатов. 163
Объединение данных в SQL-запросе. 163
- Подсчет итоговых показателей таблицы.. 164
- Использование рассчитанных сумм.. 165
- Группировка суммарных показателей. 166
- Использование нескольких уровней группирования. 167
- Расчет средних значений. 169
- Подсчет сгруппированных элементов. 170
- Подсчет уникальных элементов. 172
- Отображение верхнего и нижнего числовых порогов. 173
- Групповая фильтрация. 174
- Фильтрация суммарных результатов. 175
- Выбор данных на основе суммарных результатов и определенных критериев фильтрации 176
- Сортировка по суммарным результатам.. 178
Резюме. 179
Основные знания, полученные в этой главе. 180
ГЛАВА 8. Работа с датами в MySQL.. 181
Анализ данных за определенный период времени. 181
- Фильтрация записей по дате. 182
- Фильтрация данных по диапазону дат. 183
- Способ указания дат в запросах MySQL. 185
- Расчет количества дней между двумя датами. 187
- Объединение данных по диапазону дат. 189
- Удаление элемента времени из фильтруемой даты.. 191
- Фильтрация по годам.. 193
- Фильтрация записей за несколько лет. 194
- Фильтрация данных по году и месяцу. 196
- Поиск данных по определенному кварталу. 197
- Фильтрация данных по дням недели. 199
- Поиск записей для определенной недели года. 200
- Объединение данных по дням недели определенного года. 201
- Сортировка данных по полному названию дня недели. 202
- Суммарные итоговые и средние показатели по дням года. 204
- Совокупные итоговые и средние показатели по дням месяца. 205
- Отображение обобщенных значений за месяц. 207
- Отображение суммарных данных за 75 дней до определенной даты.. 208
- Отображение данных за предыдущие три месяца. 210
- Определение текущей системной даты.. 212
Резюме. 212
Основные знания, полученные в этой главе. 213
ГЛАВА 9. Форматирование текста в результатах запроса. 215
Оптимизация вывода результата SQL-запросов. 215
- Добавление текста в выходные данные. 215
- Добавление нескольких фрагментов текста к числам.. 217
- Объединение столбцов с использованием различных разделителей. 218
- Предотвращение появления значения NULL в объединенном выводе. 221
- Соединение и группировка. 222
- Объединение столбцов. 223
- Преобразование текста в верхний регистр. 225
- Преобразование текста в нижний регистр. 226
- Извлечение нескольких символов из поля. 227
- Отображение трех символов справа от текста. 228
- Отображение заданного количества символов из определенного места текста 230
- Фильтрация записей по части поля. 231
- Фильтрация данных по определенным символам в заданной позиции внутри поля 232
- Объединение с частью поля. 234
Резюме. 235
Основные знания, полученные в этой главе. 235
ГЛАВА 10. Форматирование чисел и дат. 237
Представление чисел и дат. 237
- Отбрасывание десятичных знаков из выходных данных. 238
- Округление поля до ближайшего целого числа. 239
- Округление значения до ближайшего целого числа. 240
- Округление значения в большую или меньшую сторону до ближайшей тысячи 241
- Отображение значения в определенном числовом формате. 242
- Отображение значения в определенной валюте. 244
- Указание формата локали. 246
- Вывод даты в определенном формате. 247
- Вывод даты в формате ISO Date. 250
- Представление времени в определенном формате. 252
Резюме. 254
Основные знания, полученные в этой главе. 254
ГЛАВА 11. Использование базовой логики для улучшения анализа. 257
Применение SQL-логики. 257
- Генерирование предупреждения при превышении значения. 257
- Сокращение текста и добавление многоточий для обозначения усечения. 259
- Разработка сложных расчетных оповещений. 260
- Создание ключевых показателей эффективности. 263
- Классификация ряда элементов при отсутствии необходимых категорий
в данных. 265 - Создание специальных групп категорий. 268
- Использование нескольких специальных категорий. 270
- Распределение данных по категориям с использованием нескольких вложенных классификаций 271
- Объединение специальных категорий. 273
- Размещение значений NULL в начале или конце списка. 276
- Классификация данных по произвольным категориям.. 278
Резюме. 280
Основные знания, полученные в этой главе. 280
ГЛАВА 12. Вложенные запросы.. 283
Что такое вложенные запросы?. 283
- Добавление сводных полей к подробным наборам данных. 284
- Отображение значения в процентах общего числа. 286
- Использование вложенного запроса для фильтрации данных. 289
- Использование вложенного запроса как компонента вычисления
для фильтрации данных. 290 - Фильтрация объединенного диапазона данных с помощью нескольких вложенных запросов 293
- Фильтрация результатов объединения с помощью второго объединения. 295
- Вложенные внутренние запросы.. 296
- Использование вложенных запросов для исключения данных. 299
- Несколько вложенных внутренних запросов. 301
- Фильтрация по основным и вложенным запросам.. 304
- Применение отдельных фильтров во вложенном и основном запросах. 306
Резюме. 308
Основные знания, полученные в этой главе. 308
ГЛАВА 13. Производные таблицы.. 309
Что представляет собой производная таблица?. 309
- Использование производной таблицы для создания промежуточных вычислений 310
- Группировка и упорядочивание данных посредством пользовательской классификации 315
- Присоединение производных таблиц к другим таблицам.. 317
- Использование нескольких результатов из производной таблицы для фильтрации данных 321
- Сложные сводные производные таблицы.. 324
- Объединение нескольких производных таблиц. 326
- Использование нескольких производных таблиц для сложных объединений. 330
- Использование производных таблиц для присоединения несвязанных таблиц 333
- Сравнение данных за год с помощью производной таблицы.. 336
- Синхронизация фильтров между производной таблицей и основным запросом 338
Резюме. 340
Основные знания, полученные в этой главе. 340
ГЛАВА 14. Общие табличные выражения. 341
Оптимизация сложных запросов с помощью общих табличных выражений. 341
- Базовые общие табличные выражения. 342
- Вычисление с помощью CTE средних значений по нескольким
величинам.. 345 - Повторное использование CTE в запросе. 347
- Использование CTE в производной таблице для обеспечения двух
разных уровней объединения данных. 349 - Использование CTE для выделения данных из отдельного набора
на другом уровне детализации. 352 - Использование нескольких общих табличных выражений. 354
- Вложенные общие табличные выражения. 357
- Использование нескольких общих табличных выражений для сравнения разрозненных наборов данных 359
Резюме. 363
Основные знания, полученные в этой главе. 363
ГЛАВА 15. Коррелированные вложенные запросы.. 365
Зачем использовать коррелированные вложенные запросы?. 365
- Простые коррелированные вложенные запросы.. 366
- Коррелированные вложенные запросы для отображения процентных
долей определенного итогового значения. 368 - Сравнение наборов данных с помощью коррелированного вложенного запроса 369
- Дублирование вывода коррелированного вложенного запроса в результатах выполнения запроса 371
- Агрегированные коррелированные вложенные запросы.. 373
- Использование коррелированных вложенных запросов для фильтрации данных по совокупному значению.. 375
- Использование коррелированных вложенных запросов для обнаружения записей 377
- Использование коррелированного вложенного запроса для исключения данных 379
- Сложные объединения в коррелированных вложенных запросах. 380
- Использование коррелированного вложенного запроса для проверки значений в разных таблицах 383
Резюме. 384
Основные знания, полученные в этой главе. 384
ГЛАВА 16. Манипулирование набором данных. 387
Применение наборов данных для объединения и сопоставления данных. 387
- Чтение данных из нескольких одинаково структурированных таблиц
с помощью оператора UNION.. 388 - Поиск и определение одинаковых данных в нескольких таблицах. 390
- Выделение общих элементов из нескольких подмножеств данных. 392
- Объединение в одном вложенном запросе нескольких одинаковых
таблиц. 395 - Выделение из двух наборов данных неодинаковых записей. 396
- Отображение полных записей для несовпадающих данных. 398
- Отображение полных записей для одинаковых данных. 401
Резюме. 404
Основные знания, полученные в этой главе. 404
ГЛАВА 17. Использование SQL для более сложных вычислений. 407
Дополнительные методы расчета. 407
- Расчет процентного соотношения по каждой записи в наборе данных. 408
- Повторное использование нескольких вложенных запросов. 409
- Отбрасывание дробной части числа из результатов вычислений. 412
- Числовые типы данных. 413
- Преобразование типа отформатированных исходных данных в числовой тип, пригодный для использования. 415
- Проверка сбоев при удалении символов форматирования. 418
- Проверка наличия значений, не являющихся числовыми. 419
- Вычисление с помощью оператора MOD остатка от деления. 420
- Создание финансовых расчетов. 423
- Использование таблицы для получения последовательного списка
чисел. 426 - Формирование случайной выборки из набора данных. 428
Резюме. 430
Основные знания, полученные в этой главе. 430
ГЛАВА 18. Сегментирование и классификация данных. 433
Ранжирование и сегментация данных. 433
- Упорядочивание данных по рангам.. 434
- Создание нескольких ранжированных групп. 436
- Создание нескольких рейтинговых групп и подгрупп. 438
- Фильтрация данных по рейтингу элементов. 440
- Классификация данных в строгом порядке ранжирования. 442
- Разделение данных на децили. 446
- Построение значений для перцентиля. 448
- Извлечение данных из определенного квинтиля. 450
- Возвращение верхнего N процента набора данных. 452
- Вычисление общих продаж.. 454
- Классификация данных с помощью функции PERCENT_RANK() 456
Резюме. 457
Основные знания, полученные в этой главе. 458
ГЛАВА 19. Скользящий анализ. 459
Промежуточные итоговые и средние значения, промежуточные подсчеты
и сравнительные значения. 459
- Добавление текущих итогов. 460
- Использование оконных функций в обобщенном запросе. 462
- Перезагрузка текущих итогов. 464
- Оконные функции во вложенном запросе. 466
- Добавление уникальных идентификаторов на лету с помощью
функции ROW_NUMBER() 469 - Отображение записей с отсутствующими данными. 471
- Отображение полного диапазона дат и связанных с ними данных. 474
- Сравнение данных с данными из предыдущих записей. 477
- Сравнение данных по времени с помощью функций FIRST_VALUE()
и LAST_VALUE() 481 - Отображение изменяющихся средних значений по заданному
количеству записей. 483 - Отображение первой и последних четырех продаж по каждому
клиенту. 486
Резюме. 488
Основные знания, полученные в этой главе. 488
ГЛАВА 20. Анализ данных, изменяющихся с течением времени. 491
Временной анализ. 491
- Обобщенные значения за год до настоящего времени. 492
- Объединение значений за месяц до настоящего времени. 494
- Возврат суммарных значений за квартал и до настоящего времени. 496
- Выделение данных за предыдущий месяц. 498
- Использование производной таблицы для сравнения данных
со значениями предыдущего года. 500 - Нахождение общей суммы за каждый будний день в течение года. 502
- Подсчет количества выходных дней между двумя датами. 507
- Совокупные данные за последний день месяца. 509
- Обобщенные данные на последнюю пятницу месяца. 512
- Анализ временных отрезков в виде лет, месяцев и дней. 514
- Выделение временных периодов из элементов даты и времени. 517
- Данные списка по времени суток. 519
- Объединение данных по часовым диапазонам.. 521
- Обобщенные данные с разбивкой по часам по четвертям.. 523
Резюме. 524
Основные знания, полученные в этой главе. 525
ГЛАВА 21. Вывод комплексных данных. 527
Отображение комплексных данных с помощью SQL-запроса. 527
- Создание сводной таблицы.. 528
- Создание сводной таблицы, отображающей несколько сгруппированных строк 531
- Отмена группировки данных. 534
- Добавление итогов в сводные запросы.. 537
- Создание понятных таблиц, включающих итоговые данные
и промежуточные итоги. 540 - Работа с данными иерархического типа. 542
- Создание иерархий с отступом.. 545
- Замена в итоговом результате аббревиатур полным текстом.. 546
- Замена определенного количества символов другим текстом.. 548
- Создание списка из нескольких записей с разделителями-запятыми. 549
- Экспорт списков, разделенных запятыми. 552
- Экспорт списков с заголовками. 555
- Экспорт списков фиксированной ширины.. 558
- Удаление лишних пробелов из выходных данных. 560
Резюме. 561
Основные знания, полученные в этой главе. 562
ПРИЛОЖЕНИЯ.. 563
Приложение 1. Установка MySQL.. 565
Установка MySQL. 565
- Установка MySQL в операционной системе Windows. 565
- Установка MySQL на Macintosh. 573
- Установка MySQL в операционной системе Linux. 574
Приложение 2. Установка MySQL Workbench. 576
Установка MySQL Workbench в операционной системе Windows. 576
- Установка MySQL под операционную систему Windows. 576
- Установка приложения MySQL Workbench на компьютере Macintosh. 581
- Запуск MySQL Workbench. 581
- Создание соединения с MySQL. 582
Приложение 3. Настройка базы данных с примерами. 584
- Загрузка примеров под операционную систему Windows. 584
- Загрузка выборочных данных в базу данных PrestigeCars. 584
- Открытие примеров запросов. 585
Предметный указатель. 587
-
MySQL. Практические рецепты
1690 ₽
1200 ₽
Адам Аспин (Adam Aspin) — аналитик данных с более чем 25-летним стажем. Работал в таких областях, как финансы, фармацевтика, коммунальные услуги, банковское дело, телекоммуникации и розничная торговля. Автор нескольких книг по различным аспектам платформы данных Microsoft, а также многочисленных публикаций на порталах SQLServerCentral.com и Simple-Talk. Регулярно выступает на различных мероприятиях, посвященных SQL Server, таких как SQLBits, SQL Saturdays/User groups и других.