Você está na página 1de 22

UNIVERSIDADE DE SANTIAGO

BD2
Base de Dados 2

Aula Nº 16 (TP)
Docentes: Danielson Alves / Quelito Marcel
Sumário
❖Continuação do sumário da Aula 15
❖Funções integradas no Mysql
❖Subconsultas: conceitos
❖Subconsultas com operações Select, Insert,
Update e Delete
❖Consultas em uma cláusula Having
❖Exercícios
Funções Integradas no Mysql
Funções Integradas no Mysql
Funções Integradas no Mysql
Funções Integradas no Mysql
Funções Integradas no Mysql
Subquery (Subconsulta)
❖É uma consulta embutida dentro de outra consulta, de
forma aninhada, passando os resultados da consulta
mais interna para a consulta mais externa.
❖Podemos utilizar subconsultas não apenas em
consultas com cláusula SELECT, mas também em
operações INSERT, UPDATE e DELETE.
❖Quando utilizamos uma subconsulta em uma consulta,
a subconsulta é resolvida primeiro, e então a consulta
externa (principal) é resolvida de acordo com o
resultado retornado pela subconsulta.
Subconsulta: Consulta Encadeada
❖Sintaxe básica:
• SELECT colunas FROM tabela Consulta Principal
(consulta externa)
WHERE coluna operador (
SELECT coluna FROM tabela Subconsulta
WHERE condição (consulta interna)
);

Nota:
• Em uma consulta encadeada, pode-se utilizar para além da
cláusula WHERE, a cláusula HAVING.
• O operador pode ser qualquer operador lógico ou relacional,
como >, <, >= ,<= ,=, <>, IN, NOT, AND, OR, etc.
Regras para Aplicação de Subconsulta
❖A subconsulta pode ter apenas uma única coluna em sua cláusula
SELECT, exceto quando a consulta principal tiver múltiplas colunas
para comparação com as colunas selecionadas.
❖Se a subconsulta retornar mais de uma linha de dados, é necessário
utilizar operadores de valores múltiplos, como o operador lógico IN.
❖As subconsultas são escritas dentro de parênteses.
❖Não é possível utilizar a cláusula ORDER BY em uma subconsulta
– mas na consulta principal pode.
❖É possível utilizar uma cláusula GROUP BY em uma subconsulta.
❖Não podemos utilizar o operador BETWEEN dentro de uma
consulta principal, mas podemos utilizar esse operador dentro da
subconsulta.
Subconsulta com Operação Select
❖Exemplo: Faça uma consulta à tabela Matrícula da
base de dados Cadastro
1) Correspondente à aluna “Talita Nascimento”.

2) Correspondente ao curso de “Python”


Subconsulta em uma Cláusula Having
❖Exemplo:
1) Retorne a média da carga horária dos cursos.

2) Retorne todos os cursos realizados depois de 2015 e agrupe


pelo campo carga horária.

3) Mostre todos os cursos que tem carga horária superior à


média das cargas horárias.
Subconsulta com Operação Insert into
❖Com a instrução INSERT INTO, os dados retornados por
uma subconsulta são utilizados para realizar a inserção
de registos em outra tabela (tabela_destino).
❖Sintaxe:
• INSERT INTO tabela_destino (colunas) (
SELECT colunas FROM tabela_origem
WHERE condição
);
❖Nota: O número de colunas da tabela origem tem de
ser exatamente igual ao número de colunas da tabela
destino.
Subconsulta com Operação Insert into
❖Exemplo:
1) Crie uma tabela de nome aluno_teste com os
seguintes campos: idTeste (int, not null,
auto_incremente, PK), nomeTeste (varchar de tamanho
30) e nacionalidadeTeste (varchar de tamanho 30).
Subconsulta com Operação Insert into
❖Exemplo:
2) Copie todos os dados dos alunos que nasceram em
Portugal para a tabela aluno_teste.
Subconsulta com Operação Update
❖Permite atualizar os valores de registos de uma tabela
com base no resultado retornado pela subconsulta.
❖Sintaxe:
• UPDATE tabela
SET coluna1 = valor1, …, colunaN = valorN
WHERE coluna operador
(
SELECT coluna FROM tabela
WHERE condição
);
Subconsulta com Operação Update
❖Exemplo:
•Atualize a data de matrícula do aluno “Marcos
Dissoti” para “14 / 10 / 2018”.
Subconsulta com Operação Delete
❖Pode-se utilizar subconsultas em instruções DELETE,
selecionando o valor a ser excluído de uma tabela de
acordo com o retorno da subconsulta.
❖Sintaxe:
• DELETE FROM tabela
WHERE coluna operador
(
SELECT coluna FROM tabela
WHERE condição
);
Subconsulta com Operação Delete
❖Exemplo:
1) Insira os seguintes dados na tabela Matrícula:
dataMatricula = “2014-11-05”, idAluno = 2 e idCurso = 7.

2) Elimine um registo da tabela Matrícula com base nas


seguintes informações: Aluno = “Talita Nascimento” e
Curso: “Word”.
Exercícios
1) Utilizando as funções integradas do mysql:
a) Calcule o valor absoluto da seguinte expressão,
𝟏𝟎+𝟐𝟑
apresentando o resultado com 3 casas decimais: 𝟐 −
𝟕
b) Mostre a quantidade máxima de caracteres presente no
nome do aluno.
2) Faça uma consulta à tabela Matrícula da base de dados
Cadastro correspondente ao aluno “Nerilton Dias”.
3) Crie uma tabela de nome curso_teste com os seguintes
campos: idTeste (int, not null, auto_incremente, PK),
nomeTeste (varchar de tamanho 30) e cargaHorariaTeste
(int, unsigned).
Exercícios
4) Copie todos os dados da tabela Cursos para a tabela
curso_teste que foram ministrados no ano 2014 e
2018.
5) Atualize a data de matrícula do aluno “Ana Carolina
Mendes” para “10 / 12 / 2018”.
6) Elimine um registo da tabela Matrícula com base nas
seguintes informações: Aluna = “Ana Carolina
Hernandes” e Curso: “Python”.
FIM

Você também pode gostar