Базы данных на SQL, MySQL, MS SQL и Postgre/PL/pgSQL: Проектирование и практическая реализация

Базы данных на SQL, MySQL, MS SQL и Postgre/PL/pgSQL: Проектирование и практическая реализация

Базы данных на SQL, MySQL, MS SQL и Postgre/PL/pgSQL: Проектирование и практическая реализация
Автор: Аклимов Р. Р.
Дата выхода: 2026
Издательство: Наука и Техника
Количество страниц: 514
Размер файла: 34.8 MB
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы

ГЛАВА 1. SQL для всех. Основы реляционных баз данных....22

1.1. ЗАЧЕМ НУЖЕН SQL....23

SQL —это мост между вами и миром данных....24

SQL проще, чем кажется?....25

1.2. ИСТОКИ И РОЖДЕНИЕ SQL....25

1.3. СТАНДАРТЫ И ДИАЛЕКТЫ....26

1.4. ТАК ЧТО ЖЕ ВЫБРАТЬ?....27

1.5. СИСТЕМНЫЕ ТРЕБОВАНИЯ....29

1.6. УСТАНОВКА И ПОДКЛЮЧЕНИЕ....30

1.6.1. MS SQL Server....30

1.6.2. MySQL....32

Что надо скачать?....32

1.6.3. PostgreSQL....33

1.6.4. Альтернативные графические оболочки....34

1.7. ПОДКЛЮЧЕНИЕ К БАЗЕ, ПЕРВЫЙ ЗАПРОС....35

1.7.1. Подключение к MS SQL Server....36

1.7.2. Подключение к MySQL....38

Подключение через командную строку....38

1.7.3. Подключение к PostgreSQL....39

ЧТО УЗНАЛИ И ЧЕМУ МЫ НАУЧИЛИСЬ?....41

ГЛАВА 2. Типы данных....44

2.1. ПОНЯТИЕ ТИПА ДАННЫХ....45

Почему важно знать размер данных?....45

2.2. ТИПЫ ДЛЯ ЦЕЛЫХ ЧИСЕЛ....46

О знаковых и беззнаковых целых в MySQL....46

2.3. ТИПЫ ДЛЯ ДЕЙСТВИТЕЛЬНЫХ ЧИСЕЛ....47

Как быть, если нужна абсолютная точность?....48

2.4. ТИПЫ ДЛЯ ТЕКСТА....50

CHAR(n) / NCHAR(n)....51

CHARACTER VARYING(n) / VARCHAR(n) / NVARCHAR(n)....51

2.4.1. Про кодировки и Unicode....51

Рекомендации....52

2.4.2. Collation, или головная боль разработчика....53

2.5. ДАТА И ВРЕМЯ....54

2.6. ЛОГИЧЕСКИЙ ТИП ДАННЫХ (BOOLEAN)....55

2.7. NULL: ОТСУТСТВИЕ ЗНАЧЕНИЯ....56

2.8. ДРУГИЕ ТИПЫ ДАННЫХ....57

Специализированные типы: для нестандартных задач....57

2.9. ЧТО ДАЛЬШЕ?....58

2.10. ПРИЛОЖЕНИЕ К ГЛАВЕ 2: ТИПЫ ДАННЫХ СТАНДАРТА SQL....59

ГЛАВА 3. Основы проектирования баз данных на практике....62

3.1. ТАБЛИЧНОЕ ПРЕДСТАВЛЕНИЕ....63

3.2. ПРИМЕР 1. ИНТЕРНЕТ-МАГАЗИН. НОРМАЛИЗАЦИЯ....64

Как распознать ненормализованные данные?....65

3.3. ФОРМЫ НОРМАЛИЗАЦИИ....65

Первая нормальная форма (1NF)....66

Вторая нормальная форма (2NF)....66

Третья нормальная форма (3NF)....66

А все ли мы учли?....68

3.4. СОЗДАНИЕ БАЗЫ ДАННЫХ, ПРОЕКТИРОВАНИЕ ТАБЛИЦ....69

3.5. CREATE TABLE....76

3.5.1. О верхнем и нижнем регистре....77

