Представлення
Свайпніть щоб показати меню
У попередньому розділі ми згадували об'єкт під назвою view під час обговорення прав користувачів. Тепер розглянемо цей об'єкт детальніше.
View у SQL — це віртуальна таблиця, яка базується на результаті виконання SQL-запиту. Вона містить рядки та стовпці так само, як і реальна таблиця, а поля у view — це поля з однієї або декількох реальних таблиць у базі даних.
View використовуються з кількох причин, зокрема для спрощення складних запитів, підвищення безпеки шляхом обмеження доступу до певних даних і представлення даних у певному форматі.
Основні характеристики view
- Віртуальна таблиця: view не зберігає дані фізично. Вона отримує свої дані з таблиць, на яких базується (так звані базові таблиці);
- Спрощення складних запитів: view дозволяє спростити складні SQL-запити, інкапсулюючи їх у одну view. Це полегшує роботу зі складними об'єднаннями та агрегаціями;
- Безпека: view може обмежувати доступ до певних рядків або стовпців даних, підвищуючи безпеку. Користувачам можна надати доступ до view без надання доступу до базових таблиць;
- Послідовність: view може забезпечувати послідовний, незмінний інтерфейс навіть при зміні схеми бази даних.
Реалізація
Ми створимо view під назвою account_activity_view на основі таблиць BankAccounts та UserLogs, яка відображає номер рахунку, ім'я власника рахунку, баланс і останню виконану дію по рахунку.
1234567891011121314151617181920212223242526-- Create a view that shows account details along with their latest action CREATE OR REPLACE VIEW account_activity_view AS SELECT ba.account_number, -- Select the account number from the bankaccounts table ba.account_holder, -- Select the account holder's name from the bankaccounts table ba.balance, -- Select the balance from the bankaccounts table ul.action AS latest_action, -- Select the latest action from the userlogs table (alias as latest_action) ul.timestamp AS latest_action_time -- Select the timestamp of the latest action (alias as latest_action_time) FROM BankAccounts ba -- Main table: bankaccounts LEFT JOIN ( -- Subquery to get the most recent action for each account SELECT DISTINCT ON (account_number) account_number, -- Select the account number action, -- Select the action timestamp -- Select the timestamp FROM UserLogs ORDER BY account_number, -- Order by account number timestamp DESC -- Order by timestamp in descending order to get the latest action ) ul ON ba.account_number = ul.account_number; -- Join the subquery result with bankaccounts on account number -- Get data from the view SELECT * FROM account_activity_view;
CREATE VIEW account_activity_view AS
Цей оператор створює представлення з назвою account_activity_view, яке об'єднує інформацію з таблиці bankaccounts з останньою активністю з таблиці userlogs. Це забезпечує огляд власників рахунків, їхнього поточного балансу та їхньої останньої дії.
-
Головний блок
SELECT:ba.accountnumber:Вибір номера рахунку з таблиціbankaccounts.ba.accountholder:Вибір імені власника рахунку з таблиціbankaccounts.ba.balance:Вибір балансу з таблиціbankaccounts.ul.action AS latest_action:Вибір останньої дії з таблиціuserlogsз псевдонімомlatest_action.ul.timestamp AS latest_action_time:Вибір мітки часу останньої дії з псевдонімомlatest_action_time.
-
Блок
FROM:bankaccounts ba:Основна таблиця —bankaccounts, яка має псевдонімba.
-
Блок
LEFT JOIN:- Підзапит отримує найновішу дію для кожного рахунку.
SELECT DISTINCT ON (accountnumber):Забезпечує унікальність номерів рахунків, вибираючи лише найновіший запис для кожного рахунку.ORDER BY accountnumber, timestamp DESC:Сортує записи за номером рахунку, а потім за міткою часу у спадному порядку для отримання останньої дії.
-
Умова об'єднання:
ul ON ba.accountnumber = ul.accountnumber:Об'єднує результат підзапиту з таблицеюbankaccountsза номером рахунку.
Тепер це представлення можна використовувати в інших запитах без необхідності щоразу створювати складний запит із об'єднаннями — достатньо використовувати створене представлення як звичайну таблицю.
Хоча ми можемо використовувати подання як звичайну таблицю, це насправді не фізична таблиця! Дані у поданні не зберігаються на диску. Замість цього, щоразу при використанні подання його запит виконується, і отримані дані використовуються в основному запиті.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Представлення
У попередньому розділі ми згадували об'єкт під назвою view під час обговорення прав користувачів. Тепер розглянемо цей об'єкт детальніше.
View у SQL — це віртуальна таблиця, яка базується на результаті виконання SQL-запиту. Вона містить рядки та стовпці так само, як і реальна таблиця, а поля у view — це поля з однієї або декількох реальних таблиць у базі даних.
View використовуються з кількох причин, зокрема для спрощення складних запитів, підвищення безпеки шляхом обмеження доступу до певних даних і представлення даних у певному форматі.
Основні характеристики view
- Віртуальна таблиця: view не зберігає дані фізично. Вона отримує свої дані з таблиць, на яких базується (так звані базові таблиці);
- Спрощення складних запитів: view дозволяє спростити складні SQL-запити, інкапсулюючи їх у одну view. Це полегшує роботу зі складними об'єднаннями та агрегаціями;
- Безпека: view може обмежувати доступ до певних рядків або стовпців даних, підвищуючи безпеку. Користувачам можна надати доступ до view без надання доступу до базових таблиць;
- Послідовність: view може забезпечувати послідовний, незмінний інтерфейс навіть при зміні схеми бази даних.
Реалізація
Ми створимо view під назвою account_activity_view на основі таблиць BankAccounts та UserLogs, яка відображає номер рахунку, ім'я власника рахунку, баланс і останню виконану дію по рахунку.
1234567891011121314151617181920212223242526-- Create a view that shows account details along with their latest action CREATE OR REPLACE VIEW account_activity_view AS SELECT ba.account_number, -- Select the account number from the bankaccounts table ba.account_holder, -- Select the account holder's name from the bankaccounts table ba.balance, -- Select the balance from the bankaccounts table ul.action AS latest_action, -- Select the latest action from the userlogs table (alias as latest_action) ul.timestamp AS latest_action_time -- Select the timestamp of the latest action (alias as latest_action_time) FROM BankAccounts ba -- Main table: bankaccounts LEFT JOIN ( -- Subquery to get the most recent action for each account SELECT DISTINCT ON (account_number) account_number, -- Select the account number action, -- Select the action timestamp -- Select the timestamp FROM UserLogs ORDER BY account_number, -- Order by account number timestamp DESC -- Order by timestamp in descending order to get the latest action ) ul ON ba.account_number = ul.account_number; -- Join the subquery result with bankaccounts on account number -- Get data from the view SELECT * FROM account_activity_view;
CREATE VIEW account_activity_view AS
Цей оператор створює представлення з назвою account_activity_view, яке об'єднує інформацію з таблиці bankaccounts з останньою активністю з таблиці userlogs. Це забезпечує огляд власників рахунків, їхнього поточного балансу та їхньої останньої дії.
-
Головний блок
SELECT:ba.accountnumber:Вибір номера рахунку з таблиціbankaccounts.ba.accountholder:Вибір імені власника рахунку з таблиціbankaccounts.ba.balance:Вибір балансу з таблиціbankaccounts.ul.action AS latest_action:Вибір останньої дії з таблиціuserlogsз псевдонімомlatest_action.ul.timestamp AS latest_action_time:Вибір мітки часу останньої дії з псевдонімомlatest_action_time.
-
Блок
FROM:bankaccounts ba:Основна таблиця —bankaccounts, яка має псевдонімba.
-
Блок
LEFT JOIN:- Підзапит отримує найновішу дію для кожного рахунку.
SELECT DISTINCT ON (accountnumber):Забезпечує унікальність номерів рахунків, вибираючи лише найновіший запис для кожного рахунку.ORDER BY accountnumber, timestamp DESC:Сортує записи за номером рахунку, а потім за міткою часу у спадному порядку для отримання останньої дії.
-
Умова об'єднання:
ul ON ba.accountnumber = ul.accountnumber:Об'єднує результат підзапиту з таблицеюbankaccountsза номером рахунку.
Тепер це представлення можна використовувати в інших запитах без необхідності щоразу створювати складний запит із об'єднаннями — достатньо використовувати створене представлення як звичайну таблицю.
Хоча ми можемо використовувати подання як звичайну таблицю, це насправді не фізична таблиця! Дані у поданні не зберігаються на диску. Замість цього, щоразу при використанні подання його запит виконується, і отримані дані використовуються в основному запиті.
Дякуємо за ваш відгук!