Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍9🤝7
📖 SQL Server Наладка и оптимизация для профессионалов
⬇️ Cкачать книгу
➡️ SQL Ready | #книга
Книга охватывает новейшие функции SQL Server, что делает её актуальной для профессионалов, стремящихся оставаться на переднем крае технологий
Автор: Дмитрий Короткевич
Год: 2023
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥4
• COALESCE — Возвращает первое ненулевое значение из списка переданных аргументов. Полезно для обработки NULL значений.
• ROW_NUMBER — Присваивает уникальный номер каждой строке в наборе данных на основе заданной сортировки. Часто используется для создания порядковых номеров или пагинации.
🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥5🤝3
This media is not supported in your browser
VIEW IN TELEGRAM
Live SQL — Интересная платформа для изучения SQL, в ней присутствует поиск по обучающим статьям, вы можете с легкостью обучиться именно тому, что вам сейчас нужно
⛓ Ссылочка: livesql.oracle
➡️ SQL Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
Работа с уникальными данными — ключевая задача в SQL. Рассмотрим приемы поиска, удаления и предотвращения дубликатов:
1. Поиск дубликатов
Используйте группировку и фильтрацию, чтобы найти повторяющиеся записи:
SELECT email, COUNT(*) AS occurrences
FROM users
GROUP BY email
HAVING COUNT(*) > 1;
2. Удаление дубликатов
Удалите повторяющиеся строки, сохранив только одну:
DELETE FROM users
WHERE id NOT IN (
SELECT MIN(id)
FROM users
GROUP BY email
);
3. Предотвращение дубликатов
Обеспечьте уникальность данных с помощью уникальных индексов:
CREATE UNIQUE INDEX unique_email ON users(email);
Этот индекс автоматически предотвращает добавление дублирующихся email
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3
Рассмотрим создание простой базы данных для учёта задач, где использовали две таблицы: одну для хранения задач, а другую для статусов задач
- Создание таблиц
- Извлечение данных
- Выполнение запросов
- Редактирование
🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥9🤝3
Рекурсивные запросы с CTE в SQL
Hазберем мощный инструмент — рекурсивные запросы с использованием CTE. Эта техника позволяет работать с иерархическими данными или решать задачи, требующие итераций:
Рекурсивный CTE — это временная таблица, которая ссылается на саму себя, чтобы обрабатывать данные поэтапно.
Предположим, у нас есть таблица
Сначала выбираем данные о целевом менеджере:
Теперь связываем подчиненных менеджера с данными базового уровня:
Наконец, извлекаем всю построенную иерархию:
Результат:
Если у
🔥 Рекурсивные CTE позволяют элегантно работать с иерархиями и выполнять сложные итеративные операции. Осваивая их, вы сможете эффективно решать задачи, которые раньше казались сложными или даже невозможными в SQL.
➡️ SQL Ready | #практика
Hазберем мощный инструмент — рекурсивные запросы с использованием CTE. Эта техника позволяет работать с иерархическими данными или решать задачи, требующие итераций:
Рекурсивный CTE — это временная таблица, которая ссылается на саму себя, чтобы обрабатывать данные поэтапно.
Предположим, у нас есть таблица
employees
с колонками: id
, name
, manager_id
. Сначала выбираем данные о целевом менеджере:
WITH RECURSIVE EmployeeHierarchy AS (
SELECT id, name, manager_id
FROM employees
WHERE name = 'Alice'
Теперь связываем подчиненных менеджера с данными базового уровня:
UNION ALL
SELECT e.id, e.name, e.manager_id
FROM employees e
INNER JOIN EmployeeHierarchy eh
ON e.manager_id = eh.id
)
Наконец, извлекаем всю построенную иерархию:
SELECT * FROM EmployeeHierarchy;
Результат:
Если у
Alice
есть прямые и косвенные подчиненные, запрос вернет их всех. 🔥 Рекурсивные CTE позволяют элегантно работать с иерархиями и выполнять сложные итеративные операции. Осваивая их, вы сможете эффективно решать задачи, которые раньше казались сложными или даже невозможными в SQL.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4🤝4
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥9🤝5
Сегодня поговорим о том, как NULL может неожиданно повлиять на результаты ваших запросов. Эта ловушка часто становится причиной неверных данных или неправильных выводов из базы.
NULL в условиях WHERE
На первый взгляд кажется, что
NULL
ведет себя как обычное значение, но это не так. Рассмотрим пример: SELECT *
FROM employees
WHERE salary = NULL;
-- Результат: 0 строк, даже если есть записи с NULL.
Почему так? В SQL сравнение с
NULL
всегда возвращает UNKNOWN
, а не TRUE
или FALSE
. Решение: Использование IS NULL
Чтобы правильно отфильтровать строки, нужно писать:
SELECT *
FROM employees
WHERE salary IS NULL;
-- Результат: Все строки с NULL в столбце salary.
Подводный камень: Агрегация с NULL
В агрегатных функциях
NULL
игнорируется. Например: SELECT AVG(salary)
FROM employees;
-- NULL-значения исключаются из расчета среднего.
Этот момент может быть полезным, но приводит к неожиданным результатам, если забыть об этом.
NULL и операторы
Будьте осторожны с арифметическими операциями:
SELECT salary + 1000 AS updated_salary
FROM employees;
-- Если salary = NULL, результат тоже будет NULL.
Используйте
IS NULL
и помните, что функции и операторы обрабатывают NULL
по-своему. Такой подход снизит риск логических ошибок в запросах.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍4🤝2