Escolar Documentos
Profissional Documentos
Cultura Documentos
use aula;
insert into cliente values (1, 'Helena Magalhães', 'F', '2000-01-01', 12500.99,
'helena#email.com', 2),
(2, 'Nicolas', 'M', '2002-12-10', 8500,
'nicolas#email.com', 3),
(3, 'Ana Rosa Silva', 'F', '1996-12-31', 8500,
'ana.rosa@email.com', 1),
(4, 'Tales Heitor Souza', 'M', '2000-10-01', 7689,
'tales.heitor@email.com', 1),
(5, 'Bia Meireles', 'F', '2002-03-14', 9450,
'bia.meireles@email.com', 2),
(6, 'Pedro Filho', 'M', '1998-05-22', 6800,
'pedro.filho@email.com', 5),
(7, 'Helena Magalhães', 'F', '1994-08-10', 8600,
'helena.magalhaes@email.com', 4);
insert into funcionario values (1, 'Ana Rosa Silva', 'F', '1996-12-31', 8500.4321,
1, 1, 'ana.rosa@email.com', 1),
(2, 'Tales Heitor Souza', 'M', '2000-10-01',
7689.9880, 1, 2, 'tales.heitor@email.com', 1),
(3, 'Bia Meireles', 'F', '2002-03-14', 9450.9880, 1,
2, 'bia.meireles@email.com', 2),
(4, 'Pedro Filho', 'M', '1998-05-22', 12340.1670, 3,
3, 'pedro.filho@email.com', 2),
(5, 'Camila Fialho', 'F', '1989-03-15', 10450.1000,
2, 3, 'camila.fialho@email.com', 4),
(6, 'Ulisses Frota', 'M', '1997-06-30', 12340.9590,
1, 4, 'ulisses.frota@email.com', 7),
(7, 'Leonardo Timbo', null, '2001-07-02', 7850.1280,
2, 3, 'leonardo.timbo@email.com', 2),
(8, 'Lucas Goes', 'M', '2002-03-02', 8834.9880, 3,
4, 'lucas.goes@email.com', 5),
(9, 'Sofia Lima', null, '1999-12-23', 9578.549, 4,
4, 'sofia.lima@email.com', 5),
(10, 'Nicolas Figueira', 'M', '1997-06-01',
12340.1209, 3, 2, 'nicolas.figueira@email.com', 3),
(11, 'Helena Arcanjo', 'F', '1998-11-20', 6320.9876,
2, 2, 'helena.arcanjo@email.com', 7);
-- Mod e div
select mod(4,2) as 'Resto divisão',
mod(5,2) as 'Resto divisão',
4 div 2 as 'Quociente',
5 div 2 as 'Quociente';
-- Formatação de texto
select nome,
upper(nome),
lower(nome),
length(nome),
ltrim(nome),
rtrim(nome),
substring(nome, 5),
substring(nome, 1, 3),
dataNascimento,
length(dataNascimento),
email,
replace(email, '#', '@')
from cliente;
-- Funções de agregação
-- Count(*) e count null
select count(*),
count(genero)
from funcionario;
-- Conversão de valoes
select cast('2000-01-01' as date),
cast('1000.00' as decimal),
cast('20:15' as time);
select curdate(),
curtime(),
now(),
date(curdate()),
date(now());
-- Funções de hora
select curtime(), time(curtime()), hour(curtime()), minute(curtime()),
second(curtime()), microsecond(curtime());
select addtime('01:00:00.999999', '02:00:00.999998');
select timestamp('2003-12-31'), timestamp('2003-12-31 12:00:00', '12:00:00');
select curdate(), curtime(), timestampadd(minute, 30, curdate());
select timediff('2021-12-31 23:59:59.000001', '2021-12-31 01:01:01.000002');
select time_format('20:30:00', '%h %m');
-- Sum salário
select sum(salario) from funcionario;
-- Min
select min(salario), min(nascimento) from funcionario;
-- Max
select max(salario), max(nascimento) from funcionario;
-- Média
select avg(salario) from funcionario;
-- having
select departamento, count(*) from funcionario
group by departamento
having count(departamento) > 2;
-- Subconsultas
select nome, salario from funcionario
where salario = (select max(salario) from funcionario);
-- Usando o in
select nome, cidadeId from cliente
where cidadeId in (select id from cidade where nomeCidade = 'Curitiba' or
nomeCidade = 'Imperatriz');
-- Exists
-- < 7000 > 11000
select nome, genero, salario from cliente
where salario < 7000
and exists (select * from cliente where salario > 11000);
-- Any
-- id cliente > id cliente venda
select id, nome, genero from cliente
where id > any (select distinct clienteId from vendas);
-- All
select id, nome, genero from cliente
where id > all (select distinct clienteId from vendas);
-- Subconsulta correlacionada
-- salario > any salario do mesmo gênero
select id, nome, genero, salario from cliente c
where salario > any (select salario from cliente where genero = c.genero);
-- Controle de acesso
-- Criando o usuário "aluno"
create user 'aluno'@'localhost' identified by '123';
-- Atualizando os privilégios
flush privileges;
-- Testando as permissões
use aula;
update funcionario set genero = 'M' where matricula = 7;
select * from funcionario where matricula = 7;