SQLab
УчёбаПрактикаЗадачиАренаРейтинг
© 2026 SQLab · Ташкент
SQLab

Учите SQL прямо в браузере — ничего не нужно устанавливать.

Платформа

  • Учёба
  • Практика
  • Задачи
  • Арена
  • Рейтинг

Для кого

  • Студентам
  • Преподавателям
  • Университетам
© 2026 SQLab. Все права защищены.Сделано в Узбекистане для студентов.
УчёбаПрактикаЗадачиАренаРейтинг
0/26

Основы

  • Что такое база данных?
  • Первый SELECT
  • WHERE: отбор нужных строк
  • IN, BETWEEN, LIKE и NULL
  • Сортировка, LIMIT и DISTINCT

Вычисления

  • Выражения, функции и CASE
  • Работа с датами
  • COUNT, SUM, AVG, MIN, MAX
  • GROUP BY и HAVING

Соединение таблиц

  • Ключи и связи
  • INNER JOIN
  • LEFT JOIN и строки без пары
  • Несколько таблиц и self join

Сложные запросы

  • Подзапросы
  • UNION, INTERSECT, EXCEPT
  • WITH: именованные запросы
  • Оконные функции

Создание и изменение таблиц

  • CREATE TABLE: типы и ограничения
  • INSERT, UPDATE, DELETE
  • ALTER, DROP, TRUNCATE
  • Как правильно спроектировать базу

Профессиональный уровень

  • Индексы и EXPLAIN
  • Транзакции и ACID
  • VIEW: сохранённые запросы
  • Функции, процедуры, триггеры
  • Пользователи, права и резервные копии
Учёба/Профессиональный уровень

VIEW: сохранённые запросы

246 мин

Писать один и тот же сложный запрос каждый раз заново неудобно. VIEW (представление) — сохранённый запрос: к нему обращаются как к таблице, но сам он данных не хранит.

Создание

CREATE VIEW student_cards AS
SELECT s.id, s.first_name, s.last_name, g.name AS group_name, f.name AS faculty
FROM students s
JOIN study_groups g ON g.id = s.group_id
JOIN faculties f ON f.id = g.faculty_id;

Теперь — как с таблицей:

SELECT * FROM student_cards WHERE faculty = 'Kiberxavfsizlik';

При каждом обращении запрос внутри выполняется заново, поэтому результат всегда свежий.

Зачем это нужно

  • простота — сложные JOIN пишутся один раз;
  • безопасность — пользователю открывают не всю таблицу, а только VIEW (например, без столбца зарплаты);
  • устойчивость — если структура таблиц изменится, достаточно поправить VIEW, и программы продолжат работать как прежде.

Изменение и удаление

CREATE OR REPLACE VIEW student_cards AS SELECT …;
DROP VIEW student_cards;

Изменение данных через представление

Через простое VIEW (одна таблица, без группировки) можно делать и UPDATE — изменения попадут в исходную таблицу. VIEW с JOIN, GROUP BY, DISTINCT обычно только для чтения.

Материализованное представление

В PostgreSQL MATERIALIZED VIEW сохраняет результат — для очень тяжёлых отчётов:

CREATE MATERIALIZED VIEW monthly_revenue AS
SELECT date_trunc('month', ordered_at) AS month, count(*) FROM orders GROUP BY 1;

REFRESH MATERIALIZED VIEW monthly_revenue;   -- обновить

Чтение быстрое, но результат остаётся старым, пока не выполнить REFRESH.

Упражнение

В свободном режиме загрузите готовую базу аптеки и создайте представление «каждая продажа: имя покупателя, название лекарства, сумма», а затем сделайте из него SELECT.

Запомните

  • VIEW — именованный сохранённый запрос, данных не хранит.
  • Упрощает сложные запросы и скрывает лишние столбцы.
  • Материализованное VIEW (PostgreSQL) хранит результат и обновляется через REFRESH.
Предыдущий урокТранзакции и ACIDСледующий урокФункции, процедуры, триггеры

Содержание

  • Создание
  • Зачем это нужно
  • Изменение и удаление
  • Изменение данных через представление
  • Материализованное представление
  • Упражнение
  • Запомните
УчёбаПрактикаЗадачиАренаРейтинг

SQLab