Опубликовано

Вышла книга “MySQL. Практические рецепты”

MySQL. Практические рецепты

Изложены фундаментальные идеи 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

  1. Реляционные базы данных. 26
  2. Запуск MySQL Workbench. 27
  3. Подключение к базе данных. 30
  4. Просмотр таблиц в базе данных. 31
  5. Обнаружение всех представлений в базе данных. 32
  6. Использование клиентской командной строки. 32
  7. Вывод данных в таблицу. 35
  8. Отображение данных из определенного поля. 38
  9. Поиск столбцов в таблице. 39
  10. Отображение данных из определенного набора полей. 40
  11. Использование командной строки для отображения структуры таблицы.. 41
  12. Изменение имени поля в выходных данных. 42
  13. Сортировка данных. 43
  14. Сортировка данных в порядке, обратном алфавитному. 46
  15. Применение нескольких сортировочных критериев. 47
  16. Ограничение количества отображаемых записей. 48

Резюме. 50

Основные знания, приобретенные в этой главе. 50

ГЛАВА 2. Использование нескольких таблиц при составлении
запросов данных. 53

Хранение данных в нескольких таблицах. 53

  1. Соединение таблиц. 54
  2. Соединение таблиц с разными именами полей и связями. 58
  3. Удаление дубликатов из результатов запроса. 59
  4. Соединение нескольких таблиц. 62
  5. Использование псевдонимов таблиц. 65
  6. Соединение нескольких таблиц. 68
  7. Визуализация баз данных. 70
  8. Использование представлений для запоминания сложных объединений таблиц 72

Резюме. 73

Основные знания, приобретенные в этой главе. 74

ГЛАВА 3. Расширенное соединение таблиц. 75

Многообразие типов соединений таблиц. 75

  1. LEFT JOIN и возврат всех данных из таблицы с левым соединением.. 76
  2. RIGHT JOIN и возврат всех данных из таблицы с правым соединением.. 79
  3. Соединения через промежуточные таблицы.. 81
  4. Использование в соединениях нескольких полей. 83
  5. Объединение таблицы с самой собой. 85
  6. Соединение таблиц по диапазонам значений. 88
  7. Перекрестные соединения. 91
  8. Объединение концепций. 92

Резюме. 93

Основные знания, приобретенные в этой главе. 93

ГЛАВА 4. Фильтрация данных. 95

Использование языка SQL для фильтрации данных. 95

  1. Фильтрация данных с помощью соединений. 96
  2. Фильтрация данных с использованием соединения нескольких таблиц. 96
  3. Фильтрация выводимых данных с помощью промежуточных таблиц. 99
  4. Фильтрация текста. 102
  5. Применение нескольких текстовых фильтров. 103
  6. Исключение элемента. 105
  7. Использование нескольких фильтров исключения. 106
  8. Фильтрация чисел, превышающих заданный порог. 108
  9. Фильтрация чисел ниже определенного порога. 109
  10. Фильтрация по значениям до определенного числа включительно. 110
  11. Фильтрация по диапазону значений. 111
  12. Использование булевых фильтров (True или False) 113

Резюме. 115

Основные знания, приобретенные в этой главе. 115

ГЛАВА 5. Применение сложных фильтров при составлении запросов. 117

Комплексные методы фильтрации. 117

  1. Фильтры “или… или…”. 118
  2. Одновременное использование нескольких отдельных критериев. 119
  3. Использование нескольких фильтров и исключение данных. 120
  4. Одновременная фильтрация текста и чисел. 122
  5. Одновременное применение сложных альтернативных фильтров. 123
  6. Поиск с учетом регистра. 126
  7. Отключение чувствительности к регистру в фильтрах. 127
  8. Поиск с использованием подстановочных знаков. 129
  9. Подстановочные знаки для исключения данных. 131
  10. Включение чувствительности к регистру в фильтрах подстановочных знаков 132
  11. Фильтрация данных по определенной части текста. 133
  12. Работа с NULL, или с незаполненными полями. 136
  13. Поиск с помощью регулярных выражений. 138

Резюме. 139

Основные знания, полученные в этой главе. 140

ГЛАВА 6. Выполнение простых расчетов. 141