MySQL....78

PostgreSQL....78

MS SQL Server....79

3.5.2. Работа в графических оболочках....81

3.6. ДОБАВЛЯЕМ ОТНОШЕНИЯ, ОГРАНИЧЕНИЯ И ВНЕШНИЕ КЛЮЧИ....82

3.6.1. Ссылочная целостность....85

Как это работает "под капотом"?....86

3.6.2. Автонумерация. Умные идентификаторы....88

MySQL....88

PostgreSQL....90

Microsoft SQL Server....92

3.6.3. Какие еще бывают ограничения?....94

UNIQUE....94

DEFAULT....95

CHECK....95

Когда что использовать?....95

3.6.4. Вычислимые столбцы....96

3.7. ПРИМЕР 2. ФИТНЕС-КЛУБ....97

3.7.1. Нормализация....99

3.7.2. Все ли мы учли?....101

3.7.3. Подбираем типы данных и создаем таблицы....101

ЧТО УЗНАЛИ И ЧЕМУ МЫ НАУЧИЛИСЬ?....104

ГЛАВА 4. Вставка, вывод и чтение данных....106

4.1. ДОБАВЛЕНИЕ ДАННЫХ. ОСНОВЫ....107

4.1.1. Простая вставка. INSERT на примере Интернет-магазина....107

4.1.2. Массовое добавление данных....110

MySQL....111

PostgreSQL....112

MS SQL....112

4.2. ЧТЕНИЕ ДАННЫХ ИЗ БАЗЫ. SELECT....113

4.2.1. Псевдонимы столбцов (ALIAS)....115

4.3. ФИЛЬТРАЦИЯ ВЫВОДА. WHERE....115

4.3.1. Операторы сравнения....116

4.3.2. Логические операторы....117

4.3.3. Поиск по шаблону. Оператор LIKE....120

4.3.4. Поиск по сложному шаблону....122

4.3.5. Условный вывод с оператором CASE....124

4.3.6. Приоритет операторов....127

4.4. НЕЯВНОЕ АВТОМАТИЧЕСКОЕ ПРИВЕДЕНИЕ ТИПОВ В SQL....128

Сравнение разных типов....129

Арифметические операции....129

4.4.1. Преобразование даты в строку и обратно....130

4.4.2. Особенности СУБД....131

MySQL....131

PostgreSQL....131

SQL Server....132

4.4.3. Потенциальные риски потери данных....132

4.5. ПОСТРАНИЧНЫЙ ВЫВОД, ОГРАНИЧЕНИЕ ВЫВОДА, СОРТИРОВКА....133

4.5.1. Сортировка. ORDER BY....133

MySQL, MS SQLServer....136

PostgreSQL....136

4.5.2. Особенности сортировки NULL....137

4.5.3. Использование колляции при сортировке....137

4.5.4. Постраничный вывод....140

Вопросы производительности и советы....143

ЧТО УЗНАЛИ И ЧЕМУ МЫ НАУЧИЛИСЬ?....143

ГЛАВА 5. Объединение данных. Работа с несколькими таблицами....146

5.1. ЕЩЕ НЕМНОГО О ПРЕИМУЩЕСТВАХ НОРМАЛИЗАЦИИ НА ПРИМЕРЕ ФИТНЕС-КЛУБА....147

Примечание о вставке данных....151

5.2. ПРОСТОЕ ОБЪЕДИНЕНИЕ....152

5.2.1. Как присоединять таблицу....152

5.2.2. Присоединение нескольких таблиц....157

5.2.3. Использование псевдонимов таблиц (aliases)....158

5.3. ВИДЫ ОБЪЕДИНЕНИЙ НА ПРИМЕРЕ СИСТЕМЫ РЕГИСТРАЦИИ В АЭРОПОРТУ....159

5.3.1. Внутреннее объединение INNER JOIN....159

5.3.2. Левое внешнее объединение LEFT OUTER JOIN....160

5.3.3. Правое внешнее объединение RIGHT OUTER JOIN....164

5.3.4. Полное объединение (FULL OUTER JOIN)....165

5.3.5. Перекрестное объединение CROSS JOIN....166

