Нормализация — это поэтапный процесс, происходит по шагам. Каждый шаг — это нормальная форма (НФ), которая обычно требует, чтобы предыдущий этап нормализации был выполнен. Всего их выделяют шесть, но чаще всего достаточно первых четырёх. Я рассмотрю их применение на простом примере.
Читать далее »Жрецы табличного культа

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

SQL-инъекция (SQL Injection) — это распространённая и весьма опасная уязвимость веб-приложений. Она позволяет злоумышленнику вмешиваться в SQL-запросы, исполняемые на сервере, и получить несанкционированный доступ к данным, изменить их или даже удалить. При этом, злоумышленнику часто достаточно иметь доступ к фронт-енд сайта или приложения, где он экспериментирует с передаваемыми на сервер параметрами.
Этот процесс также не сложно автоматизировать.
Читать далее »А что такое SERIAL и чем он отличается от INT?
В SQL, когда вы создаёте поле для идентификатора (id
), ключа в таблице, часто используется либо INT
, либо SERIAL
. Они похожи, но не совсем одно и то же.
Первичный и внешний ключ в SQL : простое объяснение
Когда вы впервые сталкиваетесь с базами данных, всё кажется немного запутанным: таблицы, строки, какие-то «ключи»… Но если объяснить это на живых примерах — всё становится куда яснее. Давайте разберёмся, что такое первичный ключ, внешний ключ, и ещё одно важное пон — суррогатный ключ.
Читать далее »SQL-антипаттерны: плохие JOIN’ы и как их избежать
JOIN — один из мощнейших инструментов в SQL. Но с большой силой приходит большая ответственность. Неверное использование JOIN может приводить к дублированию строк, утечке производительности, неявным ошибкам и даже разрушению логики приложения.
В этой статье рассмотрим примеры антипаттернов при использовании JOIN’ов, объясним, почему они плохи, и как их избегать.
Читать далее »JOIN vs UNION — в чём разница?
Эти два оператора в SQL на первый взгляд делают похожее — они «объединяют» таблицы. Но делают это по-разному и для разных целей.
Читать далее »Что такое CROSS JOIN
Конструкция CROSS JOIN
в SQL — это один из видов JOIN
, который создаёт декартово произведение двух таблиц: каждая строка из первой таблицы соединяется со всеми строками второй.
Группировка строковых значений в выборке из базы данных
Группировка по полю, содержащему число, используется значительно чаще, чем группировка по текстовому полю. Я думаю, вы использовали функции вроде AVG(), SUM(), MIN() или MAX(). А вот использование функций GROUP_CONCAT, JSON_ARRAYAGG и JSON_OBJECTAGG встречается на столько редко, что разработчики забывают о том, что группировка по текстовому полю вообще возможна.
Читать далее »SQL JOIN на пальцах: таблицы, примеры, схемы
Присоединение таблиц в запросах — это базовый инструмент в работе с базами данных. Давайте рассмотрим какие присоединения (JOIN) бывают, и что от этого меняется в результатах запроса.
Читать далее »