Выполнение вычислений на языке SQL. 141

  1. Выполнение простых математических действий. 141
  2. Анализ типов данных в представлениях MySQL. 144
  3. Изоляция сегментов формул с использованием математики. 146
  4. Расчет коэффициентов. 147
  5. Предотвращение ошибок деления на ноль. 149
  6. Увеличение значений на определенный процент. 150
  7. Сортировка вывода по результату расчетов. 151
  8. Обработка недостающих данных. 153
  9. Фильтрация вычислений. 155
  10. Сложные вычисляемые фильтры.. 157
  11. Быстрое написание точного SQL-запроса. 160

Резюме. 161

Основные знания, полученные в этой главе. 161

ГЛАВА 7. Объединение результатов. 163

Объединение данных в SQL-запросе. 163

  1. Подсчет итоговых показателей таблицы.. 164
  2. Использование рассчитанных сумм.. 165
  3. Группировка суммарных показателей. 166
  4. Использование нескольких уровней группирования. 167
  5. Расчет средних значений. 169
  6. Подсчет сгруппированных элементов. 170
  7. Подсчет уникальных элементов. 172
  8. Отображение верхнего и нижнего числовых порогов. 173
  9. Групповая фильтрация. 174
  10. Фильтрация суммарных результатов. 175
  11. Выбор данных на основе суммарных результатов и определенных критериев фильтрации 176
  12. Сортировка по суммарным результатам.. 178

Резюме. 179

Основные знания, полученные в этой главе. 180

ГЛАВА 8. Работа с датами в MySQL.. 181

Анализ данных за определенный период времени. 181

  1. Фильтрация записей по дате. 182
  2. Фильтрация данных по диапазону дат. 183
  3. Способ указания дат в запросах MySQL. 185
  4. Расчет количества дней между двумя датами. 187
  5. Объединение данных по диапазону дат. 189
  6. Удаление элемента времени из фильтруемой даты.. 191
  7. Фильтрация по годам.. 193
  8. Фильтрация записей за несколько лет. 194
  9. Фильтрация данных по году и месяцу. 196
  10. Поиск данных по определенному кварталу. 197
  11. Фильтрация данных по дням недели. 199
  12. Поиск записей для определенной недели года. 200
  13. Объединение данных по дням недели определенного года. 201
  14. Сортировка данных по полному названию дня недели. 202
  15. Суммарные итоговые и средние показатели по дням года. 204
  16. Совокупные итоговые и средние показатели по дням месяца. 205
  17. Отображение обобщенных значений за месяц. 207
  18. Отображение суммарных данных за 75 дней до определенной даты.. 208
  19. Отображение данных за предыдущие три месяца. 210
  20. Определение текущей системной даты.. 212

Резюме. 212

Основные знания, полученные в этой главе. 213

ГЛАВА 9. Форматирование текста в результатах запроса. 215

Оптимизация вывода результата SQL-запросов. 215

  1. Добавление текста в выходные данные. 215
  2. Добавление нескольких фрагментов текста к числам.. 217
  3. Объединение столбцов с использованием различных разделителей. 218
  4. Предотвращение появления значения NULL в объединенном выводе. 221
  5. Соединение и группировка. 222
  6. Объединение столбцов. 223
  7. Преобразование текста в верхний регистр. 225
  8. Преобразование текста в нижний регистр. 226
  9. Извлечение нескольких символов из поля. 227
  10. Отображение трех символов справа от текста. 228
  11. Отображение заданного количества символов из определенного места текста 230
  12. Фильтрация записей по части поля. 231
  13. Фильтрация данных по определенным символам в заданной позиции внутри поля 232
  14. Объединение с частью поля. 234

Резюме. 235

Основные знания, полученные в этой главе. 235

ГЛАВА 10. Форматирование чисел и дат. 237

Представление чисел и дат. 237

  1. Отбрасывание десятичных знаков из выходных данных. 238
  2. Округление поля до ближайшего целого числа. 239
  3. Округление значения до ближайшего целого числа. 240
  4. Округление значения в большую или меньшую сторону до ближайшей тысячи 241
  5. Отображение значения в определенном числовом формате. 242
  6. Отображение значения в определенной валюте. 244
  7. Указание формата локали. 246
  8. Вывод даты в определенном формате. 247
  9. Вывод даты в формате ISO Date. 250
  10. Представление времени в определенном формате. 252

