Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
CREATE VIEW
Crea una vista in un database. La vista non è materializzata fisicamente, la query che definisce la vista viene eseguita ogni volta che vi si fa riferimento in una query. Per creare una vista con una tabella esterna, includi la clausola NO. WITH SCHEMA BINDING
Per creare una vista standard, devi accedere alle tabelle o alle viste sottostanti. Per eseguire una query su una vista standard, devi selezionare le autorizzazioni per la vista, ma non quelle per le tabelle sottostanti. Nel caso in cui crei una vista che fa riferimento a una tabella o a una vista in un altro schema o a una vista materializzata, potrebbero essere necessarie autorizzazioni aggiuntive. Per eseguire una query su una vista con associazione tardiva, devi selezionare le autorizzazioni per la vista con associazione tardiva stessa. È inoltre necessario assicurarsi che il proprietario della vista con associazione tardiva disponga delle autorizzazioni di selezione per gli oggetti a cui si fa riferimento (tabelle, viste o funzioni definite dall'utente). Per ulteriori informazioni sulle viste con associazione tardiva, consulta Note per l'utilizzo.
Autorizzazioni richieste
Per utilizzarlo CREATEVIEW, è richiesta una delle seguenti autorizzazioni.
Per creare una vista utilizzando CREATE [ORREPLACE]VIEW:
Superuser
Utenti con l'VIEWautorizzazione CREATE [REPLACE]
Per sostituire una vista esistente utilizzando CREATE OR REPLACEVIEW:
Superuser
Utenti con l'VIEWautorizzazione CREATE [ORREPLACE]
Proprietario della visualizzazione
Se un utente desidera accedere a una vista che incorpora una funzione definita dall'utente, deve disporre dell'EXECUTEautorizzazione per tale funzione.
Sintassi
CREATE [ OR REPLACE ] VIEW name [ ( column_name [, ...] ) ] AS query [ WITH NO SCHEMA BINDING ]
Parametri
- OPPURE REPLACE
-
Se esiste già una vista con lo stesso nome, la vista viene sostituita. Puoi sostituire una vista solo con una nuova query che genera un set identico di colonne, usando gli stessi nomi di colonna e tipi di dati. CREATEOR REPLACE VIEW blocca la visualizzazione per le letture e le scritture fino al completamento dell'operazione.
Quando una vista viene sostituita, vengono mantenute le altre proprietà, ad esempio la proprietà e i privilegi concessi.
- name
-
Nome della vista. Se viene specificato un nome schema (come
myschema.myview
), la vista viene creata utilizzando lo schema specificato. Altrimenti, la vista viene creata nello schema corrente. Il nome della vista deve essere diverso dal nome di qualsiasi altra vista o tabella nello stesso schema.Se specifichi un nome di vista che inizia con "#", la vista viene creata come vista temporanea visibile solo nella sessione corrente.
Per ulteriori informazioni sui nomi validi, consultare Nomi e identificatori. Non è possibile creare tabelle o viste nei database di sistema template0, template1, padb_harvest o sys:internal.
- column_name
-
Elenco facoltativo di nomi da utilizzare per le colonne nella vista. Se non vengono specificati nomi di colonne, i nomi delle colonne vengono ricavati dalla query. Il numero massimo di colonne che puoi definire in una singola vista è 1.600.
- query
-
Una query (sotto forma di SELECT istruzione) che restituisce una tabella. Questa tabella definisce le colonne e le righe nella vista.
- WITHNO SCHEMA BINDING
-
Clausola che specifica che la vista non è vincolata agli oggetti del database sottostante, come le tabelle e le funzioni definite dall'utente. Di conseguenza, non esiste alcuna dipendenza tra la vista e gli oggetti a cui fa riferimento. Puoi creare una vista anche se gli oggetti di riferimento non esistono. Poiché non esiste alcuna dipendenza, è possibile rimuovere o modificare un oggetto di riferimento senza influire sulla vista. Amazon Redshift non controlla le dipendenze finché non viene interrogata la vista. Per visualizzare i dettagli sulle viste con associazione tardiva, esegui la funzione GETPG_ _ _ _ LATE BINDING VIEW COLS.
Quando si include la SCHEMA BINDING clausola WITH NO, le tabelle e le viste a cui si fa riferimento nell'SELECTistruzione devono essere qualificate con un nome di schema. Lo schema deve esistere quando viene creata la vista, anche se la tabella di riferimento non esiste. Ad esempio, la seguente istruzione restituisce un errore.
create view myevent as select eventname from event with no schema binding;
La seguente istruzione viene eseguita normalmente.
create view myevent as select eventname from public.event with no schema binding;
Nota
Non puoi eseguire operazioni di aggiornamento, inserimento o eliminazione da una vista.
Note per l'utilizzo
Viste con associazione tardiva
Una vista con associazione tardiva non controlla gli oggetti del database sottostante, come le tabelle e altre viste, finché non viene eseguita la query sulla vista. Di conseguenza, puoi modificare o rimuovere gli oggetti sottostanti senza rimuovere e ricreare la vista. Se rimuovi gli oggetti sottostanti, le query sulla vista con associazione tardiva avranno esito negativo. Se la query sulla vista con associazione tardiva fa riferimento a colonne nell'oggetto sottostante che non sono presenti, la query avrà esito negativo.
Se rimuovi e quindi ricrei una vista o una tabella sottostante di una vista con associazione tardiva, il nuovo oggetto viene creato con le autorizzazioni di accesso predefinite. Potrebbe essere necessario concedere le autorizzazioni agli oggetti sottostanti per gli utenti che eseguono query sulla vista.
Per creare una vista con associazione tardiva, includete la clausola NO. WITH SCHEMA BINDING Nell'esempio seguente viene creata una vista senza associazione di schema.
create view event_vw as select * from public.event with no schema binding;
select * from event_vw limit 1;
eventid | venueid | catid | dateid | eventname | starttime --------+---------+-------+--------+---------------+-------------------- 2 | 306 | 8 | 2114 | Boris Godunov | 2008-10-15 20:00:00
L'esempio seguente mostra che puoi modificare una tabella sottostante senza ricreare la vista.
alter table event rename column eventname to title;
select * from event_vw limit 1;
eventid | venueid | catid | dateid | title | starttime --------+---------+-------+--------+---------------+-------------------- 2 | 306 | 8 | 2114 | Boris Godunov | 2008-10-15 20:00:00
È possibile fare riferimento alle tabelle esterne di Amazon Redshift Spectrum solo in una vista con associazione tardiva. Un'applicazione delle viste con associazione tardiva è quella di eseguire la query sulle tabelle Amazon Redshift e Redshift Spectrum. Ad esempio, è possibile utilizzare il comando UNLOAD per archiviare i dati meno recenti in Amazon S3. Quindi, creare una tabella esterna Redshift Spectrum che fa riferimento ai dati in Amazon S3 e una vista che esegue le query su entrambe le tabelle. L'esempio seguente utilizza una UNION ALL clausola per unire la tabella Amazon SALES
Redshift e la tabella Redshift Spectrum. SPECTRUM.SALES
create view sales_vw as select * from public.sales union all select * from spectrum.sales with no schema binding;
Per ulteriori informazioni sulla creazione di tabelle esterne di Redshift Spectrum, inclusa la tabella SPECTRUM.SALES
, vedi Nozioni di base su Amazon Redshift Spectrum.
Quando crei una vista standard da una vista con associazione tardiva, la definizione della vista standard contiene la definizione della vista con associazione tardiva. La dipendenza della vista con associazione tardiva non viene tracciata, quindi le modifiche alla vista con associazione tardiva non vengono tracciate nella vista standard.
Per aggiornare la vista standard in modo che faccia riferimento alla definizione più recente della vista late-binding, esegui CREATE OR REPLACE VIEW con la definizione di visualizzazione iniziale che hai usato per creare la vista standard.
Di seguito è riportato un esempio di creazione di una vista standard da una vista con associazione tardiva.
create view sales_vw_lbv as select * from public.sales with no schema binding; show view sales_vw_lbv; Show View DDL statement -------------------------------------------------------------------------------- create view sales_vw_lbv as select * from public.sales with no schema binding; (1 row) create view sales_vw as select * from sales_vw_lbv; show view sales_vw; Show View DDL statement --------------------------------------------------------------------------------------------------------------------- SELECT sales_vw_lbv.price, sales_vw_lbv."region" FROM (SELECT sales.price, sales."region" FROM sales) sales_vw_lbv; (1 row)
Tieni presente che la visualizzazione late-binding, come illustrata nell'DDListruzione per la visualizzazione standard, viene definita al momento della creazione della visualizzazione standard e non verrà aggiornata con le modifiche apportate successivamente alla visualizzazione late-binding.
Esempi
I comandi di esempio utilizzano un set di oggetti e dati di esempio chiamato database. TICKIT Per ulteriori informazioni, consulta Database di esempio.
Il comando seguente crea una vista chiamata myevent da una tabella chiamataEVENT.
create view myevent as select eventname from event where eventname = 'LeAnn Rimes';
Il comando seguente crea una vista chiamata myuser da una tabella chiamata. USERS
create view myuser as select lastname from users;
Il comando seguente crea o sostituisce una vista denominata myuser da una tabella chiamata. USERS
create or replace view myuser as select lastname from users;
Nell'esempio seguente viene creata una vista senza associazione di schema.
create view myevent as select eventname from public.event with no schema binding;