PostgreSQL - WIDOKI
Widoki są pseudotabelami. Oznacza to, że nie są one prawdziwymi stołami; niemniej jednak pojawiają się jako zwykłe tabele do wybrania. Widok może reprezentować podzbiór prawdziwej tabeli, wybierając określone kolumny lub określone wiersze ze zwykłej tabeli. Widok może nawet reprezentować połączone tabele. Ponieważ widoki mają oddzielne uprawnienia, można ich używać do ograniczania dostępu do tabel, tak aby użytkownicy widzieli tylko określone wiersze lub kolumny tabeli.
Widok może zawierać wszystkie wiersze tabeli lub wybrane wiersze z jednej lub wielu tabel. Widok można utworzyć z jednej lub wielu tabel, co zależy od wpisanego zapytania PostgreSQL w celu utworzenia widoku.
Widoki, które są rodzajem wirtualnych tabel, pozwalają użytkownikom wykonywać następujące czynności -
Strukturyzuj dane w sposób naturalny lub intuicyjny dla użytkowników lub klas użytkowników.
Ogranicz dostęp do danych tak, aby użytkownik mógł zobaczyć tylko ograniczone dane zamiast pełnej tabeli.
Podsumuj dane z różnych tabel, które można wykorzystać do generowania raportów.
Ponieważ widoki nie są zwykłymi tabelami, może nie być możliwe wykonanie instrukcji DELETE, INSERT lub UPDATE w widoku. Możesz jednak utworzyć REGUŁĘ, aby rozwiązać ten problem związany z używaniem opcji DELETE, INSERT lub UPDATE w widoku.
Tworzenie widoków
Widoki PostgreSQL są tworzone przy użyciu rozszerzenia CREATE VIEWkomunikat. Widoki PostgreSQL można tworzyć z pojedynczej tabeli, wielu tabel lub innego widoku.
Podstawowa składnia CREATE VIEW jest następująca -
CREATE [TEMP | TEMPORARY] VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];
Możesz dołączyć wiele tabel do instrukcji SELECT w bardzo podobny sposób, jak używasz ich w zwykłym zapytaniu SELECT PostgreSQL. Jeśli obecne jest opcjonalne słowo kluczowe TEMP lub TEMPORARY, widok zostanie utworzony w przestrzeni tymczasowej. Widoki tymczasowe są automatycznie usuwane po zakończeniu bieżącej sesji.
Przykład
Rozważmy, że tabela COMPANY zawiera następujące rekordy -
id | name | age | address | salary
----+-------+-----+------------+--------
1 | Paul | 32 | California | 20000
2 | Allen | 25 | Texas | 15000
3 | Teddy | 23 | Norway | 20000
4 | Mark | 25 | Rich-Mond | 65000
5 | David | 27 | Texas | 85000
6 | Kim | 22 | South-Hall | 45000
7 | James | 24 | Houston | 10000
Poniżej znajduje się przykład tworzenia widoku z tabeli COMPANY. Ten widok miałby tylko kilka kolumn z tabeli COMPANY -
testdb=# CREATE VIEW COMPANY_VIEW AS
SELECT ID, NAME, AGE
FROM COMPANY;
Teraz możesz wysłać zapytanie do COMPANY_VIEW w podobny sposób, jak w przypadku rzeczywistej tabeli. Oto przykład -
testdb=# SELECT * FROM COMPANY_VIEW;
Dałoby to następujący wynik -
id | name | age
----+-------+-----
1 | Paul | 32
2 | Allen | 25
3 | Teddy | 23
4 | Mark | 25
5 | David | 27
6 | Kim | 22
7 | James | 24
(7 rows)
Upuszczanie widoków
Aby usunąć widok, po prostu użyj instrukcji DROP VIEW z rozszerzeniem view_name. Podstawowa składnia DROP VIEW jest następująca -
testdb=# DROP VIEW view_name;
Poniższe polecenie usunie widok COMPANY_VIEW, który utworzyliśmy w ostatniej sekcji -
testdb=# DROP VIEW COMPANY_VIEW;