Резюме. 254

Основные знания, полученные в этой главе. 254

ГЛАВА 11. Использование базовой логики для улучшения анализа. 257

Применение SQL-логики. 257

  1. Генерирование предупреждения при превышении значения. 257
  2. Сокращение текста и добавление многоточий для обозначения усечения. 259
  3. Разработка сложных расчетных оповещений. 260
  4. Создание ключевых показателей эффективности. 263
  5. Классификация ряда элементов при отсутствии необходимых категорий
    в данных. 265
  6. Создание специальных групп категорий. 268
  7. Использование нескольких специальных категорий. 270
  8. Распределение данных по категориям с использованием нескольких вложенных классификаций 271
  9. Объединение специальных категорий. 273
  10. Размещение значений NULL в начале или конце списка. 276
  11. Классификация данных по произвольным категориям.. 278

Резюме. 280

Основные знания, полученные в этой главе. 280

ГЛАВА 12. Вложенные запросы.. 283

Что такое вложенные запросы?. 283

  1. Добавление сводных полей к подробным наборам данных. 284
  2. Отображение значения в процентах общего числа. 286
  3. Использование вложенного запроса для фильтрации данных. 289
  4. Использование вложенного запроса как компонента вычисления
    для фильтрации данных. 290
  5. Фильтрация объединенного диапазона данных с помощью нескольких вложенных запросов 293
  6. Фильтрация результатов объединения с помощью второго объединения. 295
  7. Вложенные внутренние запросы.. 296
  8. Использование вложенных запросов для исключения данных. 299
  9. Несколько вложенных внутренних запросов. 301
  10. Фильтрация по основным и вложенным запросам.. 304
  11. Применение отдельных фильтров во вложенном и основном запросах. 306

Резюме. 308

Основные знания, полученные в этой главе. 308

ГЛАВА 13. Производные таблицы.. 309

Что представляет собой производная таблица?. 309

  1. Использование производной таблицы для создания промежуточных вычислений 310
  2. Группировка и упорядочивание данных посредством пользовательской классификации 315
  3. Присоединение производных таблиц к другим таблицам.. 317
  4. Использование нескольких результатов из производной таблицы для фильтрации данных 321
  5. Сложные сводные производные таблицы.. 324
  6. Объединение нескольких производных таблиц. 326
  7. Использование нескольких производных таблиц для сложных объединений. 330
  8. Использование производных таблиц для присоединения несвязанных таблиц 333
  9. Сравнение данных за год с помощью производной таблицы.. 336
  10. Синхронизация фильтров между производной таблицей и основным запросом 338

Резюме. 340

Основные знания, полученные в этой главе. 340

ГЛАВА 14. Общие табличные выражения. 341

Оптимизация сложных запросов с помощью общих табличных выражений. 341

  1. Базовые общие табличные выражения. 342
  2. Вычисление с помощью CTE средних значений по нескольким
    величинам.. 345
  3. Повторное использование CTE в запросе. 347
  4. Использование CTE в производной таблице для обеспечения двух
    разных уровней объединения данных. 349
  5. Использование CTE для выделения данных из отдельного набора
    на другом уровне детализации. 352
  6. Использование нескольких общих табличных выражений. 354
  7. Вложенные общие табличные выражения. 357
  8. Использование нескольких общих табличных выражений для сравнения разрозненных наборов данных 359

Резюме. 363

Основные знания, полученные в этой главе. 363

ГЛАВА 15. Коррелированные вложенные запросы.. 365

Зачем использовать коррелированные вложенные запросы?. 365

  1. Простые коррелированные вложенные запросы.. 366
  2. Коррелированные вложенные запросы для отображения процентных
    долей определенного итогового значения. 368
  3. Сравнение наборов данных с помощью коррелированного вложенного запроса 369
  4. Дублирование вывода коррелированного вложенного запроса в результатах выполнения запроса 371
  5. Агрегированные коррелированные вложенные запросы.. 373
  6. Использование коррелированных вложенных запросов для фильтрации данных по совокупному значению.. 375
  7. Использование коррелированных вложенных запросов для обнаружения записей 377
  8. Использование коррелированного вложенного запроса для исключения данных 379
  9. Сложные объединения в коррелированных вложенных запросах. 380
  10. Использование коррелированного вложенного запроса для проверки значений в разных таблицах 383

