SQL Structured Query Language (continuação) - ppt carregar
PublicouEsther Vicente Alterado mais de 6 anos atrás
Apresentação em tema: "SQL Structured Query Language (continuação)"— Transcrição da apresentação:
1 SQL Structured Query Language (continuação)
2 Sub-Consultas Comando SELECT que está encadeado noutro comando SELECT, produzindo resultados intermédios. Uma subconsulta é utilizada quando é necessário seleccionar tuplos de uma tabela com uma condição que dependa de dados da mesma tabela.
3 Sub-Consultas (cont.) SELECT MIN(Ordenado) FROM Empregado; Depois devemos encontrar o empregado que ganha esse ordenado: SELECT Nome, Cargo, Ordenado FROM Empregado WHERE Ordenado = (ordenado mínimo); Assim, podemos combinar os dois códigos: WHERE Ordenado = (SELECT MIN(Ordenado) FROM Empregado);
4 Sub-Consultas (cont.) SELECT Nome, Cargo FROM Empregado
WHERE Cargo = (SELECT Cargo WHERE Nome='Blake'); SELECT Nome, Cod_Depar, Ordenado WHERE (Ordenado, Cod_Depar)IN(SELECT MIN(Ordenado), Cod_Depar GROUP BY Cod_Depar);
5 Sub-Consultas (cont.) SELECT Cod_Depar, AVG(Ordenado) FROM Empregado
GROUP BY Cod_Depar HAVING AVG(Ordenado) > (SELECT AVG(Ordenado) WHERE Cod_depar = 30);
6 JOINS Outra operação a realizar sobre a BD é a junção (join). Uma junção é utilizada quando uma consulta SQL requer extrair dados de mais de uma tabela da BD, com base numa condição de junção. Esta condição de junção depende, geralmente, das colunas comuns que existem entre as tabelas onde se pretende realizar esta operação. Em alguns casos, pode ser necessário efectuar uma junção entre colunas da mesma tabela.
7 JOINS (cont.) Exemplo: Realize uma consulta onde se visualize o nome do empregado, o cargo, e o nome do departamento ao qual o empregado pertence. SELECT Nome, Cargo, Nome_pep FROM Empregado, Departamento WHERE Cod_Depar=Cod_Depart;
8 JOINS (cont.) Exemplo: Apresente o nome, a localidade e o nome do departamento dos empregados cujo ordenado mensal é superior a $, ordenados pelo nome do departamento. SELECT Nome, Localização, Nome_pep FROM Empregado, Departamento WHERE Cod_Depar=Cod_Depart AND Ordenado >
9 JOINS (cont.) Exemplo: Considere que tem uma BD de uma Universidade com informação dos alunos, das disciplinas e das avaliações realizadas. Assim, temos as seguintes tabelas com os respectivos atributos: ALUNOS(Cod_al, Nome_al, Morada) DISCIPLINAS(Cod_dis, Nome_dis, Créditos) AVALIAÇÕES(Cod_al,Cod_dis, Data, Nota) Admita que pretendia visualizar os nomes dos alunos, o nome da disciplina e a nota obtida.
10 JOINS (cont.) SELECT Nome_al, Nome_dis, Nota
FROM ALUNOS, DISCIPLINAS, AVALIAÇÕES WHERE ALUNOS.Cod_al = AVALIAÇÕES.Cod_al AND DISCIPLINAS.Cod_dis = AVALIAÇÕES.Cod_dis;
11 JOINS (cont.) Outros tipos de JOINS podem ser definidos. Os exemplos seguintes, apresentados sobre Microsoft ACCESS'97 apresentam a forma de se efectuarem: Right join Left join
15 SQL e outras linguagens de programação
O SQL tem sem dúvida uma perspectiva de utilização interactiva, sendo os comando directamente efectuados no terminal pelo utilizador e as respostas direccionadas ao terminal. Só por si o SQL não possui as funcionalidades necessárias para desenvolver aplicações completas. A solução passa por usar linguagens de programação, nas quais são inseridos os comandos SQL, que efectuam o acesso à base de dados. Mas: A linguagem SQl é set-oriented, podendo numa única operação manipular um número indeterminado de dados e é declarativa; As linguagens de programação usualmente utilizadas (C, COBOL, PASCAL, etc.) são record-oriented e não-declarativas.
16 SQL e outras linguagens de programação (cont.)
Esta situação implica: Conhecer 2 linguagens inerentemente diferentes; Garantir que o sistema tem alguma interface que permita sincronizar as transferências de dados entre as duas. A esta disfunção dá-se o nome de impedance mismatch e uma das formas de minimizar este problema é problema é utilizar a estruturação de código, inserindo nos blocos código SQL. Ex: EXEC SQL BEGIN DECLARE SECTION; ... <declaração de variáveis Utilizadas em instruções SQL > EXEC SQL END DECLARE SECTION; Isto é só um exemplo demonstrativo das potencialidades de interacção SQL <> outras linguagens. Não é representativo.