5.3.6. Слияние (UNION и UNION ALL)....168

5.3.7. Полная карта объединений....170

5.3.8. Порядок объединений, или как ничего не потерять....172

Вариант 1....172

Вариант 2....173

ЧТО УЗНАЛИ И ЧЕМУ МЫ НАУЧИЛИСЬ?....174

ПРИЛОЖЕНИЕ К ГЛАВЕ 5. ВАРИАНТЫ РЕШЕНИЯ ЗАДАНИЙ....175

ГЛАВА 6. Группировка данных и агрегатные функции....178

6.1. ОСНОВЫ АНАЛИТИКИ НА ПРИМЕРЕ РЫБОЛОВЕЦКОЙ КОМПАНИИ....179

6.2. АГРЕГАТНЫЕ ФУНКЦИИ....182

6.2.1. DISTINCT — вывод уникальных записей....182

6.2.2. COUNT — подсчет количества записей....183

6.2.3. SUM — сумма....184

6.2.4. MIN/MAX — минимальное и максимальное значения....184

6.2.5. AVG — среднее значение....185

6.2.6. COALESCE — замещение NULL....186

6.3. ГРУППИРОВКА РЕЗУЛЬТАТОВ GROUP BY....186

6.4. ФИЛЬТРАЦИЯ РЕЗУЛЬТАТОВ ПО ГРУППАМ — HAVING....189

6.5. НЕКОТОРЫЕ НЕСТАНДАРТНЫЕ АГРЕГАТНЫЕ ФУНКЦИИ В РАЗНЫХ СУБД....191

6.5.1. GROUP_CONCAT (MySQL)/STRING_AGG (PostgreSQL/MySQL)....192

6.5.2. STDDEV_POP / STDEVP....193

6.5.3. STDEV_SAMP I STDEV....193

6.5.4. VAR_SAMP / VAR....193

6.5.5. PostgreSQL: WITHIN GROUP и PERCENTILE_CONT/ PERCENTILE_DISC....194

ЧТО УЗНАЛИ И ЧЕМУ МЫ НАУЧИЛИСЬ?....195

ГЛАВА 7. Подзапросы и обобщённые табличные выражения (СТЕ)....196

7.1. ДАННЫЕ НА ОСНОВАНИИ ДРУГИХ ДАННЫХ. ПРАКТИЧЕСКИЙ ПРИМЕР КОМПЬЮТЕРНОЙ ИГРЫ....197

7.2. ПОДЗАПРОСЫ....200

7.2.1. Подзапрос, вложенный в SELECT....200

7.2.2. Подзапрос, вложенный в WHERE....201

7.2.3. Подзапрос, вложенный в FROM....201

7.2.4. Коррелируемый подзапрос....202

7.2.5. Проверка на наличие в наборе значений IN....203

7.2.6. Проверка на условие с наборами значений ANY /ALL....204

7.2.7. Быстрая проверка наличия WHERE EXISTS....205

7.2.8. Когда использовать подзапросы....207

7.3. ПРОБЛЕМЫ ПОДЗАПРОСОВ....208

7.3.1. Сложность для восприятия....208

7.3.2. Повторяющаяся логика....208

7.3.3. Производительность....209

7.4. ОБОБЩЕННЫЕ ТАБЛИЧНЫЕ ВЫРАЖЕНИЯ....209

7.4.1. Решение неэффективности подзапросов....209

7.4.2. Как это работает....210

7.4.3. Простые СТЕ....211

7.4.4. Рекурсия в СТЕ....212

7.4.5. Глубина рекурсии и опасность петель....216

7.4.6. Техники обнаружения петель в разных СУБД....218

7.4.7. Где рекурсия может быть полезна, а где — вредна....222

ЧТО УЗНАЛИ И ЧЕМУ МЫ НАУЧИЛИСЬ?....223

ГЛАВА 8. Оконные функции. Анализируем данные....226

8.1. ДАННЫЕ В КОНТЕКСТЕ "ОКНА". ПРИМЕР МОНИТОРИНГА СОСТОЯНИЯ ПАЦИЕНТА В БОЛЬНИЦЕ....227

