TGViewer
Дима SQL-ит 🧑‍💻 (Аналитика данных, AI) Дима SQL-ит 🧑‍💻 (Аналитика данных, AI) @dima_sqlit · 2.27K subscribers
Post #64 1.62K
😲 CTE vs Представления (VIEW - вьюхи) в SQL — простое объяснение: что это такое и в чём разница? Часть 1.

Многие путают CTE (Common Table Expressions) и представления (VIEW), потому что оба позволяют создавать "временные таблички" из запросов. Но под капотом они работают по-разному: CTE — для одного запроса, а представления — как сохранённые ярлыки. Давайте разберёмся на простых примерах.

Представим что у нас в базе данных есть таблица sales (продажи в магазине:
id | user_id     | product   |  amount  |     date
1 | 101 | Кофе | 500 | 2025-01-15
2 | 102 | Чай | 300 | 2025-01-16
3 | 101 | Печенье | 200 | 2025-01-17
4 | 103 | Кофе | 500 | 2025-01-18


1️⃣ Что такое представления (VIEW)?

Представление — это просто сохранённый SQL-запрос, который выглядит и работает как обычная таблица. Оно не хранит данные физически — каждый раз при обращении запрос выполняется заново, показывая свежие данные. Есть два типа: постоянные (живут пока не удалишь) и временные (исчезают с закрытием сеанса).

Сеанс — это период времени от подключения к базе данных до отключения от неё. Представьте: вы открываете DBeaver или другой SQL-клиент, подключаетесь к серверу — начинается сеанс. Вы выполняете запросы, создаёте временные объекты. Закрываете программу, отваливается соединение или истекает таймаут — сеанс заканчивается.

Пример постоянного представления:
-- Создаём постоянное VIEW
CREATE VIEW user_summary AS
SELECT user_id, COUNT(*) as order_count, SUM(amount) as total_spent
FROM sales GROUP BY user_id;

-- Используем как таблицу
SELECT * FROM user_summary WHERE total_spent > 400; -- ✅ Работает даже через неделю


Пример временного представления:
-- Создаём временное VIEW
CREATE TEMP VIEW temp_summary AS
SELECT user_id, COUNT(*) as order_count, SUM(amount) as total_spent
FROM sales GROUP BY user_id;

-- Работает в текущем сеансе
SELECT * FROM temp_summary; -- ✅

-- Новый сеанс (закрыли/открыли клиент) — исчезло
SELECT * FROM temp_summary; -- ❌ Ошибка!


2️⃣ Что такое CTE (Common Table Expressions)?

CTE — это обобщённое табличное выражение, временный результат запроса, который существует только в рамках одного SQL-запроса. Оно определяется с помощью WITH и исчезает сразу после выполнения. CTE удобно для разбиения сложных запросов на части, улучшая читаемость.

Простой пример CTE:
-- CTE для расчёта сумм по пользователям
WITH user_totals AS (
SELECT user_id, SUM(amount) as total_spent
FROM sales GROUP BY user_id
)
SELECT * FROM user_totals WHERE total_spent > 500; -- ✅ Работает в этом запросе

-- В следующем запросе CTE уже нет
SELECT * FROM user_totals; -- ❌ Ошибка!


3️⃣В чём разница между CTE и представлениями?

• Область видимости: CTE — только в одном запросе, представления — в сеансе (временные) или постоянно.
• Создание: CTE с WITH внутри запроса, представления с CREATE VIEW или CREATE TEMP VIEW.

Итог:
CTE и VIEW — это похожие инструменты, только с разным "сроком хранения". CTE — для быстрых фишек внутри одного запроса, типа "собрал данные на лету и сразу использовал". А представления — как готовые шаблоны, которые можно дёргать когда угодно, чтобы не писать одно и то же по сто раз.

🍸 Если вы нашли пост для себя полезным, то накидывайте реакций, чтобы я понимал, что вам эта тема интересна!
❤️Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)

❓ А вы в каких задачах используете CTE и VIEW? Знали про разницу? Делитесь в комментариях!
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

@dima_sqlit
  • ❤‍🔥 27
  • 🔥 15
More from @dima_sqlit
  1. Sep 22, 2026Что сейчас стоит изучать Аналитику — чтобы перейти в DS/ML ? Замечаю общий тренд на изучен…
  2. Sep 21, 2026🧠 Уровень абстракции — навык, который сэкономит вам годы учёбы: Когда я начинал изучать P…
  3. Sep 18, 2026🏦 Задача с собеса в Т-банк на SQL: вторая зарплата в отделе Условие: есть таблица сотрудн…
  4. Sep 16, 2026🏠 IT ипотека (Часть 3) — Как я сэкономил на ремонте: кэшбэк, промокоды и один неочевидный…
  5. Sep 7, 2026🍂 Осень — сезон найма: Каждый год одна и та же история — в сентябре рынок будто просыпает…
  6. Aug 24, 2026P-value простыми словами: Условие: подбросили монету 10 раз, выпало 9 орлов. Можно ли тепе…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →