1 Programação de Banco de Dados José Antônio da Cunha George Azevedo da Silva.

Slides:



Advertisements
Apresentações semelhantes
O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
Advertisements

Banco de Dados I Aula 20.
Triggers Renata Viegas.
SQL Avançado Continuação
Prof.: Bruno Rafael de Oliveira Rodrigues
Banco de Dados SQL TRIGGERS (Gatilhos)
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados I 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
Sistemas de Informação Redes de Computadores
Visões Marilde Santos.
Maurício Edgar Stivanello
Introdução à Engenharia da Computação
Oficina sobre banco de dados
SCC Bancos de Dados e Suas Aplicações
Material III-Bimestre Wagner Santos C. de Jesus
SQL Structured Query Language
Linguagem de Banco de Dados - SQL
Linguagem de Banco de Dados - SQL
Banco de dados Profª Kelly Medeiros.
PostgreSQL.
Query Tuning Lílian Simão Oliveira.
SQL Server 2012 Tipos de Dados e Tabelas
Design Patterns / Acesso ao banco de dados (java.sql)
Tipos de Linguagens do Banco de Dados
FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA Módulo de Programação Prof. Flávio Dantas.
Primeira aula de PL/SQL Parte II
Desenvolvendo um script SQL
Rafael Lucio, Desenvolvedor Jr Padrão Informática e Assessor de TI Secretaria Municipal da Saúde;
Treinamento sobre SQL.
VIEW - VISÕES Professor Esp. Diego André Sant’Ana
FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA Módulo de Programação Prof. Flávio Dantas.
Banco de dados.
Criação de Tabelas. CREATE TABLE nome_da_tabela ( >>. >> ) Ex.: SQL SERVER 2008 CREATE TABLE pessoa ( CPF VARCHAR(11) NOT NULL, NOME VARCHAR(100) NOT.
Baseado no material do Professor Raul Paradeda
©Silberschatz, Korth and Sudarshan (modificado)4.1.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
Triggers (Gatilhos) Professor Esp. Diego André Sant’Ana
SQL Server Comando PIVOT.
Banco de Dados I I Comandos SQL
NOTA DE AULA SQL.
Linguagem SQL Prof. Juliano.
DELETE, UPDATE, COMMIT, ROLLBACK
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
Visões Visão tabela derivada a partir das tabelas do BD tabela virtual
Daniel Paulo Atualizando e excluindo Dados Comando UPDATE – Altera registros da tabela UPDATE tabela SET nome_coluna = expressao.
Daniel Paulo SQL Módulo I Daniel Paulo
Banco de Dados Maria Augusta (Magu).
Linguagem de definição de dados - SQL
Fundamentos de Banco de Dados Prof. André Cypriano M. Costa
Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para:
José Antônio da cunha IFRN Administração de Banco de Dados.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Capítulo 4 SQL básica.
Linguagem de Programação de Banco de Dados Procedimentos Armazenados.
José Antônio da Cunha IFRN. Introdução De modo simplificado, a segurança no acesso às informações significa que o usuário deve ser capaz de acessar os.
José Antônio da Cunha CEFET - RN José Antônio -
Programação para Internet Aula 12 SQL (Comandos de Consulta ao BD)
2/6/2016 José Antônio da Cunha - CEFET - RN1 Programação de Banco de Dados Funções.
PROJETO INTERDISCIPLINAR ‘DBERP’. Equipe de Desenvolvimento Banco de Dados  Adiel Silveira de Lemos  Ana Renata de Siqueira  Bruno Michael da Silva.
Normalização (4FN) Na literatura aparecem outras formas normais, como a forma normal de Boyce/Codd, a 4FN e a 5FN. Destas a única que tem importância na.
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
Kelyn Schenatto. Definição Linguagem de Consulta Estruturada (Structured Query Language); Desenvolvida inicialmente nos anos 70 nos laboratórios da IBM.
José Antônio da Cunha 3/6/2016 José Antônio - CEFET-RN 1 Copyright © Dale Carnegie & Associates, Inc.
Banco de Dados para Redes– Aula 03 Prof. Me. Ronnison Reges Vidal.
PHP + MYSQL. Mysql O MySQL é servidor de banco de dados multiusuário, multitarefa que trabalha com uma das linguagens de manipulação de dados mais popularizadas.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Capítulo 5 Mais SQL: Consultas Complexas, Triggers e Views.
Banco de Dados José Antônio da Cunha CEFET – RN.
Recursos de Programação
BANCO DE DADOS Araújo Lima Out / 2017 Araújo.
BANCO DE DADOS Araújo Lima Outubro / 2017 Araújo.
MS-SQL Server Structure Query Language
Prática - BD Distribuído
Transcrição da apresentação:

1 Programação de Banco de Dados José Antônio da Cunha George Azevedo da Silva

2 Visões Uma visão é um objeto do SQL Server utilizado para dar nome a uma query. Os comandos que podem ser Utilizados dentro do código de criação de uma visão são: Join Union Group By com função de totalização subquery

3 Visões As visões podem ser usadas para diferentes propósitos: Restringir o uso de colunas e/ou linhas específicas de tabelas – isto é, para controlar o acesso a uma parte específica de uma ou mais tabelas. Para ocultar os detalhes de consultas complicadas Para restringir valores inseridos e atualizados a certas faixas

4 Visões Sintaxe CREATE VIEW Nome_da_view [WITH ENCRYPTION | WITH SCHEMABINDING] AS Select [WITH CHECK OPTION]

5 Visões Considere a estrutura de tabelas abaixo: PAI Cod_Pai Nome_Pai FILHO Cod_Filho Cod_Pai Nome_Filho Sexo_Filho NOTAS Num_Lanc Cod_Filho Nota_Filho 1 * 1 1

6 Visões SELECT Pai.Nome_Pai, Filho.Nome_Filho, Nota.Nota_Filho FROM Pai, Filho, Nota WHERE Pai.Cod_Pai = Filho.Cod_Pai AND Filho.Cod_Filho = Nota.Cod_Filho CREATE VIEW v_PaiFilhoNota AS SELECT Pai.Nome_Pai, Filho.Nome_Filho, Nota.Nota_Filho FROM Pai, Filho, Nota WHERE Pai.Cod_Pai = Filho.Cod_Pai AND Filho.Cod_Filho = Nota.Cod_Filho

7 Visões Lendo os dados pela visão Select * from v_PaiFilhoNota Nota: essa visão não ocupa espaço do seu disco, porque ela é internamente, um select.

8 Visões Criando campo de idade na tabela de funcionario alter table funcionario add Idade_func int null update funcionario set idade_func = cod_func *

9 Visões Ocultando linhas Para impedir que seus usuários acessem dados, por exemplo, dos funcionários cuja idade é mais de 40 anos, basta colocar uma cláusula Where, filtrando essas linhas no select dentro da visão CREATE VIEW v_Func AS SELECT Cod_Func, Idade_Func, Nome_Func FROM Funcionario WHERE Idade_Func <= 40

10 Visões Ocultando colunas Suponha que você queira liberar o acesso aos dados da tabela funcionário, mas não quer liberar o acesso aos dados da coluna Salário: ALTER VIEW v_Func AS SELECT Cod_Func, Idade_Func, Nome_Func FROM Funcionario

11 Visões Depois disso é só liberar o acesso aos dados através da visão Exec SP_AddLogin ‘JCUNHA’, ’123’ Use Banco Exec SP_GrantDBAccess JCUNHA –cria conta de usuário GRANT SELECT ON V_FUNC TO JCUNHA – Atribui permissão SELECT * FROM V_Func

12 Visões Inserindo, Alterando e Excluindo dados por meio de uma visão Por exemplo, suponha que você deseja inserir mais um funcionário na tabela Funcionario por meio da visão V_Func. Para realizar esta tarefa, você deve escrever o seguinte comando: INSERT V_FUNC VALUES (8, 25, 'Jairo Aparecido')

13 Visões Inserindo, Alterando e Excluindo dados por meio de uma visão Se você quisesse alterar dados da tabela Funcionário por meio da visão, deve escrever este comando: UPDATE V_FUNC SET Idade_Func = Idade_Func + 1 WHERE Cod_Func = 5

14 Visões Inserindo, Alterando e Excluindo dados por meio de uma visão Se precisasse excluir dados da tabela Funcionário por meio da visão, deve escrever este comando: DELETE V_FUNC WHERE Cod_Func = 5

15 Visões A cláusula With Check Option Se você quiser que as operações realizadas com os dados da tabela Funcionário por meio da visão V_Func obedeçam à cláusula “WHERE Idade_Func <= 30”, ao código de criação dessa visão acrescente a cláusula With Check Option: CREATE VIEW V_Func2 AS SELECT Cod_Func, Idade_Func, Nome_Func FROM Funcionario WHERE Idade_Func <= 40 With Check Option

16 Visões A Cláusula With Check Option Em seguida, tente executar os comandos seguintes e, veja o que acontece. /*Tentando inserir um funcionario inválido */ INSERT V_FUNC2 VALUES(7, 45, 'Fábio') /*Tentando alterar a idade do funcionário 1 que tem mais de 40 anos */ UPDATE V_FUNC2 SET Idade_Func = Idade_Func + 1 WHERE Cod_Func = 5 /*Tentando alterar a idade para esta ultrapassar 40 anos */ UPDATE V_FUNC2 SET Idade_Func = Idade_Func + 5 WHERE Cod_Func = 3

17 Visões A cláusula With Encryption Quando você cria uma visão, algumas informações sobre ela são registradas nas tabelas do sistema: O nome da visão é registrado na tabela sysobjects. Os comandos de criação da visão são registrados na tabela do sistema syscomments. Qualquer usuário que tenha acesso às tabelas do sistema conseguirá ler o código de criação das suas visões.

18 Visões A cláusula With Encryption Execute os seguintes comandos para ver os códigos-fonte das visões: SELECT TEXT FROM SysComments WHERE Id in (SELECT ID from sysobjects where Name like 'V_Func%') SELECT TEXT FROM SysComments WHERE Id= (SELECT ID from sysobjects where Name = ‘V_PaiFilhoNota’)

19 Visões A cláusula With Encryption Se você quiser, pode criptografar o código de criação de suas visões com a cláusula With Encryption: CREATE VIEW V_FUNC3 WITH ENCRYPTION AS SELECT Cod_Func, Idade_Func, Sum(Sal_Func) AS Salario FROM Funcionario Group By Cod_Func, Idade_Func

20 Visões A cláusula With Schemabinding Esta cláusula indica que os objetos (tables e visões) referenciados dentro da visão não podem ter sua estrutura alterada e não podem ser eliminados. CREATE VIEW V_FUNC4 WITH SCHEMABINDING AS SELECT Cod_Func, Idade_Func, Nome_Func FROM dbo.Funcionario WHERE Idade_Func <= 30

21 Visões visão de visão Se for necessário, você pode criar uma visão que filtre dados de outra visão. Mas avalie bem a necessidade de criar visões aninhadas, porque esta prática pode deixar essa parte do seu sistema com problemas de performance. /* Primeira visão */ CREATE VIEW V_FUNC_UM AS SELECT Cod_Func, Nome_Func, Idade_Func, Nasc_Func FROM Funcionario /* Segunda visão */ CREATE VIEW V_FUNC_DOIS AS SELECT Nome_Func FROM V_FUNC_UM WHERE Idade_Func <=30

22 Visões Junções envolvendo Visões Visões podem ser utilizadas em junções. Para testar vamos criar a tabela de Regiao com os campos Regiao e Regiao_Descricao, populando-o com as regiões 1 (Norte) e 2 (Sul). /* Criando tabela de Regiao */ CREATE TABLE Nacionalidade( Nacionalidade [int] NOT NULL, Nacionalidade_Descricao [varchar](50) NULL) Insert Into Nacionalidade values (1, 'Brasil') Insert Into Nacionalidade values (2, 'Portugal') Insert Into Nacionalidade values (3, 'Argentina') Insert Into Nacionalidade values (4, 'Uruguai') /* Criando a visão */ CREATE VIEW V_FUNC5 AS SELECT Cod_Func, Idade_Func, Nome_Func, Nasc_Func FROM Funcionario WHERE Idade_Func <= 40

23 Visões Junções envolvendo Visões Visões podem ser utilizadas em junções. /* Realizando junção envolvendo uma tabela e uma visão*/ SELECT V_Func5.Cod_Func, V_Func5.Nome_Func, V_Func5.Nasc_Func, Nacionalidade.Nacionalidade_Descricao FROM V_Func5 INNER JOIN Nacionalidade ON V_Func5.Nasc_Func = Nacionalidade.Nacionalidade