35
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: [email protected] Ambiente virtual: http://bdufam.wordpress.com

IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho E-mail: [email protected]@icomp.ufam.edu.br

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Comando Alter

Mudar restrições