Резюме. 384

Основные знания, полученные в этой главе. 384

ГЛАВА 16. Манипулирование набором данных. 387

Применение наборов данных для объединения и сопоставления данных. 387

  1. Чтение данных из нескольких одинаково структурированных таблиц
    с помощью оператора UNION.. 388
  2. Поиск и определение одинаковых данных в нескольких таблицах. 390
  3. Выделение общих элементов из нескольких подмножеств данных. 392
  4. Объединение в одном вложенном запросе нескольких одинаковых
    таблиц. 395
  5. Выделение из двух наборов данных неодинаковых записей. 396
  6. Отображение полных записей для несовпадающих данных. 398
  7. Отображение полных записей для одинаковых данных. 401

Резюме. 404

Основные знания, полученные в этой главе. 404

ГЛАВА 17. Использование SQL для более сложных вычислений. 407

Дополнительные методы расчета. 407

  1. Расчет процентного соотношения по каждой записи в наборе данных. 408
  2. Повторное использование нескольких вложенных запросов. 409
  3. Отбрасывание дробной части числа из результатов вычислений. 412
  4. Числовые типы данных. 413
  5. Преобразование типа отформатированных исходных данных в числовой тип, пригодный для использования. 415
  6. Проверка сбоев при удалении символов форматирования. 418
  7. Проверка наличия значений, не являющихся числовыми. 419
  8. Вычисление с помощью оператора MOD остатка от деления. 420
  9. Создание финансовых расчетов. 423
  10. Использование таблицы для получения последовательного списка
    чисел. 426
  11. Формирование случайной выборки из набора данных. 428

Резюме. 430

Основные знания, полученные в этой главе. 430

ГЛАВА 18. Сегментирование и классификация данных. 433

Ранжирование и сегментация данных. 433

  1. Упорядочивание данных по рангам.. 434
  2. Создание нескольких ранжированных групп. 436
  3. Создание нескольких рейтинговых групп и подгрупп. 438
  4. Фильтрация данных по рейтингу элементов. 440
  5. Классификация данных в строгом порядке ранжирования. 442
  6. Разделение данных на децили. 446
  7. Построение значений для перцентиля. 448
  8. Извлечение данных из определенного квинтиля. 450
  9. Возвращение верхнего N процента набора данных. 452
  10. Вычисление общих продаж.. 454
  11. Классификация данных с помощью функции PERCENT_RANK() 456

Резюме. 457

Основные знания, полученные в этой главе. 458

ГЛАВА 19. Скользящий анализ. 459

Промежуточные итоговые и средние значения, промежуточные подсчеты
и сравнительные значения. 459

  1. Добавление текущих итогов. 460
  2. Использование оконных функций в обобщенном запросе. 462
  3. Перезагрузка текущих итогов. 464
  4. Оконные функции во вложенном запросе. 466
  5. Добавление уникальных идентификаторов на лету с помощью
    функции ROW_NUMBER() 469
  6. Отображение записей с отсутствующими данными. 471
  7. Отображение полного диапазона дат и связанных с ними данных. 474
  8. Сравнение данных с данными из предыдущих записей. 477
  9. Сравнение данных по времени с помощью функций FIRST_VALUE()
    и LAST_VALUE() 481
  10. Отображение изменяющихся средних значений по заданному
    количеству записей. 483
  11. Отображение первой и последних четырех продаж по каждому
    клиенту. 486

Резюме. 488

Основные знания, полученные в этой главе. 488

ГЛАВА 20. Анализ данных, изменяющихся с течением времени. 491

Временной анализ. 491

  1. Обобщенные значения за год до настоящего времени. 492
  2. Объединение значений за месяц до настоящего времени. 494
  3. Возврат суммарных значений за квартал и до настоящего времени. 496
  4. Выделение данных за предыдущий месяц. 498
  5. Использование производной таблицы для сравнения данных
    со значениями предыдущего года. 500
  6. Нахождение общей суммы за каждый будний день в течение года. 502
  7. Подсчет количества выходных дней между двумя датами. 507
  8. Совокупные данные за последний день месяца. 509
  9. Обобщенные данные на последнюю пятницу месяца. 512
  10. Анализ временных отрезков в виде лет, месяцев и дней. 514
  11. Выделение временных периодов из элементов даты и времени. 517
  12. Данные списка по времени суток. 519
  13. Объединение данных по часовым диапазонам.. 521
  14. Обобщенные данные с разбивкой по часам по четвертям.. 523

