Перейти к содержанию

Представления: сохранённые запросы как виртуальные таблицы

Начало урока

Представления: сохранённые запросы как виртуальные таблицы

Дайте запросу имя и используйте его повторно, как таблицу

Главная идея: Представление (view) — это сохранённый оператор SELECT, к которому можно обращаться так, будто это таблица. Оно не хранит собственных данных: каждый раз при чтении MySQL выполняет сохранённый запрос к настоящим (базовым) таблицам и возвращает свежий результат. Представления позволяют упаковать сложное соединение или фильтр под одним понятным именем, показать пользователю только нужные столбцы и строки и держать повторяющуюся логику в одном месте.
К концу темы вы сможете:
  • создавать представление через CREATE VIEW ... AS SELECT ...,
  • объяснить, как представление упрощает доступ, скрывая соединения и фильтры,
  • использовать представление для защиты доступа, показывая только часть столбцов и строк,
  • отличать обновляемое представление от только для чтения,
  • предвидеть подводные камни сопровождения, такие как SELECT * и изменения базовых таблиц.

1. Наша учебная схема

Все запросы ниже выполняются к одной небольшой базе интернет-магазина: таблица customers и таблица orders, связанные через customer_id. Создайте её один раз, и мы будем строить представления поверх неё.

CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    name        VARCHAR(50),
    city        VARCHAR(50),
    vip         BOOLEAN
);

CREATE TABLE orders (
    order_id    INT PRIMARY KEY,
    customer_id INT,
    order_date  DATE,
    amount      DECIMAL(8,2),
    status      VARCHAR(20),
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

INSERT INTO customers VALUES
    (1, 'Ava',  'London', TRUE),
    (2, 'Ben',  'Paris',  FALSE),
    (3, 'Chen', 'London', TRUE),
    (4, 'Dina', 'Berlin', FALSE);

INSERT INTO orders VALUES
    (101, 1, '2026-01-05', 120.00, 'shipped'),
    (102, 2, '2026-01-06',  45.50, 'shipped'),
    (103, 1, '2026-02-11', 300.00, 'pending'),
    (104, 3, '2026-02-14',  80.00, 'cancelled'),
    (105, 3, '2026-03-02', 210.00, 'shipped'),
    (106, 4, '2026-03-08',  15.00, 'shipped');

Четыре клиента, шесть заказов. Держите эти данные в голове — таблицы результатов ниже получены именно из них.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя