Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak stworzyć widok w Oracle

W tym poście chciałbym mówić o widokach Oracle, które są dość intensywnie używane w różnych aplikacjach ze względu na bezpieczeństwo i złożoność. Wymieniłbym pełny cykl życia widoku Oracle, tj. Jak utworzyć widok w Oracle, Przykład tworzenia widoku Oracle, jak zmień widok w Oracle,Jak skompilować widok w Oracle,Jak upuścić widok w Oracle,Wymuś widok w Oracle,Jak sprawdzić definicję widoku w Oracle .Dowiesz się, dlaczego Oracle View jest ważny i co można z nim zrobić .

Te same rzeczy są prawie poprawne również dla widoku sql

Co to jest widok Oracle?

- Widok Oracle to reprezentacja danych z jednej lub więcej tabel lub widoków Oracle.

– Widok Oracle to nazwane i zweryfikowane zapytanie SQL, które jest przechowywane w słowniku danych Oracle.

Widoki nie zawierają żadnych danych – to tylko zapytanie przechowywane w bazie danych, które można wykonać po wywołaniu. Wszystkie dane, które pokazuje, pochodzą z tabel podstawowych. Widok można traktować jako wirtualną tabelę lub mapowanie danych z jednego lub kilku

– Widok nie zajmuje miejsca poza definicją widoku w słowniku danych.

  • Widok może być używany do reprezentowania podzbioru danych (ze względów bezpieczeństwa), używany do reprezentowania nadzbioru danych (łączenie kilku tabel w jeden widok), do ukrywania złożonych sprzężeń, dostarczania znaczących nazw kolumn oraz do zminimalizuj zmiany aplikacji i źródeł danych.

- Tabele, do których istnieją odniesienia, to tabele podstawowe .

  • W celu utworzenia widoku użyj polecenia CREATE VIEW, a następnie zapytania SQL.

Przykład widoku tworzenia Oracle

CREATE VIEW view_name AS
SELECT columns
FROM tables
[WHERE conditions];

-Nazwy kolumn można określić za pomocą

 CREATE VIEW (col1, col2…) AS SELECT COL1, COL2… FROM …;

-Utworzenie widoku za pomocą CREATE FORCE VIEW spowoduje utworzenie widoku z błędami kompilacji.

-Możesz utworzyć widok tylko do odczytu, używając klauzuli WITH READ ONLY.

— Oracle 9i umożliwia tworzenie ograniczeń widoków.

-Ograniczenia dotyczące widoków nie są wymuszane, są ograniczeniami deklaratywnymi. Aby wymusić ograniczenia, musisz utworzyć ograniczenia w tabelach podstawowych. Podczas tworzenia ograniczeń widoków należy zawsze uwzględnić klauzulę DISABLE NOVALIDATE.

Uprawnienia wymagane do utworzenia widoku Oracle

Aby utworzyć widok we własnym schemacie, musisz mieć uprawnienie systemowe CREATE VIEW. Aby utworzyć widok w schemacie innego użytkownika, musisz mieć uprawnienie systemowe CREATE ANY VIEW.

Przykład tworzenia Oracle Views

View Creation
Create view emp_data  as select e.empno,e.ename,e.sal,e.deptno,d.dname
From emp e, dept d
where e.deptno=d.deptno;

Create view emp_high_sal  as select empno,ename,sal
From emp  where sal > 100000;
Describe the views
Desc Emp_data
Desc emp_high_sal
Select the data from view
Select * from emp_data;
select * from emp_high_sal

Jak zmodyfikować widok Oracle/jak zmienić widok w Oracle

Widoki możemy modyfikować za pomocą polecenia utwórz lub zamień widok. Pozwala to na zmianę widoku bez usuwania, odtwarzania i ponownego nadawania uprawnień do obiektów. Nie ma polecenia zmień widok dodaj kolumnę lub zmień widok zmodyfikuj kolumnę. Musimy przejść przez metodę tworzenia lub zastępowania widoku

Create or replace view emp_high_sal  as select empno,ename,sal
From emp  where sal > 200000;

To polecenie tworzy widok, jeśli nie istnieje i modyfikuje widok, jeśli istnieje. Wszystkie jednostki plsql, które uzyskują dostęp do widoku, staną się nieważne po modyfikacji widoku

Jak skompilować widok w Oracle

Ponowna kompilacja widoku odbywa się za pomocą

ALTER VIEW KOMPILUJ;

Alter view  emp_high_sal  compile;

Jak opuścić widok w Oracle

Upuszczenie widoku odbywa się za pomocą polecenia DROP VIEW.

Upuszczenie widoku nie ma wpływu na tabele podstawowe, na których oparty jest widok. Użytkownicy, którzy uzyskiwali dostęp do danych tabel podstawowych za pomocą widoku, nie będą już mogli uzyskać dostępu do danych tabel podstawowych.

DROP VIEW nazwa_widoku;

Drop view  emp_high_sal  ;

Tworzenie Force Oracle Views/force view w Oracle

Widok można utworzyć, nawet jeśli nie można wykonać zapytania definiującego widok, za pomocą polecenia CREATE FORCE VIEW. Taki widok nazywa się widokiem z błędami . Ta opcja może być przydatna w przypadku narzędzi importu/instalacji do tworzenia widoku przed pojawieniem się podstawowych obiektów.

Weźmy przykład, aby to zrozumieć. Nie mamy takiej tabeli jak TEST. Ale nadal możemy utworzyć na nim widok przed utworzeniem tabeli za pomocą opcji siły. Widok zostanie utworzony z błędem kompilacji i pozostanie nieprawidłowy

Create  force view TEST_V  as select col1,col2,col3 From test where col1 > 1000;

Teraz utwórz tabelę

create table TEST ( col1 number, col2 number, col3 number);

Teraz możesz skompilować widok i stanie się on prawidłowy

alter view TEST_V compile;

Co stanie się z widokiem, jeśli tabele podstawowe zostaną usunięte?

Jeśli bazowe tabele zostaną usunięte, Oracle nie usunie widoku automatycznie. Pozostaje w bazie danych i będzie w nieprawidłowym stanie. Jeśli tabele bazowe zostaną odtworzone, staną się ponownie ważne

Widoki słownika do przeglądania danych Oracle View

Szczegóły widoku można wyszukiwać ze słownika, wysyłając zapytania do USER_VIEWS, ALL_VIEWS lub DBA_VIEWS. Widoki są przydatne do zabezpieczania i ukrywania informacji, ale mogą powodować problemy, jeśli są zbyt głęboko zagnieżdżone. Niektóre zalety korzystania z widoków:

  • Zmniejsz złożoność instrukcji SQL
  • Udostępniaj innym użytkownikom tylko określone wiersze w tabeli
  • Ukryj NAZWĘ i WŁAŚCICIELA tabeli podstawowej
  • Istnieją trzy kategorie  widoków
USER_% Ten widok zawiera informacje tylko o obiektach należących do użytkownika Na przykład
USER_TABLES,USER_TAB_COLS
WSZYSTKO-% Widok ten zawiera informacje o obiektach, do których użytkownik ma dostęp w bazie danych.
Przykład
ALL_TABLES,ALL_TAB_COLS
DBA_% Ten widok zawiera informacje o wszystkich obiektach w systemie i są to widoki z ograniczeniami dostępne dla użytkownika z rolą DBA
Przykład
DBA_TABLES
DBA_% wyświetleń informacji o wyświetlaniu ALL_% wyświetleń na temat  informacje o wyświetlaniu USER_% wyświetleń informacji o wyświetlaniu
Kolumna, którą można aktualizować DBA_UPDATABLE_COLUMNS ALL_UPDATABLE_COLUMNS USER_UPDATABLE_COLUMNS
Wyświetl informacje o widoku dba_views wszystkie_widoki user_views

Wyświetlanie wszystkich widoków w Oracle

To list all views owned by the current user
select  view_name from user_views;

To list all views in a database:

Select  owner,view_name from dba_views;

To list views accessible to the current user:

select view_name from all_views;

To describe the view in sqlplus
desc <view_name>

Jak sprawdzić definicję widoku w Oracle

Zapytaj kolumnę TEXT tabeli DBA_VIEWS.

Syntax:
SQL> set long 10000

