O comando CREATE VIEW cria uma visão. A visão não é materializada fisicamente. Em vez disso, a consulta é executada toda vez que a visão é referenciada em uma consulta. [1] [2]
O comando CREATE OR REPLACE VIEW é semelhante, mas se já existir uma visão com o mesmo nome então esta é substituída. Uma visão somente pode ser substituída por uma nova consulta que produza um conjunto idêntico de colunas (ou seja, colunas com mesmos nomes e tipos de dado).
Se for fornecido o nome do esquema (por exemplo, CREATE VIEW meu_esquema.minha_visao ...) então a visão será criada no esquema especificado, senão será criada no esquema corrente. O nome da visão deve ser distinto do nome de qualquer outra visão, tabela, seqüência ou índice no mesmo esquema.
Atualmente, as visões são somente para leitura: o sistema não permite inserção, atualização ou exclusão em uma visão. É possível obter o efeito de uma visão atualizável criando regras que reescrevem as inserções, etc. na visão como ações apropriadas em outras tabelas. Para obter mais informações consulte o comando CREATE RULE .
Deve ser utilizado o comando DROP VIEW para remover uma visão.
Tome cuidado para que os nomes e os tipos das colunas da visão sejam atribuídos da maneira desejada. Por exemplo,
CREATE VIEW vista AS SELECT 'Hello World';
é ruim por dois motivos: o nome padrão da coluna é ?column?, e o tipo de dado padrão da coluna é unknown. Se for desejado um literal cadeia de caracteres no resultado da visão deve ser utilizado algo como
CREATE VIEW vista AS SELECT text 'Hello World' AS hello;
O acesso às tabelas referenciadas pela visão é determinado pelas permissões do dono da visão. Entretanto, as funções chamadas pela visão são tratadas da mesma maneira como se tivessem sido chamadas diretamente pela consulta que utiliza a visão. Portanto, o usuário da visão deve possuir permissão para chamar todas as funções utilizadas pela visão.
Criar uma visão mostrando todos os filmes de comédia:
CREATE VIEW comedias AS SELECT * FROM filmes WHERE tipo = 'Comédia';
O padrão SQL especifica algumas funcionalidades adicionais para o comando CREATE VIEW:
CREATE VIEW nome [ ( coluna [, ...] ) ] AS consulta [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]
As cláusulas opcionais para o comando SQL completo são:
O comando CREATE OR REPLACE VIEW é uma extensão do PostgreSQL à linguagem.
[1] |
A visão (estritamente, a definição da visão) é uma consulta nomeada, que pode para muitas finalidades ser utilizada da mesma maneira que uma tabela base. Seu valor é o resultado da avaliação da consulta. (ISO-ANSI Working Draft) Framework (SQL/Framework), August 2003, ISO/IEC JTC 1/SC 32, 25-jul-2003, ISO/IEC 9075-2:2003 (E) (N. do T.) |
[2] |
IBM — No Centro de Controle do DB2 8.1 view é traduzido como visualização. (N. do T.) |