Резюме. 524

Основные знания, полученные в этой главе. 525

ГЛАВА 21. Вывод комплексных данных. 527

Отображение комплексных данных с помощью SQL-запроса. 527

  1. Создание сводной таблицы.. 528
  2. Создание сводной таблицы, отображающей несколько сгруппированных строк 531
  3. Отмена группировки данных. 534
  4. Добавление итогов в сводные запросы.. 537
  5. Создание понятных таблиц, включающих итоговые данные
    и промежуточные итоги. 540
  6. Работа с данными иерархического типа. 542
  7. Создание иерархий с отступом.. 545
  8. Замена в итоговом результате аббревиатур полным текстом.. 546
  9. Замена определенного количества символов другим текстом.. 548
  10. Создание списка из нескольких записей с разделителями-запятыми. 549
  11. Экспорт списков, разделенных запятыми. 552
  12. Экспорт списков с заголовками. 555
  13. Экспорт списков фиксированной ширины.. 558
  14. Удаление лишних пробелов из выходных данных. 560

Резюме. 561

Основные знания, полученные в этой главе. 562

ПРИЛОЖЕНИЯ.. 563

Приложение 1. Установка MySQL.. 565

Установка MySQL. 565

  1. Установка MySQL в операционной системе Windows. 565
  2. Установка MySQL на Macintosh. 573
  3. Установка MySQL в операционной системе Linux. 574

Приложение 2. Установка MySQL Workbench. 576

Установка MySQL Workbench в операционной системе Windows. 576

  1. Установка MySQL под операционную систему Windows. 576
  2. Установка приложения MySQL Workbench на компьютере Macintosh. 581
  3. Запуск MySQL Workbench. 581
  4. Создание соединения с MySQL. 582

Приложение 3. Настройка базы данных с примерами. 584

  1. Загрузка примеров под операционную систему Windows. 584
  2. Загрузка выборочных данных в базу данных PrestigeCars. 584
  3. Открытие примеров запросов. 585

 

Предметный указатель. 587

Adam Aspin

Адам Аспин (Adam Aspin) — аналитик данных с более чем 25-летним стажем. Работал в таких областях, как финансы, фармацевтика, коммунальные услуги, банковское дело, телекоммуникации и розничная торговля. Автор нескольких книг по различным аспектам платформы данных Microsoft, а также многочисленных публикаций на порталах SQLServerCentral.com и Simple-Talk. Регулярно выступает на различных мероприятиях, посвященных SQL Server, таких как SQLBits, SQL Saturdays/User groups и других.

Опубликовано

Новинка: “Microsoft SQL Server 2022”

Microsoft SQL Server 2022

Книга посвящена установке, настройке, администрированию и разработке баз данных с помощью СУБД MS SQL Server 2022. Материал сопровождается большим количеством примеров кода, которые можно использовать на практике. Рассмотрены основы языка запросов,  используемые типы данных, создание базы данных и основных ее объектов, средства отображения объектов и всех их характеристик. Показаны методы проектирования, создания и изменения таблиц; рассмотрены индексы, заполнение таблиц данными, изменение и удаление данных, выборка из базы, представления, транзакции, их характеристики и взаимодействие, хранимые процедуры и триггеры. Исходные коды примеров размещены на сайте издательства.

Эта книга в первую очередь предназначена тем, кто никогда не работал ни с какой версией MS SQL Server, а может быть, даже и вообще ни с какой системой управления базами данных (СУБД) — ни с реляционной, ни с сетевой, ни даже с иерархической, не говоря уж и о совсем простеньких (“настольных”) системах управления данными. Здесь вы не найдете сравнений настоящей версии сервера с предыдущими, детальных описаний того, что нового появилось в SQL Server 2022.