8.2. ЧТО ТАКОЕ ОКОННЫЕ ФУНКЦИИ....229

8.2.1. Синтаксис....229

8.2.2. Агрегатные функции: SUM, AVG, COUNT, MAX, MIN....232

8.2.3. Ранжирующие функции: ROW_NUMBER, RANK, DENSE_RANK....235

Когда какую функцию использовать?....237

8.2.4. Функции распределения / относительного ранга: NTILE, PERCENT_RANK, CUME_DIST....238

PERCENT_RANK....238

CUME_DIST....239

NTILE(n)....240

8.2.5. Аналитические функции: LAG, LEAD, FIRST_VALUE, LAST_VALUE....241

LAG — доступ к предыдущим данным....242

LEAD — доступ к последующим данным....243

FIRST_VALUE — первое значение окна....244

LAST_VALUE — последнее значение окна....245

8.3. ВОПРОСЫ ПРОИЗВОДИТЕЛЬНОСТИ И АНТИПАТТЕРНЫ....245

8.3.1. Вложенные оконные функции....245

8.3.2. ROWS вместо RANGE....246

8.3.3. Фильтрация до оконных функций....247

8.3.4. Индексы по столбцам PARTITION BY и ORDER BY....247

8.3.5. Антипаттерн: избыточное секционирование....248

8.3.6. Антипаттерн: оконные функции вместо простых агрегатов....248

ЧТО УЗНАЛИ И ЧЕМУ МЫ НАУЧИЛИСЬ?....248

ГЛАВА 9. Изменение и удаление данных....250

9.1. МАНИПУЛЯЦИЯ ДАННЫМИ НА ПРИМЕРЕ ТАКСОПАРКА....251

9.2. ЕЩЕ НЕМНОГО О ВСТАВКЕ ДАННЫХ....253

9.2.1. Вставка данных из подзапроса....253

9.2.2. Возврат данных при добавлении....256

Microsoft SQL Server (OUTPUT)....256

PostgreSQL (RETURNING)....257

MySQL....258

9.3. ИЗМЕНЕНИЕ ДАННЫХ....258

9.3.1. Простое изменение....259

9.3.2. О важности WHERE....260

9.3.3. Обновление данных из подзапроса/СТЕ....261

9.3.4. Обновление данных через присоединение JOIN....263

Microsoft SQL Server....263

MySQL....264

PostgreSQL....264

9.4. РАЗРЕШЕНИЕ КОНФЛИКТОВ С ОГРАНИЧЕНИЯМИ....265

9.4.1. Техника UPSERT....265

Microsoft SQL Server....266

MySQL....266

PostgreSQL....268

9.4.2. Объединение таблиц (MERGE)....269

9.5. УДАЛЕНИЕ ДАННЫХ....272

9.5.1. Простое удаление DELETE....272

9.5.2. Удаление по данным подзапроса или СТЕ....273

9.5.3. Удаление через присоединение....274

9.6. КОНТРОЛЬ ЦЕЛОСТНОСТИ ПРИ УДАЛЕНИИ ДАННЫХ....274

9.6.1. Действия ON DELETE....275

9.6.2. Таблица сравнения действий....277

9.7. ПОДХОДЫ К ХРАНЕНИЮ НЕВОСТРЕБОВАННЫХ ДАННЫХ....279

9.7.1. Немедленное удаление (IMMEDIATE DELETE)....279

9.7.2. "Мягкое" удаление (SOFT DELETE)....280

9.7.3. Отсроченное удаление (DELAYED DELETE)....280

9.7.4. Постоянное хранение (NO DELETE)....281

9.8. ПРОИЗВОДИТЕЛЬНОСТЬ ЗАПРОСОВ UPDATE И DELETE....281

9.8.1. Временное отключение проверок и триггеров....281

9.8.2. Дробление операций на части....283

Microsoft SQL Server....283

MySQL....283

PostgreSQL....283

9.8.3. Дополнительные рекомендации по производительности....284

ЧТО УЗНАЛИ И ЧЕМУ МЫ НАУЧИЛИСЬ?....284

