Upload
marcela-ferraz
View
214
Download
1
Embed Size (px)
Citation preview
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
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