#sql
🧹 DELETE vs TRUNCATE в SQL — почувствуй разницу ⚔️
Оба эти SQL-запроса удаляют данные из таблицы, но делают это совсем по-разному. И если ты случайно применишь не тот — можно потерять важные данные безвозвратно. Так в чём же разница?
🔪 DELETE
Удаляет по WHERE
Медленный (фиксирует каждую строку)
Можно откатить (ROLLBACK)
Срабатывают триггеры
✅ Используй, когда нужна точечная чистка.
💣 TRUNCATE
Удаляет всё
Молниеносный
Не всегда откатывается
Триггеры не срабатывают
⚠️ Используй, когда нужно полностью очистить таблицу и ты уверен в этом
А ты что чаще используешь — DELETE или TRUNCATE?
И бывало ли, что TRUNCATE сделал тебе больно? 😅
🧹 DELETE vs TRUNCATE в SQL — почувствуй разницу ⚔️
Оба эти SQL-запроса удаляют данные из таблицы, но делают это совсем по-разному. И если ты случайно применишь не тот — можно потерять важные данные безвозвратно. Так в чём же разница?
🔪 DELETE
Удаляет по WHERE
Медленный (фиксирует каждую строку)
Можно откатить (ROLLBACK)
Срабатывают триггеры
✅ Используй, когда нужна точечная чистка.
💣 TRUNCATE
Удаляет всё
Молниеносный
Не всегда откатывается
Триггеры не срабатывают
⚠️ Используй, когда нужно полностью очистить таблицу и ты уверен в этом
А ты что чаще используешь — DELETE или TRUNCATE?
И бывало ли, что TRUNCATE сделал тебе больно? 😅
#sql🔑 Что такое PRIMARY KEY в SQL?
Это уникальный идентификатор строки.
Пример:
CREATE TABLE users (
id INT PRIMARY KEY,
name TEXT
);
📌 Он:
✅ Уникальный
❌ Не может быть NULL
🔁 Бывает составной (из нескольких колонок)
🧱 Нужен для связи таблиц (FOREIGN KEY ссылается на него)
Это уникальный идентификатор строки.
Пример:
CREATE TABLE users (
id INT PRIMARY KEY,
name TEXT
);
📌 Он:
✅ Уникальный
❌ Не может быть NULL
🔁 Бывает составной (из нескольких колонок)
🧱 Нужен для связи таблиц (FOREIGN KEY ссылается на него)
#sql📊 Нормализация данных в SQL
🔎 Что это?
Нормализация — это процесс организации таблиц и связей в базе данных так, чтобы:
* не было дублирования информации,
* данные были целостными,
* изменения были проще.
📌 Идея: каждый факт хранится только один раз, а всё остальное связывается ключами.
🧱 Зачем нужна нормализация
* Избегаем дублей: один клиент — одна строка в Customers, а не в каждой таблице.
* Обеспечиваем целостность: если изменился email клиента, он изменится один раз, а не в 1000 заказов.
* Упрощаем обновление: меньше риска ошибок при изменениях.
* Экономим место: данные не копируются везде подряд.
📐 Нормальные формы (NFs)
1НФ (первая нормальная форма)
Каждое поле хранит только одно значение (атомарность).
❌ Плохо: phones = "123, 456, 789".
✅ Хорошо: таблица Phones с одной строкой = один телефон.
2НФ (вторая нормальная форма)
Все неключевые атрибуты зависят от всего первичного ключа, а не его части.
Актуально, если ключ составной.
3НФ (третья нормальная форма)
Нет зависимостей от других неключевых полей.
Данные зависят только от ключа, а не друг от друга.
🛒 Пример (без нормализации → с нормализацией)
❌ Плоская таблица Orders:
| order_id | customer_name | customer_email | product_name | price |
Проблемы:
* один и тот же клиент встречается сотни раз,
* изменился email → менять везде,
* риск ошибок и дублей.
✅ После нормализации:
* Customers(customer_id, name, email)
* Products(product_id, name, price)
* Orders(order_id, customer_id, product_id)
Теперь:
* у каждого клиента 1 запись,
* продукты не дублируются,
* заказы связывают всё через ключи.
🔎 Что это?
Нормализация — это процесс организации таблиц и связей в базе данных так, чтобы:
* не было дублирования информации,
* данные были целостными,
* изменения были проще.
📌 Идея: каждый факт хранится только один раз, а всё остальное связывается ключами.
🧱 Зачем нужна нормализация
* Избегаем дублей: один клиент — одна строка в Customers, а не в каждой таблице.
* Обеспечиваем целостность: если изменился email клиента, он изменится один раз, а не в 1000 заказов.
* Упрощаем обновление: меньше риска ошибок при изменениях.
* Экономим место: данные не копируются везде подряд.
📐 Нормальные формы (NFs)
1НФ (первая нормальная форма)
Каждое поле хранит только одно значение (атомарность).
❌ Плохо: phones = "123, 456, 789".
✅ Хорошо: таблица Phones с одной строкой = один телефон.
2НФ (вторая нормальная форма)
Все неключевые атрибуты зависят от всего первичного ключа, а не его части.
Актуально, если ключ составной.
3НФ (третья нормальная форма)
Нет зависимостей от других неключевых полей.
Данные зависят только от ключа, а не друг от друга.
🛒 Пример (без нормализации → с нормализацией)
❌ Плоская таблица Orders:
| order_id | customer_name | customer_email | product_name | price |
Проблемы:
* один и тот же клиент встречается сотни раз,
* изменился email → менять везде,
* риск ошибок и дублей.
✅ После нормализации:
* Customers(customer_id, name, email)
* Products(product_id, name, price)
* Orders(order_id, customer_id, product_id)
Теперь:
* у каждого клиента 1 запись,
* продукты не дублируются,
* заказы связывают всё через ключи.
#sql
Дана таблица Employee:
* id — уникальный идентификатор сотрудника (PRIMARY KEY)
* salary — зарплата сотрудника
Напишите SQL-запрос, который возвращает вторую по величине уникальную (distinct) зарплату из таблицы Employee.
Требования:
Если второй уникальной зарплаты нет, верните NULL.
Результат должен содержать одну строку и один столбец с названием SecondHighestSalary.
Дана таблица Employee:
* id — уникальный идентификатор сотрудника (PRIMARY KEY)
* salary — зарплата сотрудника
Напишите SQL-запрос, который возвращает вторую по величине уникальную (distinct) зарплату из таблицы Employee.
Требования:
Если второй уникальной зарплаты нет, верните NULL.
Результат должен содержать одну строку и один столбец с названием SecondHighestSalary.
❤1⚡1