IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz...
-
Upload
marcela-ferraz -
Category
Documents
-
view
214 -
download
1
Transcript of IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz...
![Page 1: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/1.jpg)
IECBanco de Dados IAula 04 – SQL (II)
Turmas: Sistemas de Informação
Professora: André Luiz da Costa Carvalho
E-mail: [email protected]
Ambiente virtual: http://bdufam.wordpress.com
![Page 2: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/2.jpg)
Resumo
Consultas SQL complexas Restrições como assertion e ações como
gatilhos Visões Alterações de Schema
![Page 3: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/3.jpg)
SQL mais complexos
Consultas mais complexas: Consultas aninhadas, joins, funções agregadas e
agrupamento.
![Page 4: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/4.jpg)
Comparações com NULL
NULL: Valor desconhecido Valor não disponível ou não preenchido Atributo não se aplica
Cada valor NULL é considerado distinto dos outros valores NULL
SQL usa lógica de três valores: TRUE, FALSE, eUNKNOWN
![Page 5: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/5.jpg)
Comparações com NULL
![Page 6: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/6.jpg)
Comparações com NULL
SQL permite checar se um valor é NULL IS ou IS NOT NULL
![Page 7: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/7.jpg)
Consultas aninhadas
Consultas aninhadas select-from-where na cláusula WHERE de outra
consulta Consulta externa
Operador IN Compara um valor v com um conjunto de valores
V TRUE se v pertence a V
![Page 8: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/8.jpg)
Consultas Aninhadas
![Page 9: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/9.jpg)
Consultas Aninhadas
Comparação de tuplas com IN Use parentesis
![Page 10: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/10.jpg)
Outras comparações podem ser feitas v = ANY (ou = SOME) V
• Retorna TRUE se v é igual a algum valor do conjunto V
• Equivale ao in• Outros operadores com ANY (ou SOME) ou ALL: >, >=, <, <=, e <>
Consultas Aninhadas
![Page 11: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/11.jpg)
Consultas Aninhadas
Evite ambiguidades com apelidos (aliases para tabelas. Comando AS Serve para atributos
![Page 12: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/12.jpg)
Consultas correlacionadas
Correlated nested query Para cada tupla do Select exterior, o select
interior é rodado e o resultado avaliado.
![Page 13: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/13.jpg)
EXISTS e UNIQUE
EXISTS e NOT EXISTS Checa se o resultado de um select interior tem
tuplas ou não UNIQUE(Q)
TRUE se na consulta Q (um select) não existem tuplas repetidas
![Page 14: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/14.jpg)
Tabelas unidas
Joined table Une duas tabelas por um atributo. No FROM
Exemplo abaixo gera uma única tabela
![Page 15: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/15.jpg)
Join
Diferentes tipos de Join NATURAL JOIN Varios OUTER JOIN
NATURAL JOIN Sem condição de união Join é feito por par de atributos com o mesmo
nome.
![Page 16: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/16.jpg)
Joined Tables
Inner join Join padrão Tupla só é inserida no resultado se houver match
nas duas relações. LEFT OUTER JOIN
Cada tupla da tabela da esquerda deve aparecer na resposta
Se não houver match na da direita?• Null é colocado em todos os atributos da resposta
que vêem da tabela da direita
![Page 17: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/17.jpg)
Joined Tables
RIGHT OUTER JOIN Toda tupla da tabela da direita deve estar na
resposta Sem match na da esquerda?
• NULL FULL OUTER JOIN Tabelas “Joineadas” podem ser utilizadas em
outros joins
![Page 18: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/18.jpg)
Funções agregadadoras em SQL
Resumindo informações de múltiplas tuplas em um só atributo
Grouping Cria subgrupos de tuplas antes do resumo
Funções padrão COUNT, SUM, MAX, MIN, e AVG
Funções podem ser usadas no SELECT ou em um HAVING
![Page 19: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/19.jpg)
Funções Agregadoras
Valores Nulos são descartados
![Page 20: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/20.jpg)
Agrupamento
Partição da relação em conjuntos de tuplas Baseados em atributos de agrupamento
Função agregadora é aplicada a cada elemento
GROUP BY Especifica atributo que gerará os subgrupos
Null no atributo agrupador? Grupo separado de todas as tuplas nulas
![Page 21: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/21.jpg)
HAVING
HAVING Adiciona uma condição ao agrupamento
![Page 22: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/22.jpg)
SQL avançado
![Page 23: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/23.jpg)
Assertion e Trigger
CREATE ASSERTION Cria restrições adicionais além do escopo
relacional CREATE TRIGGER
Cria ações que serão feitas automaticamente caso uma condição seja tornada verdadeira
![Page 24: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/24.jpg)
Assertion
CREATE ASSERTION Especifica uma consulta que seleciona qualquer
tupla que não se adequa a condição. Usar em casos que o CHECK em atributos não é
suficiente.
![Page 25: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/25.jpg)
Gatilhos em SQL
CREATE TRIGGER Monitora o BD
Gatilho usual tem 3 componentes: Evento(s) Condição Ação
Agora Não ;)
![Page 26: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/26.jpg)
Views
Conceito de Visão em SQL Tabela derivada de outras tabelas Considerada uma tabela virtual
![Page 27: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/27.jpg)
Views
CREATE VIEW Nome da tabela, atributos e uma consulta que
criará a tabela
![Page 28: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/28.jpg)
Views
View sempre está atualizada Responsibilidade do SGBD
DROP VIEW Remove uma view
![Page 29: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/29.jpg)
Implementação e atualização
Implementação de View é um problema complexo
Query modification Modifica a consulta feita na view para a original Desvantagem: ineficiente para Views complexas
feitas com muitas tabelas grandes
![Page 30: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/30.jpg)
Implementação de view
View materialization Cria uma tabela temporária fisicamente quando a
view é chamada pela primeira vez Manter a tabela enquanto assumir que outras
consultas por ela virão Atualização pode ser problemática pois a view
física deve ser atualizada
![Page 31: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/31.jpg)
Implementação
Incremental update SGBD determina quando uma atualização deve
ser feita na tabela materializada.
![Page 32: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/32.jpg)
Mudanças de esquema
Comandos de alteração de esquema Podem ser feitos enquanto o sistema está
rodando. Não precisam de recompilação de nada
![Page 33: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/33.jpg)
Comando Drop
DROP Remove elementos do esquema
Opções de comportamento CASCADE e RESTRICT
Exemplo: DROP SCHEMA COMPANY CASCADE;
![Page 34: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/34.jpg)
Comando ALTER
Alter table Adicionar ou remover coluna (atributo) Mudar a definição da coluna Adicionar ou remover restrições
Exemplo: ALTER TABLE COMPANY.EMPLOYEE ADD COLUMN Job VARCHAR(12);
Remover coluna CASCADE ou RESTRICT
![Page 35: IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.brandre@icomp.ufam.edu.br.](https://reader035.fdocumentos.com/reader035/viewer/2022081604/570638481a28abb8238f43df/html5/thumbnails/35.jpg)
Comando Alter
Mudar restrições