Я главным образом ориентируюсь на разработчиков баз данных (БД) и создателей программного продукта, требующего использования для своей работы баз данных, или на людей, которые собираются стать такими разработчиками и/или программистами.
Александр Бондарь

  • Общие сведения о SQL Server 2022
  • Принципы работы с базами данных
  • Создание базы данных и основных ее объектов
  • Проектирование, создание и изменение таблиц
  • Заполнение таблиц данными, изменение и удаление данных
  • Индексы
  • Представления
  • Транзакции, их характеристики и взаимодействие
  • Выборка данных
  • Хранимые процедуры, функции, определенные пользователем, триггеры
  • Средства отображения объектов и их характеристик

Книгу “Microsoft SQL Server 2022” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Введение. 9

Содержание книги. 11

Дополнительные материалы.. 13

Глава 1. Инсталляция программных средств. 15

1.1. Инсталляция MS SQL Server 2022 Developer 15

1.2. Установка SQL Server Management Studio. 19

Глава 2. Общие сведения о SQL Server 2022. 23

2.1. Реляционные базы данных. 23

2.1.1. Таблицы.. 23

2.1.2. Представления. 29

2.1.3. Хранимые процедуры и триггеры.. 30

2.1.4. Пользователи, привилегии и роли базы данных. 31

2.1.5. Задание первичных ключей таблиц. 31

2.1.6. Транзакции. 32

2.1.7. 12 правил Кодда. 33

2.2. Реализация отношений в реляционной модели. 34

2.2.1. Отношение “один к одному”. 34

2.2.2. Отношение “один ко многим”. 35

2.2.3. Отношение “многие ко многим”. 35

2.3. Нормализация таблиц. 36

2.3.1. Цель нормализации таблиц. 36

2.3.2. Первая нормальная форма. 37

2.3.3. Вторая нормальная форма. 39

2.3.4. Третья нормальная форма. 39

2.3.5. Другие нормальные формы.. 40

2.3.6. Денормализация таблиц. 41

2.4. Проектирование баз данных. 41

2.5. Язык Transact-SQL.. 43

2.5.1. Синтаксис. 43

2.5.2. Основные сведения о составе языка Transact-SQL.. 51

Что дальше?. 53

Глава 3. Работа с базами данных. 55

3.1. Запуск и останов экземпляра сервера. 56

3.1.1. Запуск экземпляра сервера. 56

3.1.2. Останов экземпляра сервера. 57

3.2. Что собой представляет база данных в SQL Server 58

3.2.1. Системные базы данных. 59

3.2.2. Базы данных пользователей. 61

3.2.3. Некоторые характеристики базы данных. 62

3.2.4. Некоторые характеристики файлов базы данных. 64

3.3. Получение сведений о базах данных и их файлах в текущем экземпляре сервера. 65

3.3.1. Системное представление sys.databases. 65

3.3.2. Системное представление sys.master_files. 66

3.3.3. Системное представление sys.database_files. 68

3.3.4. Системное представление sys.filegroups. 69

3.3.5. Другие средства получения сведений об объектах базы данных. 69

3.4. Создание и удаление базы данных. 72

3.4.1. Использование операторов Transact-SQL для создания, отображения
и удаления баз данных. 72

3.4.2. Создание базы данных с использованием диалоговых средств
Management Studio. 112

3.5. Изменение базы данных. 116

3.5.1. Изменение базы данных в языке Transact-SQL.. 116

3.5.2. Изменение базы данных диалоговыми средствами Management Studio. 128

3.5.3. Удаление базы данных диалоговыми средствами Management Studio. 135

3.6. Создание автономной базы данных. 135

3.6.1. Установка допустимости автономных баз данных. 136

3.6.2. Создание автономной базы данных и пользователя средствами языка Transact-SQL   137

3.6.3. Создание автономной базы данных диалоговыми средствами
Management Studio. 138

3.6.4. Создание автономного пользователя в Management Studio. 139

3.6.5. Соединение с автономной базой данных в Management Studio. 140

3.7. Создание мгновенных снимков базы данных. 141

3.8. Схемы базы данных. 143

3.8.1. Работа со схемами в Transact-SQL.. 143

3.8.2. Работа со схемами в Management Studio. 146

3.9. Средства копирования и восстановления баз данных. 148

3.9.1. Использование операторов Transact-SQL для копирования/восстановления базы данных  148