ГЛАВА 10. Индексы и оптимизация. Улучшаем производительность....286

10.1. ЧТО ТАКОЕ ИНДЕКС И ЗАЧЕМ ОН НУЖЕН?....287

10.2. ВИДЫ ИНДЕКСОВ....288

10.3. ИДЕНТИФИКАТОРЫ СТРОК В СУБД....289

10.4. ТИПЫ ИНДЕКСОВ В РАЗНЫХ СУБД....291

10.4.1. MS SQL Server....292

10.4.2. MySQL (InnoDB)....294

10.4.3. PostgreSQL....295

10.4.4. Обобщенная информация по индексам для разных СУБД....296

10.5. КАК ИНДЕКСЫ УСКОРЯЮТ ЗАПРОСЫ....298

10.5.1. Генерация больших объемов данных....298

Microsoft SQL Server....304

MySQL....305

PostgreSQL....306

10.5.2. Медленные запросы....307

Запрос 1. Количество посещений и средняя скидка для регулярных пользователей....307

Запрос 2. Разные пользователи с одинаковым IP....309

Анализ рефералов по группам....310

10.5.3. Добавляем индексы....312

Запрос 1 (количество посещений и средняя скидка)....312

Запрос 2 (общие IP-адреса для разных пользователей)....313

Запрос 3 (статистика посещений по реферальным группам)....314

10.5.4. Особенности синтаксиса....316

MS SQL Server — управление заполняемостью страниц....317

MySQL — префиксные индексы....319

MySQL, PostgreSQL— выбор типа индекса....320

Построение индекса без блокировки таблицы в PostgreSQL....320

Альтернативы для других СУБД....321

10.5.5. Фрагментация индексов и их перестройка....321

MS SQL Server....321

MySQL....323

PostgreSQL....324

10.5.6. Удаление и модификация индексов....326

10.6. АНАЛИЗ ПЛАНОВ ВЫПОЛНЕНИЯ....327

10.6.1. Планировщик запросов....327

10.6.2. Получение плана выполнения....328

MS SQL Server....328

MySQL....331

PostgreSQL....333

10.6.3. Как читать план выполнения?....333

Операции доступа к данным....334

Операции соединения (JOIN)....335

Операции сортировки и агрегации....337

10.7. ОПТИМИЗАЦИЯ ЗАПРОСОВ С ПОМОЩЬЮ ИНДЕКСОВ НА ПРАКТИКЕ....337

10.7.1. MS SQL Server....338

1-й этап. Подготовка СТЕ....339

2-й этап. Соединение с основной таблицей....339

3-й этап. Соединение с таблицей users....340

Финальный этап. Агрегация и сортировка....340

СТЕ....341

Присоединение СТЕ....341

Присоединение users....342

Финальный этап....342

10.7.2. MySQL....342

Этап 1. Обработка СТЕ....342

Этап 2. Присоединение СТЕ....343

Этап 3. Агрегация и сортировка....343

10.7.3. PostgreSQL....345

Ресурсоемкая сортировка....346

10.8. ДИАГНОСТИКА ПРОБЛЕМ ПРОИЗВОДИТЕЛЬНОСТИ....349

10.8.1. Неэффективные индексы....349

10.8.2. Статистика и ее роль....351

10.9. ЛУЧШИЕ ПРАКТИКИ И АНТИПАТТЕРНЫ....351

10.9.1. Рекомендации....352

10.9.2. Чего избегать....352

ЧТО УЗНАЛИ И ЧЕМУ МЫ НАУЧИЛИСЬ?....353

ГЛАВА 11. Представления (Views)....354

11.1. ЗАЧЕМ НУЖНЫ ПРЕДСТАВЛЕНИЯ?....355

11.2. СОЗДАНИЕ ТЕСТОВЫХ ДАННЫХ. ПРИМЕР РАСПРЕДЕЛЕНИЯ ГОНОРАРОВ И ВОЗНАГРАЖДЕНИЙ....357

11.3. РАБОТА С ПРЕДСТАВЛЕНИЯМИ....358

11.3.1. Синтаксис создания и абстракция сложности....359

