Baixe o app para aproveitar ainda mais
Prévia do material em texto
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO CEARÁ CIÊNCIA DA COMPUTAÇÃO MARIA GABRIELE ALMEIDA OLIVEIRA RESUMO DE SUBCONSULTAS JAGUARUANA 2016 Resumo de subconsultas Uma subconsulta é uma instrução SELECT que está encadeada dentro de outra instrução SELECT, que mostram sempre uma tabela como resultado de sua execução. A consulta interior é executada primeiro, sendo seu resultado utilizado para completara consulta externa. As subconsultas permitem a construção de comandos potentes a partir de comandos mais simples. Algumas regras: Devem estar entre parênteses; Ao utilizá-las na cláusula WHERE, serão expressas à direita do operador de comparação; Não podem ser utilizadas na cláusula ORDER BY; Use operadores de uma linha com subconsultas de uma linha; Use operadores de várias linhas com subconsultas de várias linhas. As subconsultas podem ser escalares, que retornam como resultado apenas uma linha, ou tabulares, que retornam linhas e colunas. Tipos de operadores: Operadores de uma linha Função = Igual > Maior >= Maior ou igual < Menor <= Menor ou igual <> Diferente Operadores de várias linhas Função NOT / IN Igual a qualquer membro da lista =/</>/<> ANY Compara o valor com cada valor retornado =/</>/<> ALL Compara o valor com todos os valores EXISTS Retorna true ou false Subconsultas na cláusula WHERE: Exemplos: Buscar o nome dos médicos com consultas marcadas para o dia 13 de junho de 2016. SELECT nome FROM médicos WHERE codm IN (SELECT codm FROM consultas WHERE data = ‘16/06/13’); Buscar o nome de todos os funcionários, exceto o mais idoso. SELECT nome FROM funcionários WHERE idade < ANY(SELECT idade FROM funcionarios); Buscar o nome dos funcionários que recebem salários superiores aos salários pagos no departamento enfermaria. SELECT nome FROM funcionários WHERE salario> ALL (SELECT salario FROM funcionarios WHERE departamento = ‘enfermaria’); Subconsultas na cláusula FROM Uma subconsulta também pode ser utilizada na cláusula FROM. Isso permite uma otimização eficiente da consulta, pois restringe linhas e colunas das tabelas envolvidas antes de realizar um produto cartesiano ou junção. Exemplos na cláusula FROM: Buscar os médicos com consultas marcadas para 13 de junho de 2016 e os horários de suas consultas. SELECT medicos.*, c.hora FROM medicos join (SELECT codm, hora FROM consultas WHERE data = ‘16/06/13’) as c ON medicos.codm = c.codm; Determine os 5 empregados que têm o salário mais elevado. SELECT * FROM (SELECT nome, salario FROM empregados ORDER BY salario DESC) WHERE rownum <= 5; Subconsultas na cláusula SELECT Exemplos: Nesse exemplo, as colunas C1 e C3 pertencem a tabela T1 e o campo C2 é um campo obtido através de uma subconsulta. Essa subconsulta obtém o campo C2 da tabela T2. SELECT C1, (SELECT C2 FROM T2) AS C2, C3 FROM T1; Listar os salários máximos da tabela dos empregados e dos médicos usando apenas um query e mostrando os resultados numa única linha. SELECT (SELECT MAX (salario) FROM empregados), (SELECT MAX (salario) FROM médicos) FROM dual; Subconsultas em instruções que modificam dados (INSERT, EPDATE E DELETE). Exemplos: Copia os dados de uma tabela para outra. (INSERT) INSERT INTO funcionários (SELECT * FROM funcionarios1); Atualiza o preço dos produtos para ser igual ao preço do inventário onde o código do produto for igual.(UPDATE) UPDATE produto SET preco = (SELECT precoinventario FROM produtos1 WHERE produtos1.codigo = produtos.codigo); Exclui o(os) funcionário(s) que tem o salário superior ao maior salário do cargo coordenador. (DELETE) DELETE FROM funcionarios WHERE salario > (SELECT MAX(salario) FROM funcionarios WHERE cargo = ‘coordenador’);
Compartilhar