3.9.2. Использование диалоговых средств Management Studio
для копирования/восстановления базы данных. 149

3.10. Домашнее задание. 153

Что дальше?. 154

Глава 4. Типы данных. 155

4.1. Классификация типов данных в SQL Server 156

4.2. Объявление локальных переменных. 158

4.3. Числовые типы данных. 159

4.3.1. Тип данных BIT. 161

4.3.2. Целочисленные типы данных TINYINT, SMALLINT, INT, BIGINT. 163

4.3.3. Дробные числа NUMERIC, DECIMAL, SMALLMONEY, MONEY. 165

4.3.4. Числа с плавающей точкой FLOAT, REAL. 169

4.3.5. Функции для работы с числовыми данными. 170

4.4. Символьные данные. 175

4.4.1. Символьные строки CHAR, VARCHAR.. 176

4.4.2. Символьные строки NCHAR, NVARCHAR.. 177

4.4.3. Типы данных VARCHAR(MAX), NVARCHAR(MAX), VARBINARY(MAX) 178

4.4.4. Строковые функции. 178

4.5. Типы данных даты и времени. 189

4.5.1. Описание типов данных даты и времени. 189

4.5.2. Действия с датами и временем.. 191

4.6. Двоичные данные. 201

4.7. Пространственные типы данных. 202

4.7.1. Тип данных GEOMETRY. 203

4.7.2. Тип данных GEOGRAPHY. 215

4.8. Другие типы данных. 220

4.8.1. Тип данных SQL_VARIANT. 220

4.8.2. Тип данных HIERARCHYID.. 224

4.8.3. Тип данных UNIQUEIDENTIFIER.. 229

4.8.4. Тип данных CURSOR.. 230

4.8.5. Тип данных XML. 237

4.9. Создание и удаление пользовательских типов данных. 249

4.9.1. Синтаксис оператора создания пользовательского типа данных. 250

4.9.2. Создание псевдонима средствами Transact-SQL.. 251

4.9.3. Создание псевдонима в диалоговых средствах Management Studio. 252

4.9.4. Создание пользовательского табличного типа данных средствами
Transact-SQL.. 253

4.9.5. Создание пользовательского табличного типа данных диалоговыми средствами Management Studio  257

4.9.6. Удаление пользовательского типа данных. 257

Что дальше?. 259

Глава 5. Работа с таблицами. 261

5.1. Синтаксис оператора создания таблицы.. 262

5.1.1. Общие характеристики таблицы.. 263

5.1.2. Определение столбца. 265

5.1.3. Ограничения столбца и ограничения таблицы.. 268

5.1.4. Вычисляемые столбцы.. 274

5.1.5. Набор столбцов. 275

5.2. Примеры простых таблиц. 276

5.3. Создание секционированных таблиц. 289

5.3.1. Синтаксические конструкции. 289

5.3.2. Пример создания секционированной таблицы.. 292

5.3.3. Отображение результатов создания таблицы.. 301

5.3.4. Изменение характеристик секционированной таблицы.. 305

5.4. Создание таблиц диалоговыми средствами. 307

5.4.1. Создание таблицы секционирования. 307

5.4.2. Создание таблицы секционирования, схемы секционирования
и функции секционирования. 317

5.5. Отображение состояния секционированных таблиц. 323

5.6. Файловые потоки. 324

5.7. Удаление таблиц. 330

5.7.1. Определение зависимостей таблицы.. 330

5.7.2. Удаление таблицы оператором DROP TABLE.. 333

5.7.3. Удаление таблицы диалоговыми средствами Manager Studio. 333

5.8. Изменение характеристик таблиц. 335

5.8.1. Изменение таблиц при использовании оператора Transact-SQL.. 336

5.8.2. Изменение таблиц средствами Management Studio. 341

5.8.3. Построение диаграммы базы данных. 366

Что дальше?. 368

Глава 6. Индексы.. 369

6.1. Отображение индексов. 370

6.2. Работа с индексами средствами Transact-SQL.. 371

6.2.1. Создание обычного (реляционного) индекса. 371

6.2.2. Создание индекса для представлений. 378

6.2.3. Создание columnstore индекса. 379

6.2.4. Создание индекса для столбца XML.. 380

