текст перекладу
Повний посібник для початківців
Давайте розглянемо уявлення SQL — потужну функцію, яка робить роботу з базами даних простішою та організованішою. Я поясню все, що вам потрібно знати, з практичними прикладами.
Що таке уявлення?
Уявлення — це віртуальна таблиця, яка ґрунтується на результатах SQL-запиту. Уявіть, що це як збереження запиту, який ви можете використовувати пізніше, як звичайну таблицю.
-- Основна структура уявлення
CREATE VIEW employee_details AS
SELECT employee_id, first_name, last_name, department
FROM employees;
-- Використання уявлення
SELECT * FROM employee_details;
Що круто в уявленнях? Вони ідеальні для:
- Спрощення складних запитів
- Приховування складності даних
- Контролювання доступу до даних
- Повторного використання загальних запитів
Створення уявлень
-- Просте уявлення
CREATE VIEW active_employees AS
SELECT * FROM employees
WHERE status = 'active';
-- Уявлення з кількома таблицями
CREATE VIEW department_summary AS
SELECT
d.department_name,
COUNT(e.employee_id) as employee_count,
AVG(e.salary) as avg_salary
FROM departments d
JOIN employees e ON d.department_id = e.department_id
GROUP BY d.department_name;
Коли створювати уявлення:
- Для часто використовуваних запитів
- Щоб спростити складні відносини між таблицями
- Щоб створити користувацькі знімки даних
Модифікація уявлень
-- Оновлення уявлення
ALTER VIEW active_employees AS
SELECT employee_id, first_name, last_name, department, hire_date
FROM employees
WHERE status = 'active';
-- Видалення уявлення
DROP VIEW IF EXISTS active_employees;
-- Пересоздання уявлення
CREATE OR REPLACE VIEW active_employees AS
SELECT * FROM employees
WHERE status = 'active';
Типові модифікації уявлень:
- Додавання/видалення стовпців
- Зміна підґрунтя запиту
- Оновлення дозволів на уявлення
Переваги уявлень
-- Приклад безпеки даних
CREATE VIEW public_employee_info AS
SELECT first_name, last_name, department
FROM employees;
-- Зарплата та особиста інформація приховані
-- Спрощення складних запитів
CREATE VIEW sales_summary AS
SELECT
p.product_name,
c.category_name,
SUM(s.amount) as total_sales
FROM sales s
JOIN products p ON s.product_id = p.id
JOIN categories c ON p.category_id = c.id
GROUP BY p.product_name, c.category_name;
Основні переваги:
- Покращена безпека
- Спрощений доступ до даних
- Краща організація даних
- Зменшення складності запитів
Коли використовувати уявлення
-- Для безпеки даних
CREATE VIEW hr_employee_view AS
SELECT employee_id, first_name, last_name, department
FROM employees;
-- Для складних обчислень
CREATE VIEW product_metrics AS
SELECT
product_id,
product_name,
(sales_price - cost_price) as profit_margin,
(sales_count / total_inventory * 100) as stock_turnover
FROM products;
Ідеальні випадки використання:
- Приховування чутливих стовпців
- Спрощення складних з'єднань
- Створення уявлень для конкретних відділів
- Стандартизація обчислень
Поради:
- Називайте уявлення чітко і послідовно
- Документуйте мету уявлень
- Тримайте уявлення якнайпростішими
- Регулярно перевіряйте використання уявлень
Типові проблеми:
- Уявлення можуть впливати на продуктивність при складних запитах
- Не всі уявлення можна оновлювати
- Зміни в базових таблицях можуть порушити уявлення
- Уявлення не зберігають дані (за винятком матеріалізованих уявлень)
Перекладено з: SQL Views