Bases de Dados DML Data Manipulation Language Parte 3
Sub-Consultas São consultas contidas na cláusula WHERE ou HAVING de uma outra consulta SQL Essencialmente consiste numa instrução SELECT contida noutra instrução SELECT... O limite máximo de encadeamento é 255! 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 Sã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 Quais os alunos que já se inscreveram a cadeiras do curso de matemática.
Exercício 2 Quais as primeiras cadeiras em que cada aluno se inscreveu?
Exercício 3 Mostrar o nome e os créditos que o aluno já realizou.
Mais Operadores SQL (SOME/ANY, ALL e EXISTS) Podem ser utilizados em sub-consultas que devolvam mais do que uma linha de valores Usam-se nas cláusulas WHERE ou HAVING em conjunção com os operadores =, <, >, <=, >= SOME/ANY : Compara um valor com todos os valores devolvidos. Sucede quando a comparação com um deles se verifica ser verdadeira ALL: Compara um valor com todos os valores devolvidos e sucede quando a comparação com todos os valores se verifica 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 Quais os alunos (número e nome) que já se inscreveram mais vezes que qualquer aluno do curso de engenharia electrónica?
Exercício 5 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 São pseudo-tabelas ou tabelas virtuais que não ocupam espaço Resultam do cruzamento da informação existente em outras tabelas ou VIEW s 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 A sintaxe da sua criação toma a forma seguinte: CREATE VIEW nome_vista (lista_atributos) AS SELECT...
Características das VIEW s Não podem conter ORDER BY Podem ser alteradas sem ter de fazer DROP, CREATE OR REPLACE... É possível criar uma VIEW mesmo que a tabela não exista: CREATE FORCE 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 Usando a VIEW anterior, mostrar o nome, idade e o curso dos alunos.
Exercício 7 Usando a VIEW anterior, indique o aluno mais velho.
Exercício 8 Criar uma VIEW que mostre o número, nome e créditos de cada aluno.
Consultar VIEW s Para 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 Visualizar 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 Repetir a questão anterior as incluir os alunos que ainda não tivessem nenhum crédito.
Referências e Links Úteis An Introduction to Database Systems C. J. Date Addison Wesley The Practical SQL Handbook Judith S. Bowman et al Addison Wesley Sintaxe de todos os comandos SQL para Oracle http://www.ss64.com/ora/ Tutorial Resumido de comandos Oracle http://www.engin.umich.edu/caen/technotes/oracletut.pdf Mais comandos e funções Oracle http://www.cit.uws.edu.au/docs/oracle/sqlref/ch2.htm