Olá! Boas-vindas ao nosso curso SQLite Online: Executando Consultas SQL.
Meu nome é Beatriz Magalhães, e serei a instrutora que irá acompanhar você durante essa trajetória.
Audiodescrição: Beatriz é uma mulher de pele clara, com cabelos castanhos, longos e ondulados. Veste uma blusa azul escura e está em um fundo de uma parede branca iluminada por uma luz verde.
Este curso é para você que, por algum motivo, precisa fazer consultas em bancos de dados relacionais, ou que já trabalha na área de dados, mas gostaria de conhecer a linguagem SQL e estudar um pouco mais sobre essa linguagem.
Para acompanhar esse curso, é necessário ter uma base dos comandos iniciais de SQL e compreender como a linguagem funciona.
Neste curso, vamos explorar de forma mais aprofundada as consultas: como estruturar uma consulta e quais tipos de informações podemos obter com as consultas. Para isso, vamos aprender:
Tudo isso será feito usando uma base de dados de uma empresa de RH, a Fokus, para atender as demandas dela. Ela tem várias perguntas e informações que precisamos extrair do banco de dados dela, e nós utilizaremos a linguagem SQL para consultas mais estruturadas para conseguirmos obter essas informações.
Durante essa trajetória, é muito importante que você realize todas as atividades propostas durante o curso para fixar o conteúdo. Isso vai ajudar bastante para você entender realmente o que estamos abordando no curso.
Além disso, participe das comunidades. Temos o Fórum do curso, para que você colocar suas dúvidas e seus comentários. Entre também no Discord dos estudantes da Alura para trocar experiências com outras pessoas. Além disso, compartilhe nas suas redes sociais que está fazendo esse curso e o que está achando. Isso é muito interessante e vamos acompanhar tudo.
Esperamos você no próximo vídeo para começarmos nosso projeto.
Vamos lá?
Vocês são pessoas contratadas pela empresa de RH Fokus para gerenciar o banco de dados da empresa. Ela precisa consultar algumas informações específicas que auxiliarão tanto as empresas contratantes de pessoas colaboradoras, quanto as pessoas cadastradas como pessoas colaboradoras que desejam conseguir uma oportunidade de trabalho e progredir em suas carreiras.
Então, como podemos trazer uma das primeiras informações solicitadas pela Fokus: identificar as cinco pessoas colaboradoras que possuem as maiores remunerações? A Fokus quer usar essas informações para promover um treinamento para todas as outras pessoas colaboradoras cadastradas. A ideia é convidar essas cinco pessoas com as maiores remunerações para compartilhar um pouco sobre suas trajetórias de carreira e incentivar as outras pessoas que também estão em busca de uma oportunidade.
Começaremos acessando a nossa plataforma sqliteonline.com. A primeira coisa que faremos é importar o banco de dados que a Fokus disponibilizou para nós. Clicaremos em "File", no canto esquerdo da barra superior, e, no menu suspenso, selecionaremos "Open DB". com isso, abrimos uma janela do nosso computador, onde selecionaremos o arquivo que já deixamos disponível para download nas atividade: o banco de dados Fokus. Após abrirmos o bando de dados, teremos todas as tabelas da empresa, na coluna lateral esquerda, para trabalharmos com nossas consultas.
Agora, como podemos trazer essa primeira informação utilizando a linguagem SQL? Trata-se de uma informação sobre as pessoas colaboradoras, então faremos um SELECT
na tabela "Colaboradores" descobrirmos quais são as informações que tem nessa tabela.
SELECT * FROM Colaboradores;
ID | Nome | DataNascimento | CPF | Endereco | Telefone | |
---|---|---|---|---|---|---|
1 | Dr. Cauê da Conceição | 1992-08-05 | 24657139061 | Recanto Isadora Nunes, Lagoa, 69660278 Jesus / MS | (081) 8338 3341 | manuelada-luz@uol.com.br |
2 | Alana Gomes | 1963-05-15 | 04327185914 | Estrada Benjamin Duarte, Alto Barroca, 88769-290 da Cruz de Teixeira / RJ | (051) 1565 8107 | lais58@azevedo.br |
3 | Agatha Dias | 1996-10-13 | 98753146255 | Feira da Cruz, 98, Vila Maria, 38435-029 Moura de Pereira / AL | +55 84 7490 3659 | elima@das.org |
4 | Kevin Lima | 1982-03-08 | 81256734071 | Avenida de Campos, 87, Providencia, 67007931 Rocha / PR | 71 1126 4143 | obarbosa@bol.com.br |
5 | Luiza da Paz | 1987-02-14 | 97812045676 | Lago Stella Souza, 5, Santa Helena, 56937115 Jesus / AP | 31 1464-2424 | maria-alice63@hotmail.com |
… | … | … | … | … | … | … |
No retorno, temos as informações de ID
, Nome
, Data de nascimento
, CPF
, Endereço
, Telefone
e Email
mas não tem as informações que a Fokus precisa, que é a remuneração de cada pessoa colaboradora. Precisamos descobrir qual é a tabela que tem essas informações.
Se formos na lateral esquerda, no canto direito do nome de cada tabela temos uma seta apontando para esquerda. Se clicarmos nela, ela aponta para baixo e acessamos as colunas de cada tabela. Temos algumas tabelas como "Dependentes", "faturamentos" e "HistoricoEmprego". Na tabela "HistoricoEmprego", temos a coluna Salario
, que é exatamente a que precisamos consultar. Então, na nossa área de código, SELECT
da "HistoticoEmprego" para observar suas informações.
SELECT * FROM HistoricoEmprego;
ID | ID_Colaborador | Cargo | DataContratacao | DataTermino | Salario | Supervisor |
---|---|---|---|---|---|---|
1 | 102 | Barman | 2017-09-10 | 2023-05-17 | 15659.88 | Enzo Gabriel Cunha |
2 | 112 | Radialista programador | 2020-07-23 | null | 10744.84 | Joaquim Farias |
3 | 137 | Classificador contábil | 2016-06-24 | null | 13370.22 | Luna da Cunha |
4 | 116 | Estampador de tecidos | 2015-05-23 | 2021-09-19 | 9151.28 | Leandro Caldeira |
5 | 55 | Guardador de veículos | 2015-07-23 | 2017-10-23 | 11292.29 | Anthony Aragão |
… | … | … | … | … | … | … |
Se observarmos a tabela, temos o ID
, o ID_Colaborador
, que é uma chave estrangeira da tabela "Colaboradores", o Cargo
de cada pessoa colaboradora, a DataContratacao
de quando foram contratadas e a DataTermino
, no caso de já têm encerrado o contrato de trabalho das pessoas cadastradas aqui. Também tem o Salario
e Supervisor
, que é a pessoa responsável por aquela pessoa.
O que precisamos fazer agora é buscar essas pessoas colaboradoras pela ordem do salário, organizando dos maiores salários para os menores. Para isso, manteremos o SELECT * FROM HistoricoEmprego
e, na linha abaixo, codamos ORDER BY salario
, para ordenar por pela a coluna salario
.
SELECT * FROM HistoricoEmprego
ORDER BY salario;
ID | ID_Colaborador | Cargo | DataContatacao | DataTermino | Salario | Supervisor |
---|---|---|---|---|---|---|
82 | 69 | Entalhador | 2022-07-20 | NULL | 3149.17 | Maria Fernanda Freitas |
64 | 84 | Quadrinista | 2018-04-10 | NULL | 3167.21 | Emanuella das Neves |
97 | 53 | Baixista | 2015-08-03 | NULL | 3288.55 | Lorena Cunha |
150 | 135 | Implantodontista | 2017-10-25 | 2021-04-09 | 3423.45 | Camila Santos |
88 | 122 | Cirurgião bucal | 2021-01-26 | 2022-09-12 | 3481.46 | Giovanna Ribeiro |
… | … | … | … | … | … | … |
Se rodarmos esse novo comando, temos o retorno da tabela ordenada salário, só que o sistema ordenou pelo menor salário até o maior, mas queremos totalmente o contrário. Para isso, acrescentamos a expressão DESC
depois de salario
, que é para organizar por ordem decrescente, e rodamos novamente.
SELECT * FROM HistoricoEmprego
ORDER BY salario DESC;
ID | ID_Colaborador | Cargo | DataContatacao | DataTermino | Salario | Supervisor |
---|---|---|---|---|---|---|
146 | 117 | Ator | 2014-09-10 | 2020-09-11 | 19951.22 | Juan Peixoto |
26 | 64 | Violonista | 2016-11-24 | NULL | 19873.68 | Noah Costa |
36 | 84 | Intérprete e tradutor... | 2015-11-10 | NULL | 19723.99 | Luiz Henrique Melo |
147 | 49 | Engenheiro de teleco... | 2021-08-01 | 2021-10-16 | 19602.58 | Maria Clara da Conceição |
62 | 84 | Lutador de taekwondo | 2023-04-18 | NULL | 19504.64 | Lorena da Rocha |
… | … | … | … | … | … | … |
Agora sim, conseguimos ver os maiores salários em primeiro lugar, mas precisamos apenas dos 5 primeiros registros. Para limitarmos o número de linhas do nosso resultado, utilizamos a cláusula LIMIT
. Portanto, na linha abaixo do ORDER BY salario DESC
, escrevemos LIMIT
seguido do número de registros ao qual queremos nos limitar, no caso, 5.
SELECT * FROM HistoricoEmprego
ORDER BY salario DESC
LIMIT 5;
ID | ID_Colaborador | Cargo | DataContatacao | DataTermino | Salario | Supervisor |
---|---|---|---|---|---|---|
146 | 117 | Ator | 2014-09-10 | 2020-09-11 | 19951.22 | Juan Peixoto |
26 | 64 | Violonista | 2016-11-24 | NULL | 19873.68 | Noah Costa |
36 | 84 | Intérprete e tradutor... | 2015-11-10 | NULL | 19723.99 | Luiz Henrique Melo |
147 | 49 | Engenheiro de teleco... | 2021-08-01 | 2021-10-16 | 19602.58 | Maria Clara da Conceição |
62 | 84 | Lutador de taekwondo | 2023-04-18 | NULL | 19504.64 | Lorena da Rocha |
Ao rodarmos essa nova consulta, aparecem apenas as 5 pessoas com salário mais alto. Com isso, já temos todas as informações das pessoas colaboradoras que estão na tabela "Colaboradores".
Porém, se analisarmos a coluna DataTermino
, notamos que algumas dessas pessoas colaboradoras têm uma data presente. Isso significa que eles já encerraram os contratos na Fokus. Para nós, não é interessante trazer esses colaboradora que não estão empregados.
Como como o objetivo é fazer essa palestra de motivação para outras pessoas se incentivarem a melhorarem na carreira e a conseguirem posições melhores, seria interessante se a pessoa estivesse atuando no momento na profissão dela. Então, como podemos filtrar apenas as pessoas colaboradoras que estejam com a DataTermino
como NULL
?
Isso é o que vamos entender melhor no próximo vídeo, esperamos vocês lá!
No vídeo anterior, conseguimos filtrar e consultar as 5 pessoas colaboradoras com as maiores remunerações. Entretanto, nesse filtro, pessoas que atualmente não estão empregadas também foram incluídas. Isso significa que na coluna DataTermino
, essas pessoas possuem uma data preenchida.
A Fokus solicitou que filtrássemos apenas as pessoas que têm NULL
(NULO) na DataTermino
, ou seja, pessoas que atualmente ocupam o cargo listado na nossa tabela. Como podemos fazer filtrar apenas as pessoas cujos campos estejam NULL
na DataTermino
?
Atualmente nossa consulta está assim:
SELECT * FROM HistoricoEmprego
ORDER BY salario DESC
LIMIT 5;
Nessa consulta, podemos acrescentar uma cláusula utilizando o comando WHERE
(ONDE). Após o HistoricoEmprego
na primeira linha, pressionaremos "Enter" e, na linha abaixo, escreveremos a cláusula WHERE
, especificando que queremos apenas as linhas onde a DataTermino
esteja vazia. Para isso, precisamos entender como declarar o NULL
, então vamos tentar escrever como WHERE datatermino = 'null'
.
SELECT * FROM HistoricoEmprego
WHERE datatermino = 'null'
ORDER BY salario DESC
LIMIT 5;
Ele não conseguiu trazer registro algum, porque não existe nenhum registro esse tipo de string. Para trazer as colunas vazias, ou NULL
, em SQL, utilizamos o comando ISNULL
: uma expressão específica do SQL para trazer justamente esses campos NULL
de cada coluna.
SELECT * FROM HistoricoEmprego
WHERE datatermino ISNULL
ORDER BY salario DESC
LIMIT 5;
ID | ID_Colaborador | Cargo | DataContatacao | DataTermino | Salario | Supervisor |
---|---|---|---|---|---|---|
26 | 64 | Violonista | 2016-11-24 | NULL | 19873.68 | Noah Costa |
36 | 84 | Intérprete | 2015-11-10 | NULL | 19723.99 | Luiz Henrique Melo |
62 | 84 | Lutador de taekwondo | 2023-04-18 | NULL | 19504.64 | Lorena da Rocha |
40 | 7 | Moldureiro | 2018-05-12 | NULL | 19038.7 | Srta. Marcela Vieira |
123 | 30 | Oficial de justiça | 2022-01-11 | NULL | 18470.25 | Juan Costa |
Ao executarmos essa consulta, veremos que todas as pessoas colaboradoras filtradas estão com a coluna DataTermino
como NULL
e são as pessoas com as maiores remunerações. Então, deu certo a nossa consulta. São exatamente estas pessoas que a Fokus quer ter acesso ao ID para obterem suas informações e convidá-las para um treinamento.
Vamos analisar a sintaxe da nossa consulta para revisarmos tudo o que fizemos. Começamos com um SELECT
para filtrar os dados da tabela "HistoricoEmprego", com o código SELECT * FROM HistoricoEmprego
. Abaixo dessa linha, acrescentamos uma condição WHERE
onde a coluna DataTermino
seja nula, com ISNULL
.
Além disso, solicitamos que ordenasse por salário, com ORDER BY salário
, de maneira decrescente, portanto acrescentamos a expressão DESC
. Por último, adicionamos o LIMIT 5
, para limitar aos 5 maiores salários, retornando apenas os primeiros 5 registros. Com isso, trouxemos exatamente as pessoas colaboradoras que a Fokus deseja acesso.
Se quiséssemos, por exemplo, trazer apenas as pessoas colaboradoras que não estão empregadas no momento, ou seja, que têm uma data em DataTermino
, neste caso, trocaríamos o comando ISNULL
por NOTNULL
.
SELECT * FROM HistoricoEmprego
WHERE datatermino NOTNULL
ORDER BY salario DESC
LIMIT 5;
ID | ID_Colaborador | Cargo | DataContatacao | DataTermino | Salario | Supervisor |
---|---|---|---|---|---|---|
146 | 117 | Ator | 2014-09-10 | 2020-09-11 | 19951.22 | Juan Peixoto |
147 | 49 | Engenheiro de teleco... | 2021-08-01 | 2021-10-16 | 19602.58 | Maria Clara da Conceição |
105 | 140 | Traumatologista | 2018-01-22 | 2019-08-20 | 18826.8 | Cauê Gonçalves |
76 | 117 | Redator | 2022-08-19 | 2023-06-26 | 18803.06 | Nina Almeida |
50 | 89 | Mecânico | 2022-04-08 | 2023-09-09 | 18559.23 | João Felipe Barros |
Ao executarmos essa consulta, retornamos apenas os 5 colaboradores com a maior remuneração que têm alguma data na DataTermino
, ou seja, que não estão empregados no momento. Portanto, conseguimos trabalhar bem com as expressões ISNULL
e NOTNULL
se compreendemos como funciona o campo NULL
nas tabelas. Esse não é um campo que tem alguma string presente, então precisamos entender como filtrá-lo da maneira correta.
Também é possível, através da linguagem SQL, filtrar alguns campos de string sem saber a string completa, ou seja, com apenas alguns trechos. Mas isso vamos entender no próximo vídeo.
Até lá!
O curso SQLite Online: executando consultas SQL possui 118 minutos de vídeos, em um total de 51 atividades. Gostou? Conheça nossos outros cursos de SQL e Banco de Dados em Data Science, ou leia nossos artigos de Data Science.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.