Bases de Dados

Propaganda
Bases de Dados
DML – Data Manipulation Language
Parte 3
Sub-Consultas
z São consultas contidas na cláusula WHERE ou
HAVING de uma outra consulta SQL
z Essencialmente consiste numa instrução
SELECT contida noutra instrução SELECT...
z O limite máximo de encadeamento é 255!
z Regras a seguir:
{Uma sub-consulta não pode ter cláusula ORDER BY
{A ordem das colunas e o tipo de dados de cada coluna
de uma sub-consulta contida numa cláusula WHERE
deve ser a mesma da lista de selecção
Exemplo – Sub-consultas
Quais os alunos que se
inscreveram primeiro à
cadeira de Bases de
Dados?
Sub-consultas correlacionadas
zSão sub-consultas que são executadas
uma vez para cada registo da selecção
principal!
Qual a primeira cadeira
que cada aluno
concluiu?
Exercício 1
zQuais os alunos que já se inscreveram a
cadeiras do curso de matemática.
Exercício 2
zQuais as primeiras cadeiras em que cada
aluno se inscreveu?
Exercício 3
zMostrar o nome e os créditos que o aluno
já realizou.
Mais Operadores SQL (SOME/ANY, ALL
e EXISTS)
z Podem ser utilizados em sub-consultas que devolvam
mais do que uma linha de valores
z Usam-se nas cláusulas WHERE ou HAVING em
conjunção com os operadores =, <, >, <=, >=
z SOME/ANY : Compara um valor com todos os valores
devolvidos. Sucede quando a comparação com um
deles se verifica ser verdadeira
z ALL: Compara um valor com todos os valores
devolvidos e sucede quando a comparação com todos
os valores se verifica
z EXISTS: Mais utilizado em consultas correlacionadas
Exemplo
Mostrar o nome, categoria e vencimento dos professores
que tenham vencimento inferior a um dos professores do
departamento de matemática...
Exercício 4
zQuais os alunos (número e nome) que já
se inscreveram mais vezes que qualquer
aluno do curso de engenharia electrónica?
Exercício 5
z Seleccionar as cadeiras (código, nome e departamento)
que já tiveram mais inscrições que todas as cadeiras
leccionadas pelo departamento de matemática.
Vistas ou VIEW’s
z São pseudo-tabelas ou tabelas virtuais que não
ocupam espaço
z Resultam do cruzamento da informação
existente em outras tabelas ou VIEW’s
z Normalmente só admitem operações de leitura
e são criadas com o intuito de preencher
necessidades de pesquisas frequentes acerca
de um conteúdo específico
z A sintaxe da sua criação toma a forma seguinte:
CREATE VIEW nome_vista (lista_atributos)
AS SELECT....
Características das VIEW’s
z Não podem conter ORDER BY
z Podem ser alteradas sem ter de fazer DROP,
CREATE OR REPLACE...
z É possível criar uma VIEW mesmo que a tabela
não exista: CREATE FORCE
z Podem fazer-se alterações nas tabelas através
das VIEW’s usando comandos como o DELETE,
UPDATE ou INSERT, mas não sem várias
restrições...
Exemplo – VIEW’s
Criar uma VIEW para as idades dos alunos...
Utilizar a VIEW para mostrar a
listagem dos alunos e
respectivas idades....
Exercício 6
zUsando a VIEW anterior, mostrar o nome,
idade e o curso dos alunos.
Exercício 7
zUsando a VIEW anterior, indique o aluno
mais velho.
Exercício 8
zCriar uma VIEW que mostre o número,
nome e créditos de cada aluno.
Consultar VIEW’s
zPara ver qual o código do SELECT
utilizado na construção de uma VIEW,
consulta-se a tabela all_views do
dicionário de dados
SELECT owner, view_name, text
FROM all_views
WHERE owner LIKE <user_name>
Exercício 9
zVisualizar os créditos que cada aluno
tinha em 1 de Janeiro de 1989.
Nota: não e possível utilizar a vista creditos_aluno,
porque esta mostra os créditos actuais de cada aluno.
Exercício 10
zRepetir a questão anterior as incluir os
alunos que ainda não tivessem nenhum
crédito.
Referências e Links Úteis
z An Introduction to Database Systems – C. J.
Date – Addison Wesley
z The Practical SQL Handbook – Judith S.
Bowman et al – Addison Wesley
z Sintaxe de todos os comandos SQL para Oracle
z http://www.ss64.com/ora/
z Tutorial Resumido de comandos Oracle
z http://www.engin.umich.edu/caen/technotes/oracletut.pdf
z Mais comandos e funções Oracle
z http://www.cit.uws.edu.au/docs/oracle/sqlref/ch2.htm
Download