Створення SQL VIEWS: Пояснення крок за кроком

Основи представлень SQL: як вони працюють та їх переваги

Для взаємодії з реляційними базами даних і формування SQL-запитів ми використовуємо мову SQL, або структуровану мову запитів.

Але що ж таке представлення SQL? По суті, це віртуальні таблиці, які об’єднують та зберігають дані з реальних таблиць бази даних, створених вами. Таким чином, ви отримуєте безпечний та спрощений спосіб доступу до даних, приховуючи складні структури та реалізації таблиць.

Як це функціонує? Ви вже знаєте, що для створення представлень SQL використовуються SQL-запити. При створенні представлення SQL зберігається базовий SQL-запит. Коли ви використовуєте SQL-запит для отримання даних з кількох таблиць, запит виконується і допомагає витягнути дані з потрібних таблиць бази даних. Аналогічно, коли ви надсилаєте запит до створеного представлення SQL, спочатку вибирається, а потім виконується збережений запит.

Переваги створення представлень SQL

Оскільки представлення SQL підтримуються збереженими SQL-запитами, вони сприяють захисту вашої бази даних. Крім того, вони спрощують складні запити та підвищують ефективність виконання запитів. Розгляньмо докладніше, як створення представлень SQL може бути корисним для вашої бази даних та ваших програм:

#1. Забезпечення безпеки бази даних

Представлення SQL функціонують як віртуальні таблиці, приховуючи структури реальних таблиць бази даних. Отже, просто подивившись на представлення, неможливо визначити, скільки таблиць задіяно та які існують різні стовпці в таблиці. Додатково, ви можете додати обмеження доступу до своєї бази даних, щоб користувач міг запитувати лише представлення, а не самі таблиці.

#2. Спрощення складних запитів

Часто ваші SQL-запити охоплюють кілька таблиць зі складними умовами з’єднання. Якщо ви часто використовуєте такі складні запити, створення представлень SQL стане в нагоді. Ви можете зберегти свій складний запит у своєму представленні SQL. Таким чином, ви зможете просто запитувати представлення, а не запускати весь складний запит.

#3. Захист від зміни структури

У випадку, якщо базова структура таблиці змінюється, наприклад, додаються або видаляються стовпці, представлення залишаються незмінними. Якщо ви покладаєтеся на свої представлення SQL для всіх своїх запитів, вам не потрібно хвилюватися про зміну структури. Оскільки вони є віртуальними таблицями, створене вами представлення SQL продовжить працювати без проблем.

#4. Підвищення продуктивності запитів

Під час створення представлення SQL механізм бази даних оптимізує базовий запит перед його збереженням. Збережений запит виконується швидше, ніж безпосереднє виконання того самого запиту. Тому використання представлень SQL для запиту даних забезпечує кращу продуктивність та швидші результати.

Як створити представлення SQL?

Для створення представлень SQL використовується команда CREATE VIEW. Представлення містить оператор SELECT, який визначає запит, що буде збережено у представленні. Синтаксис виглядає так:

CREATE VIEW view_name AS 
SELECT 
  column_1, 
  column_2, 
  column_3...
FROM 
  table_name_1, table_name_2
WHERE 
  condition_clause

Розглянемо це на конкретному прикладі. Припустимо, ви створили дві таблиці: “відділ” та “співробітник”. Таблиця “відділ” має назву відділу та його ідентифікатор. Таблиця “співробітник” містить ім’я та ідентифікатор працівника, а також ідентифікатор відділу, до якого він належить. Використаємо ці дві таблиці для створення представлення SQL.

Створення таблиць бази даних

department_id department_name
1 Finance
2 Technology
3 Business

Таблиця 1: Відділ

Якщо ви працюєте з MySQL, ви можете створити цю таблицю за допомогою наступного запиту:

CREATE TABLE `department` (
  `department_id` int,
  `department_name` varchar(255),
  PRIMARY KEY (`department_id`)
);

Заповніть таблицю даними за допомогою SQL-інструкцій:

INSERT INTO department VALUES (1, 'Finance');
INSERT INTO department VALUES (2, 'Technology');
INSERT INTO department VALUES (3, 'Business');
employee_id employee_name department_id
100 John 3
101 Mary 1
102 Natalya 3
103 Bruce 2

Таблиця 2: Співробітник

Після того, як таблиця “відділ” створена та заповнена, створіть таблицю “співробітник” за допомогою наступного запиту MySQL:

