Как писать SQL-представления (VIEW)

Основной синтаксис

VIEW — виртуальная таблица, строящаяся на основе SQL-запроса.

CREATE VIEW название_представления AS
SELECT столбцы
FROM таблицы
JOIN ... ON ...
WHERE ...;

Пошаговая инструкция

  1. Шаг 1: Определите цель
    • Пример: "Непроданные питомцы", "Статистика продаж"
  2. Шаг 2: Выберите таблицы
    • dog, poroda, orders, category
  3. Шаг 3: Свяжите через JOIN
    SELECT *
    FROM dog
    JOIN poroda ON dog.id_por = poroda.id_por
    LEFT JOIN orders ON dog.id_dog = orders.id_dog
  4. Шаг 4: Добавьте фильтры
    • WHERE orders.id_ord IS NULL
    • WHERE date_ord >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
  5. Шаг 5: Укажите нужные столбцы
    SELECT dog.name_dog, poroda.poroda, category.category, orders.cost
  6. Шаг 6: Добавьте алиасы
    SELECT dog.name_dog AS Кличка, poroda.poroda AS Порода
  7. Шаг 7: Протестируйте запрос
    SELECT * FROM dog
    LEFT JOIN orders ON dog.id_dog = orders.id_dog
    WHERE orders.id_ord IS NULL;

Примеры задач

Пример 1: Непроданные питомцы

CREATE VIEW is_here AS
SELECT
  dog.id_dog AS ID,
  category.category AS Категория,
  poroda.poroda AS Порода,
  dog.name_dog AS Кличка,
  dog.color AS Окрас,
  dog.age AS Возраст,
  orders.cost AS Стоимость
FROM dog
JOIN poroda ON dog.id_por = poroda.id_por
JOIN category ON poroda.id_cat = category.id_cat
LEFT JOIN orders ON dog.id_dog = orders.id_dog
WHERE orders.id_ord IS NULL;

Пример 2: Статистика продаж

CREATE VIEW sales_by_category AS
SELECT
  category.category AS Категория,
  COUNT(orders.id_ord) AS Количество_продаж,
  SUM(orders.cost) AS Общая_сумма
FROM orders
JOIN dog ON orders.id_dog = dog.id_dog
JOIN poroda ON dog.id_por = poroda.id_por
JOIN category ON poroda.id_cat = category.id_cat
GROUP BY category.category;

Частые ошибки

Ошибка Решение
Неправильные JOIN Проверьте связи: dog.id_por → poroda.id_por
Некорректный WHERE Используйте IS NULL для поиска непроданных питомцев
Сложные запросы Разбивайте на части. Сначала проверьте SELECT
Дублирование данных Добавьте DISTINCT, если нужно убрать повторы

Как использовать VIEW

  • ✅ Запрос: SELECT * FROM is_here;
  • ✅ Обновление: данные обновляются в исходных таблицах
  • ✅ Удаление: DROP VIEW is_here;

Советы для экзамена

  • 🔍 Проверяйте запрос отдельно: сначала SELECT, потом CREATE VIEW
  • 🏷️ Используйте понятные названия: is_here → Непроданные_питомцы
  • 📦 Не усложняйте: добавляйте только нужные столбцы
  • 🧪 Тестируйте: SELECT * FROM view_name;
Создатель сайта не утверждает,
что данная шпаргалка действительно верная
Получить помощь