IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz...

Post on 07-Apr-2016

214 views 1 download

Transcript of IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz...

IECBanco de Dados IAula 04 – SQL (II)

Turmas: Sistemas de Informação

Professora: André Luiz da Costa Carvalho

E-mail: andre@icomp.ufam.edu.br

Ambiente virtual: http://bdufam.wordpress.com

Resumo

Consultas SQL complexas Restrições como assertion e ações como

gatilhos Visões Alterações de Schema

SQL mais complexos

Consultas mais complexas: Consultas aninhadas, joins, funções agregadas e

agrupamento.

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

Comparações com NULL

Comparações com NULL

SQL permite checar se um valor é NULL IS ou IS NOT NULL

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

Consultas Aninhadas

Consultas Aninhadas

Comparação de tuplas com IN Use parentesis

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

Consultas Aninhadas

Evite ambiguidades com apelidos (aliases para tabelas. Comando AS Serve para atributos

Consultas correlacionadas

Correlated nested query Para cada tupla do Select exterior, o select

interior é rodado e o resultado avaliado.

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

Tabelas unidas

Joined table Une duas tabelas por um atributo. No FROM

Exemplo abaixo gera uma única tabela

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.

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

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

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

Funções Agregadoras

Valores Nulos são descartados

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

HAVING

HAVING Adiciona uma condição ao agrupamento

SQL avançado

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

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.

Gatilhos em SQL

CREATE TRIGGER Monitora o BD

Gatilho usual tem 3 componentes: Evento(s) Condição Ação

Agora Não ;)

Views

Conceito de Visão em SQL Tabela derivada de outras tabelas Considerada uma tabela virtual

Views

CREATE VIEW Nome da tabela, atributos e uma consulta que

criará a tabela

Views

View sempre está atualizada Responsibilidade do SGBD

DROP VIEW Remove uma view

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

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

Implementação

Incremental update SGBD determina quando uma atualização deve

ser feita na tabela materializada.

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

Comando Drop

DROP Remove elementos do esquema

Opções de comportamento CASCADE e RESTRICT

Exemplo: DROP SCHEMA COMPANY CASCADE;

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

Comando Alter

Mudar restrições