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

Оглавление⌄
ГЛАВА 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 и рассматривает архитектурные вопросы: стратегии «мягкого» удаления, плюсы и минусы переноса бизнес-логики в хранимые процедуры, принципы безопасности и управления доступом и т.д.
Вы научитесь писать не только рабочие, но и эффективные запросы. Отдельный фокус сделан на проектировании таблиц, индексах и анализе планов выполнения запросов. Именно это умение — ключевой навык в реальной работе и главное отличие любителя от профессионала.
Эта книга является не только идеальным стартом для начинающих разработчиков, аналитиков и будущих администраторов БД, но также будет полезна и специалистам, уже работающим с СУБД: помимо глубоких теоретических знаний, книга даёт настоящую прикладную уверенность в работе с тремя основными СУБД современного рынка.
На этом основные моменты по теме закрыты.
Поделиться
Частые вопросы
Можно ли скачать «Базы данных на SQL, MySQL, MS SQL и Postgre/PL/pgSQL: Проектирование и практическая реализация» бесплатно?
Да, «Базы данных на SQL, MySQL, MS SQL и Postgre/PL/pgSQL: Проектирование и практическая реализация» доступна для бесплатного скачивания на нашем сайте в формате PDF. Ссылка на файл находится на этой странице.
В каком формате и какого размера файл?
Книга предоставляется в формате PDF, размер файла 34,8 МБ.
Кто автор и когда вышла книга?
автор — Аклимов Р. Р., издательство Наука и Техника, год выпуска 2026, 514 страниц.
О чём книга «Базы данных на SQL, MySQL, MS SQL и Postgre/PL/pgSQL: Проектирование и практическая реализация»?
У вас в руках — исчерпывающий гид по языку SQL, призванный помочь не просто освоить синтаксис, а глубоко понять принципы работы с данными и стать востребованным специалистом.