SQL> select TEXT
2  FROM DBA_VIEWS
3  where OWNER = '<owner_name>'
4  and VIEW_NAME  = '<view_name>';

Jak wyodrębnić definicję widoku (wyrażenia DDL) z bazy danych Oracle bez konieczności przechodzenia przez stos widoków słownikowych

Syntax:
SQL> set long 1000
SQL> set pagesize 0
SQL>select DBMS_METADATA.GET_DDL('VIEW','<view_name>') from DUAL

Mam nadzieję, że spodobał Ci się szczegółowy artykuł na temat widoku Oracle. Próbowałem odpowiedzieć na popularne zapytania dotyczące widoku, takie jak Jak utworzyć widok w Oracle, Przykład tworzenia widoku Oracle, Jak zmienić widok w Oracle, Jak skompilować widok w Oracle, Jak upuścić widok w Oracle, Wymuś widok w Oracle , Jak sprawdzić definicję widoku w Oracle

Powiązane artykuły do ​​przeczytania
oracle utwórz tabelę:Tabele są podstawową jednostką przechowywania danych w bazie danych Oracle. omawiamy, jak używać polecenia Oracle create table do tworzenia tabeli z kluczem obcym /kluczem podstawowym
tabele zewnętrzne w Oracle:Sprawdź ten post, aby uzyskać informacje na temat korzystania z tabeli zewnętrznej w Oracle z przykładem, jak to zrobić utworzyć zewnętrzną tabelę, jak jej używać
Sekwencje w Oracle:Czym jest Sekwencja w Oracle, Opis wszystkich opcji, Jak je utworzyć, Nowa funkcja sekwencji w Oracle 12c, Jak je usuwać i zmieniać
Indeksy w Oracle:Sprawdź informacje o indeksach Oracle, różne typy indeksów w Oracle z przykładem, jak utworzyć/upuścić/zmienić indeks w Oracle
Oracle Materialized Views:co to jest zmaterializowany widok Oracle, Oracle Materialized View Log, Grupa odświeżania, różnica między widokiem a widokiem zmaterializowanym
Jak monitorować postęp odświeżania widoków zmaterializowanych
oracle alter table modyfikuj typ kolumny:Sprawdź ten post na temat modyfikowania kolumn w Oracle za pomocą tabeli alter table zmodyfikować kolumnę. Modyfikuj kolumnę może zmieniać wartość domyślną, umożliwiając nie null
aktualizację widoku w Oracle :sprawdź ten post, aby zaktualizować widok w Oracle, wstawić do widoku oracle, usunąć z widoku w bazie danych Oracle

Polecane kursy

Oto fajny kurs Udemy dotyczący Oracle SQL
Oracle-Sql-Step-by-step :Ten kurs obejmuje podstawowy SQL, złączenia, tworzenie tabel i modyfikowanie ich struktury, tworzenie widoków, łączenie, łączenie i wiele innych rzeczy . Świetny kurs i obowiązkowy kurs dla początkujących SQL
Pełny kurs certyfikacji Oracle SQL :To dobry kurs dla każdego, kto chce być gotowy do pracy w zakresie umiejętności programistycznych SQL. Fajnie objaśniony kurs
Oracle SQL Developer:Essentials, Tips and Tricks :Narzędzie programistyczne Oracle SQL jest używane przez wielu programistów. Ten kurs zawiera sztuczki i lekcje, jak skutecznie z niego korzystać i zostać produktywnym programistą sql
Oracle SQL Performance Tuning Masterclass 2020 :Dostrajanie wydajności jest jedną z najważniejszych i najbardziej poszukiwanych umiejętności. To dobry kurs, aby się o tym dowiedzieć i zacząć dostrajać wydajność sql


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podzapytanie Oracle nie widzi zmiennej z zewnętrznego bloku o 2 poziomy w górę

  2. Jak pobrać aktualną wartość sekwencji wyroczni bez jej zwiększania?

  3. Jak wyeksportować wyniki zapytania do pliku CSV w SQLcl (Oracle)

  4. to jest błąd ORA-12154:TNS:nie można rozwiązać podanego identyfikatora połączenia?

  5. Mapowanie NHibernate dla typu danych Oracle INTERVAL DAY TO SECOND