CREATE TABLE `employee` (
  `employee_id` INT, 
  `employee_name` VARCHAR(255), 
  `department_id` INT, 
  FOREIGN KEY (`department_id`) REFERENCES department(department_id)
);

Далі внесіть дані про співробітників до таблиці. Важливо пам’ятати, що оскільки стовпець `department_id` є зовнішнім ключем, що посилається на таблицю `department`, ви не можете вставити `department_id`, якого немає в іншій таблиці.

INSERT INTO employee VALUES (100, 'John', 3);
INSERT INTO employee VALUES (101, 'Mary', 1);
INSERT INTO employee VALUES (102, 'Natalya', 3);
INSERT INTO employee VALUES (103, 'Bruce', 2);

Запити до таблиць бази даних

Давайте використаємо ці таблиці в запиті до бази даних. Уявіть, що вам потрібно отримати `employee_id`, `employee_name` та `department_name` для всіх співробітників. Для цього вам потрібно використовувати обидві таблиці та з’єднати їх через спільний стовпець `department_id`. Ваш запит виглядатиме наступним чином:

SELECT
  employee_id,
  employee_name,
  department_name
FROM 
  employee,
  department
WHERE 
  employee.department_id = department.department_id;

Створення представлення SQL

З часом, якщо ви часто звертаєтеся до цих даних, і з ростом кількості записів у таблицях, час виконання запитів може збільшуватися. У такому випадку можна створити представлення SQL, яке відповідає цьому запиту.

Використайте наступний запит для створення представлення з назвою `employee_info`:

CREATE VIEW employee_info AS 
SELECT
  employee_id,
  employee_name, 
  department_name 
FROM 
  employee, 
  department 
WHERE 
  employee.department_id = department.department_id;

Тепер ви можете запитувати ці дані безпосередньо через представлення. Ваш запит спроститься до:

SELECT 
  * 
FROM 
  employee_info;

Запит до представлення SQL повертає такий самий результат, що й оригінальний запит. Проте, ваш запит тепер простіший для підтримки. Представлення приховує складність вашого запиту, не впливаючи на результат або продуктивність.

Як замінити представлення SQL?

Якщо у вас є представлення з певним ім’ям і ви хочете його змінити або замінити, використовуйте команду CREATE OR REPLACE VIEW. За допомогою неї ви можете змінити оператор SELECT, який використовувався для створення представлення. Таким чином, дані вашого представлення будуть оновлені, при цьому ім’я представлення залишиться незмінним. Крім того, ви створите нове представлення SQL, якщо воно ще не існує.

Синтаксис для заміни представлення SQL виглядає так:

CREATE OR REPLACE VIEW view_name AS 
SELECT 
  new_column_1, 
  new_column_2, 
  new_column_3 ...
FROM 
  new_table_name_1, 
  new_table_name_2 ...
WHERE 
  new_condition_clause

Розглянемо приклад. Є таблиці “відділ” та “співробітник”, з яких створено представлення SQL `employee_info`, що містить стовпці `employee_id`, `employee_name` та `department_name`.

З міркувань безпеки, ви можете захотіти видалити `employee_id` з цього представлення. Крім того, ви також можете змінити назви стовпців, щоб приховати фактичні стовпці бази даних. Ви можете внести ці зміни до існуючого представлення за допомогою такого SQL-запиту:

CREATE OR REPLACE VIEW employee_info AS
SELECT
  employee_name as name,
  department_name as department
FROM
  employee,
  department
WHERE
  employee.department_id = department.department_id;

Після заміни представлення, результати запиту будуть відрізнятися від попередніх. Наприклад, в результаті ви побачите, що один із стовпців вилучено. Крім того, назви стовпців змінено з `employee_name` та `department_name` на `name` та `department` відповідно.

Використовуйте переваги представлень SQL

Створення представлень SQL забезпечить вам не тільки спрощені запити та швидший пошук даних, але й безпеку та захист від змін структури. Створення представлень SQL є досить простим процесом. Ви можете взяти будь-який існуючий запит та перетворити його на представлення SQL.

Використовуйте наведений вище покроковий посібник, щоб створювати представлення SQL та користуватися їх перевагами. Завдяки представленням SQL ви зможете зробити ваші програми для роботи з базами даних простішими та безпечнішими, одночасно підвищуючи їхню продуктивність.

Якщо ви бажаєте керувати власним SQL-сервером, зверніть увагу на SQL Server Management Studio (SSMS).