CRIAR VISTA
Aplica-se a: Databricks SQL Databricks Runtime
Constrói uma tabela virtual que não tem dados físicos com base no conjunto de resultados de uma consulta SQL.
ALTER VIEW
e DROP VIEW
alterar apenas metadados.
Sintaxe
CREATE [ OR REPLACE ] [ TEMPORARY ] VIEW [ IF NOT EXISTS ] view_name
[ column_list ]
[ schema_binding ]
[ COMMENT view_comment ]
[ TBLPROPERTIES clause ]
AS query
schema_binding
WITH SCHEMA { BINDING | COMPENSATION | [ TYPE ] EVOLUTION }
column_list
( { column_alias [ COMMENT column_comment ] } [, ...] )
Parâmetros
OU SUBSTITUIR
Se já existir uma vista com o mesmo nome, esta é substituída. Para substituir um modo de exibição existente, você deve ser seu proprietário.
A substituição de um modo de exibição existente não preserva os privilégios concedidos no modo de exibição original. Use ALTER VIEW para preservar privilégios.
TEMPORÁRIO
As vistas TEMPORÁRIAS são visíveis apenas para a sessão que as criou e são eliminadas quando a sessão termina.
GLOBAL TEMPORÁRIO
Aplica-se a: Databricks Runtime
As visualizações GLOBAIS TEMPORARY estão vinculadas a um esquema
global_temp
temporário preservado pelo sistema.SE NÃO EXISTIR
Cria o modo de exibição somente se ele não existir. Se já existir uma vista com este nome, a
CREATE VIEW
instrução é ignorada.Você pode especificar no máximo um dos
IF NOT EXISTS
ouOR REPLACE
.-
O nome do modo de exibição recém-criado. O nome de um modo de exibição temporário não deve ser qualificado. O nome do modo de exibição totalmente qualificado deve ser exclusivo.
As vistas criadas em
hive_metastore
só podem conter carateres ASCII alfanuméricos e sublinhados (INVALID_SCHEMA_OR_RELATION_NAME). schema_binding
Aplica-se a: Databricks Runtime 15.3 e superior
Opcionalmente, especifica como o modo de exibição se adapta a alterações no esquema da consulta devido a alterações nas definições de objeto subjacentes.
Esta cláusula não é suportada para vistas temporárias ou vistas materializadas.
COM VINCULAÇÃO DE ESQUEMA
O modo de exibição se tornará inválido se a lista de colunas de consulta for alterada, exceto para as seguintes condições:
- A lista de colunas inclui uma cláusula de estrela e há colunas adicionais. Essas colunas adicionais são ignoradas.
- O tipo de uma ou mais colunas foi alterado de forma a permitir que elas sejam convertidas com segurança para os tipos de coluna originais usando regras de transmissão implícitas.
Este é o comportamento predefinido.
COM COMPENSAÇÃO DE ESQUEMA
O modo de exibição se tornará inválido se a lista de colunas de consulta for alterada, exceto para as seguintes condições:
- A lista de colunas inclui uma cláusula de estrela e há colunas adicionais. Essas colunas adicionais são ignoradas.
- O tipo de uma ou mais colunas foi alterado de forma a permitir que elas sejam convertidas para os tipos de coluna originais usando regras de conversão ANSI explícitas.
COM EVOLUÇÃO DO TIPO DE ESQUEMA
O modo de exibição adotará quaisquer alterações nos tipos na lista de colunas de consulta em sua própria definição quando o compilador SQL detetar tal alteração em resposta a uma referência ao modo de exibição.
COM EVOLUÇÃO DO ESQUEMA
- Esse modo se comporta como
WITH SCHEMA TYPE EVOLUTION
, e também adota alterações nos nomes das colunas ou colunas adicionadas e soltas se a exibição não incluir um arquivocolumn_list
. - O modo de exibição só se tornará inválido se a consulta não puder mais ser analisada ou se o modo de exibição
column_list
opcional não corresponder mais ao número de expressões naquery
lista de seleção.
- Esse modo se comporta como
column_list
Opcionalmente, rotula as colunas no resultado da consulta do modo de exibição. Se você fornecer uma lista de colunas, o número de aliases de coluna deverá corresponder ao número de expressões na consulta. Caso nenhuma lista de colunas seja especificada, os aliases são derivados do corpo da exibição.
-
Os aliases de coluna devem ser exclusivos.
column_comment
Um literal opcional
STRING
que descreve o alias da coluna.
-
view_comment
Um literal opcional
STRING
que fornece comentários no nível de exibição.-
Opcionalmente, define uma ou mais propriedades definidas pelo usuário.
-
Uma consulta que constrói o modo de exibição a partir de tabelas base ou outros modos de exibição.
Exemplos
-- Create or replace view for `experienced_employee` with comments.
> CREATE OR REPLACE VIEW experienced_employee
(id COMMENT 'Unique identification number', Name)
COMMENT 'View for experienced employees'
AS SELECT id, name
FROM all_employee
WHERE working_years > 5;
-- Create a temporary view `subscribed_movies`.
> CREATE TEMPORARY VIEW subscribed_movies
AS SELECT mo.member_id, mb.full_name, mo.movie_title
FROM movies AS mo
INNER JOIN members AS mb
ON mo.member_id = mb.id;
-- Create a view with schema binding (default)
> CREATE TABLE emp(name STRING, income INT);
> CREATE VIEW emp_v WITH SCHEMA BINDING AS SELECT * FROM emp;
– The view ignores adding a column to the base table
> ALTER TABLE emp ADD COLUMN bonus SMALLINT;
> SELECT * FROM emp_v;
name income
---- ------
-- The view tolerates narrowing the underlying type
> CREATE OR REPLACE TABLE emp(name STRING, income SMALLINT, bonus SMALLINT);
> SELECT typeof(income) FROM emp_v;
INTEGER
– The view does not tolerate widening the underlying type
CREATE OR REPLACE TABLE emp(name STRING, income BIGINT, bonus SMALLINT);
> SELECT typeof(income) FROM emp_v;
Error
– Create a view with SCHEMA COMPENSATION
> CREATE TABLE emp(name STRING, income SMALLINT, bonus SMALLINT);
> CREATE VIEW emp_v WITH SCHEMA COMPENSATION AS SELECT * FROM emp;
-- The view tolerates widening the underlying type but keeps its own signature fixed
CREATE OR REPLACE TABLE emp(name STRING, income INTEGER, bonus INTEGER);
> SELECT typeof(income) FROM emp_v;
INTEGER
-- The view does not tolerate dropping a needed column
ALTER TABLE emp DROP COLUMN bonus;
> SELECT * FROM emp_v;
Error
– Create a view with SCHEMA EVOLUTION
> CREATE TABLE emp(name STRING, income SMALLINT);
> CREATE VIEW emp_v WITH SCHEMA EVOLUTION AS SELECT * FROM emp;
-- The view picks up additional columns
> ALTER TABLE emp ADD COLUMN bonus SMALLINT
> SELECT * FROM emp_v;
name income bonus
---- ------ -----
-- The view picks up renamed columns as well
> ALTER TABLE emp RENAME COLUMN income TO salary SMALLINT;
> SELECT * FROM emp_v;
name salary bonus
---- ------ -----
-- The view picks up changes to column types and dropped columns
> CREATE OR REPLACE TABLE emp(name STRING, salary BIGINT);
> SELECT *, typeof(salary)AS salary_type FROM emp_v;
name salary
---- ------