6.2.5. Создание пространственного индекса. 385

6.2.6. Удаление индекса. 387

6.2.7. Изменение индекса. 388

6.3. Работа с индексами в диалоговых средствах Management Studio. 390

6.3.1. Создание индекса в Management Studio. 390

6.3.2. Удаление индекса в Management Studio. 394

6.3.3. Изменение индекса в Management Studio. 394

Что дальше?. 394

Глава 7. Добавление, изменение и удаление данных. 395

7.1. Обобщенное табличное выражение. 395

7.2. Добавление данных (оператор INSERT) 396

7.3. Изменение данных (оператор UPDATE) 403

7.4. Удаление данных (оператор DELETE) 407

7.5. Удаление строк таблицы (оператор TRUNCATE TABLE) 408

7.6. Добавление, изменение или удаление строк таблицы (оператор MERGE) 408

Что дальше?. 414

Глава 8. Выборка данных. 415

8.1. Оператор SELECT. 415

8.2. Оператор UNION.. 424

8.3. Операторы EXCEPT, INTERSECT. 424

8.4. Примеры выборки данных. 425

8.4.1. Список выбора. 425

8.4.2. Упорядочение результата (ORDER BY) 427

8.4.3. Условие выборки данных (WHERE) 428

8.4.4. Соединение таблиц. 436

8.4.5. Группировка результатов выборки (GROUP BY, HAVING) 444

8.5. Использование операторов UNION, EXCEPT, INTERSECT. 449

Что дальше?. 450

Глава 9. Представления. 451

9.1. Синтаксис операторов для представлений. 452

9.1.1. Создание представления. 452

9.1.2. Изменение представления. 453

9.1.3. Удаление представления. 453

9.2. Создание представлений в Transact-SQL.. 454

9.3. Создание представлений диалоговыми средствами Management Studio. 458

Что дальше?. 460

Глава 10. Транзакции. 461

10.1. Понятие и характеристики транзакций. 461

10.2. Операторы работы с транзакциями. 462

10.3. Уровни изоляции транзакции. 464

Что дальше?. 466

Глава 11. Хранимые процедуры, функции,
определенные пользователем, триггеры.. 467

11.1. Язык хранимых процедур и триггеров. 467

11.1.1. Блок операторов BEGIN/END.. 468

11.2. Хранимые процедуры.. 472

11.2.1. Создание хранимой процедуры.. 472

11.2.2. Изменение хранимой процедуры.. 474

11.2.3. Удаление хранимой процедуры.. 474

11.2.4. Использование хранимых процедур. 475

11.3. Функции, определенные пользователем.. 480

11.3.1. Создание функции. 480

11.3.2. Изменение функций. 481

11.3.3. Удаление функций. 482

11.3.4. Использование функций. 482

11.4. Триггеры.. 483

11.4.1. Создание триггеров. 483

11.4.2. Изменение триггеров. 485

11.4.3. Удаление триггеров. 486

11.4.4. Использование триггеров. 487

Приложения. 491

Приложение 1. Двенадцать правил Кодда. 493

Приложение 2. Зарезервированные слова Transact-SQL.. 495

Приложение 3. Утилита командной строки sqlcmd. 501

Приложение 4. Характеристики базы данных. 503

П4.1. Параметры Auto. 505

П4.2. Параметры доступности базы данных. 506

П4.3. Параметры автономной базы данных. 508

П4.4. Параметры восстановления. 509

П4.5. Общие параметры SQL.. 509

П4.6. Параметры компонента Service Broker 513

Приложение 5. Языки, представленные в SQL Server. 515

Приложение 6. Описание электронного архива. 517

Предметный указатель. 519

Бондарь Александр

Бондарь Александр Григорьевич — преподаватель, опытный технический писатель. Автор переводов на русский язык книг Х. Борри «Firebird. Руководство разработчика баз данных» и Д. Петковича «Microsoft SQL Server 2008. Руководство для начинающих», а также автор книг «InterBase и Firebird. Практическое руководство для умных пользователей и начинающих разработчиков», «Microsoft SQL Server 2012» и «Microsoft SQL Server 2014». Александр является прирожденным методистом, умеющим излагать сложные вопросы программирования доступным для читателя языком.