Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAntônia Capistrano Gusmão Alterado mais de 5 anos atrás
1
Daniel Paulo dptsalvador@hotmail.com
SQL Server Módulo II Daniel Paulo
2
Capítulo 6 – VIEWS Uma VIEW é uma tabela virtual proveniente de tabelas referenciadas numa consulta. Tipos de Views Standarts: Dados de uma tabela, virtual, dados provenientes de uma ou mais views ou tabela base Indexadas: Obtido por meio da criação de um índice clusterizado sobre a view Particionadas: Permite que dados de grandes tabelas sejam particionadas em visualizações menores.
3
Vantagens Reutilização: São utilizadas por vários usuários de forma simultânea Redução de Custo de execução: Os resultados já computados que ficam armazenados em uma VIEW indexada são empregados pelo otimizador de query Segurança: Ocultam colunas de uma tabela Compatibilidade: VIEWS são capazes de criar uma interface com versões anteriores, simulando uma tabela que teve seu esquema modificado Cópia de dados: Pode ser útil no particionamento dos dados de cópia para o SQL ou a partir dele. Simplificação do Código: Criação de um código de programação mais limpo na medida em que podem conter um SELECT mais complexo.
4
Restrições Gerar duas colunas com mesmo nome
Utilizar ORDER BY, a não ser que seja incluída a cláusula TOP Utilizar a palavra INTO Fazer referência a uma tabela temporária Utilizar variáveis SELECT * se a SCHEMABINDING não for especificada Máximo 1024 colunas As VIEWS podem ter aninhamento em até 32 níveis A instrução CREATE VIEW deve ser a única instrução em um batch
5
A tabela SYSCOMMENTS Esta tabela é composta por entradas para cada um dos seguintes itens de um banco de dados: Constraint Default, constraint CHECK, stored procedures, views, regras, padrões e trigger SELECT TEXT FROM SYSCOMMENTS
6
VIEWS de Catálogo Representam a interface mais geral para os metadados de catálogo Exemplo: SELECT * FROM sys.objects SELECT * FROM sys.TABLES
7
CREATE VIEW With ENCRYTION - Protege o código fonte, impedindo que ele seja aberto a partir do Object Explorer WITH SCHEMABINDING - Cria uma view ligada às estruturas das tabelas às quais faz referência. Não permite alterar a tabela sem que a VIEW seja alterada WITH CHECK OPTION - Impede a inclusão e a alteração de dados através da view que sejam incompatíveis com a cláusula WHERE da instrução SELECT
8
Exemplo -- Exemplo USE PEDIDOS Criando a VIEW CREATE VIEW VIE_EMP1 AS SELECT CODFUN, NOME, DATA_ADMISSAO, COD_DEPTO, COD_CARGO, SALARIO FROM EMPREGADOS -- Testando a VIEW SELECT * FROM VIE_EMP1
9
Utilizando ENCRYPTION
CREATE VIEW VIE_EMP2_A WITH ENCRYPTION AS SELECT TOP 100 CODFUN, NOME, DATA_ADMISSAO, COD_DEPTO, COD_CARGO, SALARIO FROM EMPREGADOS ORDER BY NOME OBS: Procure esta view no Object Explorer e dê um click direito sobre ela
10
Utilizando WITH SCHEMABILINDING
CREATE VIEW VIE_EMP3 WITH ENCRYPTION , SCHEMABINDING AS SELECT CODFUN, NOME, DATA_ADMISSAO, COD_DEPTO, COD_CARGO, SALARIO, NUM_DEPEND FROM DBO.EMPREGADOS
11
Testando -- Testando a VIEW SELECT * FROM VIE_EMP3 -- Não é possível apagar a coluna da tabela ALTER TABLE EMPREGADOS DROP COLUMN NUM_DEPEND -- Criando índices para a VIEW CREATE UNIQUE CLUSTERED INDEX IX_VIE_EMP3_CODFUN ON VIE_EMP3(CODFUN) -- CREATE INDEX IX_VIE_EMP3_NOME ON VIE_EMP3(NOME)
12
VIEW com condição de filtro
CREATE VIEW VIE_EMP4 WITH ENCRYPTION AS SELECT CODFUN, NOME, DATA_ADMISSAO, COD_DEPTO, COD_CARGO, SALARIO FROM EMPREGADOS WHERE COD_DEPTO = 2 -- Testando SELECT * FROM VIE_EMP4
13
Exemplo -- Insere um funcionário INSERT INTO VIE_EMP4 ( NOME, DATA_ADMISSAO, COD_DEPTO, COD_CARGO, SALARIO) VALUES ('TESTE INCLUSÃO', GETDATE(), 1, 1, 1000) Obs: Ao inserir um funcionário com departamento igual a1 a VIEW VIE_EMP4 não mostrará este registro
14
Exemplo O ideal é que a VIEW não permita a inclusão de registros que não satisfaçam a condição ALTER VIEW VIE_EMP4 WITH ENCRYPTION AS SELECT CODFUN, NOME, DATA_ADMISSAO, COD_DEPTO, COD_CARGO, SALARIO FROM EMPREGADOS WHERE COD_DEPTO = 2 WITH CHECK OPTION
15
ALTER VIEW ALTER VIEW – altera um view existente DROP VIEW – Apaga uma view existente. Obs: Quando apagamos uma VIEW implica na exclusão de todas as permissões que tinham sido dadas sobre ela
16
Visualizando informações sobre VIEWS
Object Explorer do SQL Management Studio sys.view - Exibe a lista de VIEWS do banco de dados sp_helptext - Mostra as definições de VIEWS não Criptografadas sys.sp_sql_dependencies - Exibe todos os objetos que possuem alguma dependência de outro objeto
17
Lembre-se Ao alterarmos qualquer objeto no SQL Server é necessário saber quais são os objetos que o referenciam VIEWS não criptografas fornecem mais informações sobre sua definição A forma como as consultas em VIEWS são feitas é igual à das tabelas ordinárias Os HINTS são ignorados nas consultas
18
VIEWS atualizáveis As colunas a serem alteradas devem pertencer a uma mesma tabela base As colunas alteradas em uma VIEW devem referenciar diretamente os dados originais nas colunas da tabela Para poderem ser modificadas, as colunas não podem ser computadas ou derivadas pelo uso de funções, como: AVG, COUNT, SUM, etc. Para poderem ser modificadas, as colunas que tiverem sido computadas por uma expressão ou pelo operadores UNION, UNION ALL, CROSSJOIN, EXCEPT e INTERSECT devem ser especificadas com um trigger INSTEAD OF
19
VIEWS atualizáveis As colunas a serem alteradas não serão afetadas pelo uso das cláusulas GROUP BY, HAVING ou DISTINCT É necessário informar todos os valores, caso contrário a coluna deverá aceitar nulo ou possuir valor padrão Ao incluirmos WITH CHECK OPTION na definição da VIEW, torna-se obrigatória a adesão aos critérios do SELECT por parte de todas as instruções de modificação de dados executados na VIEW TOP não pode ser utilizado com WITH CHECK OPTION no SELECT a ser gravado na VIEW
20
VIEWS, PROCEDURES e funções para retornar dados tabulares
Podemos utilizar o termo dado tabular para definir qualquer recurso que retorne linhas e colunas. Opções para retorno de dados: VIEWS PROCEDURES FUNÇÕES
21
Devolvendo dado tabular com VIEW
CREATE VIEW VIE_MAIOR_PEDIDO AS SELECT TOP 12 MONTH( DATA_EMISSAO ) AS MES, YEAR( DATA_EMISSAO ) AS ANO, MAX( VLR_TOTAL ) AS MAIOR_PEDIDO FROM PEDIDOS Exemplo: SELECT * FROM VIE_MAIOR_PEDIDO *Não aceita parâmetros
22
Devolvendo dados tabulares com STORED PROCEDURE
CREATE PROCEDURE INT AS BEGIN SELECT MONTH( DATA_EMISSAO ) AS MES, YEAR( DATA_EMISSAO ) AS ANO, MAX( VLR_TOTAL ) AS MAIOR_PEDIDO FROM PEDIDOS WHERE YEAR(DATA_EMISSAO) GROUP BY MONTH(DATA_EMISSAO), YEAR(DATA_EMISSAO) ORDER BY MES END Exemplo: EXEC STP_MAIOR_PEDIDO 2007
23
Devolvendo dado tabular com FUNÇÃO TABULAR
CREATE FUNCTION DATETIME, @DT2 DATETIME ) RETURNS TABLE AS RETURN ( SELECT MONTH( DATA_EMISSAO ) AS MES, YEAR( DATA_EMISSAO ) AS ANO, MAX( VLR_TOTAL ) AS MAIOR_VALOR FROM PEDIDOS -- Aceita parâmetros. Trabalha com variáveis WHERE DATA_EMISSAO GROUP BY MONTH( DATA_EMISSAO ), YEAR( DATA_EMISSAO ) ) -- SELECT * FROM DBO.FN_MAIOR_PEDIDO( ' ',' ')
24
Capítulo 6 – VIEWS Laboratório página 216 à 219
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.