11.3.2. Безопасность и логическое разделение данных....360

11.3.3. Обновляемые представления....361

11.3.4. Материализованные представления....362

11.4. КОГДА ПРЕДСТАВЛЕНИЯ МОГУТ МЕШАТЬ?....365

ЧТО УЗНАЛИ И ЧЕМУ МЫ НАУЧИЛИСЬ?....366

ГЛАВА 12. Транзакции, изоляция и блокировки....368

12.1. ПРИНЦИПЫ ACID....369

Atomicity (атомарность)....370

Consistency (Согласованность)....370

Isolation (Изолированность)....370

Durability (Долговечность)....370

12.2. ПРОЦЕСС ВЫПОЛНЕНИЯ ТРАНЗАКЦИИ....371

12.3. УРОВНИ ИЗОЛЯЦИИ ТРАНЗАКЦИЙ....372

12.4. РЕАЛИЗАЦИЯ УРОВНЕЙ ИЗОЛЯЦИИ В РАЗНЫХ СУБД. ПРИМЕР АВИАКАССЫ В ЧАС ПИК....374

12.4.1. Microsoft SQL Server....376

12.4.2. MySQL (InnoDB)....377

12.4.3. PostgreSQL....377

12.5. ПРАКТИЧЕСКАЯ РАБОТА С ТРАНЗАКЦИЯМИ. ПРИМЕР УПРОЩЕНОЙ БАНКОВСКОЙ СИСТЕМЫ....378

Задания для самостоятельной работы....381

12.6. БЛОКИРОВКИ....382

12.6.1. Виды блокировок....383

12.6.2. Как избегать взаимных блокировок?....385

12.6.3. Явное управление блокировками....386

12.6.4. Отключение блокировок (READ UNCOMMITTED)....389

12.6.5. Оптимистичная блокировка....390

ЧТО УЗНАЛИ И ЧЕМУ МЫ НАУЧИЛИСЬ?....392

ГЛАВА 13. Бизнес-логика. Хранимые процедуры и функции....394

13.1. СИНТАКСИС СОЗДАНИЯ....396

MS SQL Server....396

MySQL....397

PostgreSQL....398

13.2. ПЕРЕМЕННЫЕ....400

13.3. ПАРАМЕТРЫ....404

MS SQL Server....405

MySQL....405

PostgreSQL....405

13.4. ТИПЫ ПАРАМЕТРОВ, ФУНКЦИИ....406

13.4.1. Входные (IN), выходные (OUT) и смешанные (INOUT) параметры....406

Перегрузка в PostgreSQL....412

13.4.2. Функции....413

MS SQL Server....414

MySQL....415

PostgreSQL....417

13.4.3. Скалярные и табличные результаты....418

MS SQL Server....418

MySQL....418

PostgreSQL....419

13.5. ПРОВЕРКА УСЛОВИЙ, ВЕТВЛЕНИЯ....421

MS SQL Server....423

MySQL....424

PostgreSQL....425

13.6. ЦИКЛЫ....426

13.6.1. Организация циклов в разных СУБД....426

13.6.2. Досрочный выход из цикла, пропуск итерации....429

MS SQL Server....430

MySQL....430

PostgreSQL....431

13.6.3. Модификация процедуры записи на прием....431

MS SQLServer....432

MySQL....433

PostgreSQL....434

13.6.4. Курсоры. Построчная обработка запроса....435

13.6.5. Пример поднятия цен в книжном магазине....436

MS SQL Server....438

MySQL....440

PostgreSQL....441

13.7. ОБРАБОТКА ОШИБОК....443

13.7.1. MS SQL Server....444

13.7.2. MySQL....445

13.7.3. PostgreSQL....446

13.8. ТРИГГЕРЫ....448

13.8.1. Создание триггера....449

MS SQL Server....450

MySQL....451

PostgreSQL....452

13.8.2. Изменение триггеров....453

13.8.3. Вопросы производительности....453

MS SQL Server....454

MySQL....454

PostgreSQL....454

13.8.4. Советы....455

13.9. ПЛЮСЫ И МИНУСЫ ПЕРЕНОСА БИЗНЕС-ЛОГИКИ В СУБД....455

