Banco de dados – 2022/1
Linguagem Estruturada de Pesquisa
SQL – Parte 03
DML
Linguagem de Manipulação de Dados
2
Banco de dados
DML – Seleção / Junção
Junção natural
Sintaxe
SELECT column_name(s) FROM table1 INNER JOIN
table2 ON table1.column_name = table2.column_name;
Exemplo
Select nome from Aluno inner join Matricula on
Aluno.IDAluno=Matricula.IDMatricula 3
Banco de dados
DML – Seleção / Junção
4
Banco de dados
DML – Seleção / Junção
Mostre todos os alunos matriculados na primeira
disciplina
● Select Aluno.IDAluno, Aluno.nome, Disciplina.nome from
Aluno inner join Matricula on
Aluno.IDAluno=Matricula.IDAluno inner join Turma on
Matricula.IDTurma=Turma.IDTurma inner join Disciplina on
Turma.IDDisciplina=Disciplina.IDDisciplina order by
Aluno.nome;
5
Banco de dados
DML – Seleção / Junção
Externa a Esquerda
Sintaxe
SELECT column_name(s) FROM table1 LEFT OUTER JOIN
table2 ON table1.column_name = table2.column_name;
Exemplo
Select Aluno.IDAluno,Nome,Matricula.IDMatricula from
Aluno left outer join Matricula on
Aluno.IDAluno=Matricula.IDAluno
6
Banco de dados
DML – Seleção / Junção Externa a Esquerda
Selecione todos os alunos que não estão
matriculados
Select Aluno.IDAluno,Nome,Matricula.IDMatricula
from Aluno left outer join Matricula
on Aluno.IDAluno=Matricula.IDAluno
Where Matricula.IDMatricula is null
7
Banco de dados
DML – Seleção / Junção
Externa a Direita
Sintaxe
SELECT column_name(s) FROM table1 RIGTH OUTER JOIN
table2 ON table1.column_name = table2.column_name;
Exemplo
Select Aluno.IDAluno,Nome,Matricula.IDMatricula from
Aluno RIGHT outer join Matricula on
Aluno.IDAluno=Matricula.IDAluno
8
Banco de dados
DML – Seleção / Junção Total
Junção externa Total
Sintaxe
SELECT column_name(s) FROM table1 FULL OUTER JOIN
table2 ON table1.column_name = table2.column_name
WHERE condition;
9
Banco de dados
DML – Seleção / Junção Total
Exemplo
Select Aluno.IDAluno, Aluno.nome, Disciplina.nome
from Aluno full outer join Matricula on
Aluno.IDAluno=Matricula.IDAluno full outer join Turma
on Matricula.IDTurma=Turma.IDTurma full outer join
Disciplina on Turma.IDDisciplina=Disciplina.IDDisciplina
order by Aluno.nome;
10
Banco de dados
DML – Seleção / UNIÃO
A união ira combinar dois ou mais resultados
em um novo resultado.
Obs: Na união tem que ter os menos números de
atributos e os domínios tem que ser iguais.
Sintaxe:
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
11
Banco de dados
DML – Seleção / UNIÃO
Exemplo
select * from Aluno left outer join Matricula on
Aluno.IDAluno=Matricula.IDMatricula
UNION
select * from Aluno right outer join Matricula on
Aluno.IDAluno=Matricula.IDMatricula
12
Funções no MySQL
13
Banco de dados
SQL – Mysql – Funções para string
Funções para ser utilizadas com tipo String
CHAR_LENGTH() → Retorna o tamanho da string
SELECT CHAR_LENGTH("Roberto Benedito") AS tamanho;
CONCAT → Junta strings
select concat("Roberto"," - ","Benedito") as nome;
LCASE → Converte um texto todo para minúsculo
Select LCASE('RoBerto') as nome;
UCASE → Converte um texto todo para maiúsculo
Select UCASE('RoBerto') as nome;
14
Banco de dados
SQL – Mysql – Funções para string
Funções para ser utilizadas com tipo String
LTRIM() → Remove os caracteres em branco da esquerda
SELECT LTRIM(" Roberto Benedito") AS nome;
RTRIM() → Remove os caracteres em branco da direita
SELECT RTRIM("Roberto Benedito ") AS nome;
TRIM() → Remove os caracteres em branco da esquerda e
direita
SELECT TRIM(" Roberto Benedito ") AS nome;
REPLACE → Substitui uma string por outra
SELECT REPLACE("SQL Tutorial", "SQL", "HTML");
15
Banco de dados
SQL – Mysql – Funções para números
ABS → Retorna o valor absoluto de um número
SELECT ABS(-243.5);
FLOOR → Retorna o valor inteiro de um número
SELECT FLOOR(25.75);
MOD → Retorna o resto da divisão
SELECT MOD(18, 4);
RAND(); → gera um número pseudo-aleatório entre 0 e 1
SELECT RAND();
TRUNCATE → Corta a quantidade de casas decimais
definidas
SELECT TRUNCATE(135.375, 2); 16
Banco de dados
SQL – Mysql – Funções para números
ROUND() → Arredonda um número
SELECT ROUND(135.375, 2);
SQRT() → Raiz quadrada de um número
SELECT SQRT(64);
POWER() –> Exponenciação
SELECT POWER(8, 2);
DIV → Retorna o valor inteiro da divisão
SELECT 12 DIV 5;
17
Banco de dados
SQL – Mysql – Funções para data
ADDDATE() → Adiciona um intervalo a uma data (DAY,
WEEK, MONTH, QUARTER e YEAR)
SELECT ADDDATE("2017-06-15", INTERVAL 10 DAY);
SELECT ADDDATE("2017-06-15", INTERVAL 10 MONTH);
CURDATE() → Retorna a data atual
SELECT CURDATE();
CURRENT_TIMESTAMP() → Retorna a data e a hora
SELECT CURRENT_TIMESTAMP();
NOW() → Retorna a data e a hora
SELECT NOW();
18
Banco de dados
SQL – Mysql – Funções para data
DAY() → Retorna o dia de uma data
SELECT DAY("2017-06-15");
MONTH() → Retorna o mês de uma data
SELECT MONTH("2017-06-15");
YEAR() → Retorna o ano de uma data;
SELECT YEAR ("2017-06-15");
SUBDATE() → Subtrai da data um intervalo (DAY,
WEEK, MONTH, QUARTER e YEAR)
SELECT SUBDATE("2017-06-15", INTERVAL 10 DAY); 19
Banco de dados
SQL – Mysql – Funções para data
DATE_FORMAT(date, format) → Formata uma data
SELECT DATE_FORMAT("2017-06-15", "%d/%m/%Y");
● %d Day of the month as a numeric value (01 to 31)
● %H Hour (00 to 23) | %h Hour (00 to 12)
● %i Minutes (00 to 59) | %j Day of the year (001 to 366)
● %k Hour (0 to 23) | %m Month name as a numeric value (00 to
12)
● %s Seconds (00 to 59) | %T Time in 24 hour format (hh:mm:ss)
● %w Day of the week where Sunday=0 and Saturday=6
● %Y Year as a numeric, 4-digit value | %y Year as a numeric,
2-digit value
20
Banco de dados
SQL – Mysql – Funções para Time
CURTIME() → Retorna a hora atual
SELECT CURRENT_TIME();
HOUR() → Retorna a hora de uma tempo;
SELECT HOUR("2017-06-20 09:34:00");
MINUTE() → Retorna os minutos de uma tempo;
SELECT MINUTE("2017-06-20 09:34:00");
SECOND() → Retorna os segundos de uma tempo
SELECT SECOND("2017-06-20 09:34:01");
21
Banco de dados
SQL – Mysql – Funções para Time
ADDTIME() → Adiciona um tempo
SELECT ADDTIME("2017-06-15 09:34:21.000001",
"2:10:5.000003");
SUBTIME() → Retira de uma tempo uma quantidade
de tempo.
SELECT SUBTIME("2017-06-15 10:24:21.000004",
"5.000001");
22