13.9.1. Что вы получаете, реализуя бизнес-логику в СУБД....455

13.9.2. Что плохого вы получите "в нагрузку....456

13.9.3. Переносить или не переносить?....457

ГЛАВА 14. Безопасность данных и управление пользователями....460

14.1. КЛЮЧЕВЫЕ КОНЦЕПЦИИ....462

14.1.1. Принцип наименьших привилегий....462

14.1.2. Субъекты безопасности....462

14.1.3. Схемы (Schemas)....464

14.2. ПРЕДОПРЕДЕЛЕННЫЕ (СИСТЕМНЫЕ) РОЛИ....465

14.3. ТИПЫ ПРИВИЛЕГИЙ. ЧТО МОЖНО РАЗРЕШИТЬ....466

14.4. УПРАВЛЕНИЕ ПОЛЬЗОВАТЕЛЯМИ И ПАРОЛЯМИ....467

14.4.1. Основные команды....467

MS SQL Server....467

MySQL....468

PostgreSQL....469

14.4.2. Смена пароля....470

MS SQL Server....470

MySQL....470

PostgreSQL....470

14.5. УПРАВЛЕНИЕ РОЛЯМИ....470

14.6. ПРЕДОСТАВЛЕНИЕ И ОТЗЫВ ПРИВИЛЕГИЙ....471

14.6.1. Правила указания объектов....472

MS SQLServer....472

MySQL....473

PostgreSQL....474

14.6.2. Наследование ролей в PostgreSQL....476

14.6.3. Антипаттерны....476

14.7. АУДИТ И ПРОФИЛАКТИКА....477

14.7.1. SQL Server....477

sys.database_role_members....478

sys.database_principals....478

14.7.2. MySQL....480

14.7.3. PostgreSQL....481

ЧТО УЗНАЛИ И ЧЕМУ МЫ НАУЧИЛИСЬ?....482

Заключение....484

Куда двигаться дальше?....485

Смежные технологии и направления....486

ГЛОССАРИЙ ТЕРМИНОВ....488

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ИНФОРМАЦИИ....510

У вас в руках — исчерпывающий гид по языку SQL, призванный помочь не просто освоить синтаксис, а глубоко понять принципы работы с данными и стать востребованным специалистом. Вы начнёте с абсолютного нуля, и каждый шаг — от установки СУБД до сложных запросов, — будет подкреплён практическими примерами (интернет-магазин, фитнес-клуб, банковская система, компьютерная игра, таксопарк, система регистрации в аэропорту, мониторинг состояния пациента в больнице и т.п.) и детальными объяснениями.

Понимая, что в мире не существует идеальной СУБД, книга разбирает каждую концепцию на примере трёх самых популярных систем: MySQL, PostgreSQL и Microsoft SQL Server. Такой подход позволит вам на практике увидеть их сильные и слабые стороны и избавиться от страха перед «незнакомой» средой, став по-настоящему гибким специалистом.

Особое внимание уделено «больным» темам, которые часто остаются за кадром в учебниках, но критически важны в работе: тонкости типов данных, кодировок и колляций, механизмы обеспечения целостности, транзакции, уровни изоляции и блокировки. Вы поймёте не только «как это работает», но и «почему это работает именно так». Также книга выходит за рамки чистого SQL и рассматривает архитектурные вопросы: стратегии «мягкого» удаления, плюсы и минусы переноса бизнес-логики в хранимые процедуры, принципы безопасности и управления доступом и т.д.

Отдельный фокус сделан на проектировании таблиц, индексах и анализе планов выполнения запросов. Вы научитесь писать не только рабочие, но и эффективные запросы. Именно это умение — ключевой навык в реальной работе и главное отличие любителя от профессионала.

Эта книга является не только идеальным стартом для начинающих разработчиков, аналитиков и будущих администраторов БД, но также будет полезна и специалистам, уже работающим с СУБД: помимо глубоких теоретических знаний, книга даёт настоящую прикладную уверенность в работе с тремя основными СУБД современного рынка.


Похожее:

Список отзывов:

Нет отзывов к книге.