Noções de linguagem SQL (DDL, DML, SELECT e JOIN)
3 min de leitura13 questões
Cai no edital de Agente PF, Escrivão PF, Papiloscopista PF
Para revisar
Resumo
Essência. SQL (Structured Query Language) é a linguagem declarativa padrão (ISO/ANSI) dos bancos relacionais: diz o que se quer, não como buscar. Divide-se em sublinguagens:
- DDL (definição):
CREATE,ALTER,DROP,TRUNCATE→ mexem na estrutura. - DML (manipulação):
INSERT,UPDATE,DELETE(eSELECT, às vezes separado como DQL) → mexem nos dados. - DCL (controle):
GRANT,REVOKE→ permissões. - DTL/TCL (transação):
COMMIT,ROLLBACK,SAVEPOINT.
SELECT — ordem de escrita: SELECT colunas FROM tabela WHERE filtro de linhas GROUP BY agrupamento HAVING filtro de grupos ORDER BY ordenação. Ordem lógica de execução: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY.
- Agregação:
COUNT,SUM,AVG,MIN,MAX.COUNT(*)conta linhas;COUNT(coluna)ignora nulos. - JOIN:
INNER(só correspondências),LEFT(todas da esquerda + correspondências, nulos onde não há),RIGHT,FULL. - Nulo: testa-se com
IS NULL, nunca= NULL.
Pegadinha Cebraspe. "O comando DELETE remove a tabela do banco" → errado: DELETE apaga linhas; quem remove a tabela é DROP. DELETE sem WHERE apaga todas as linhas, mas a tabela continua.
Visão geral
Basta ler consultas simples e prever o resultado. Os itens mais cobrados: categorias de comando, diferença WHERE × HAVING, tipos de JOIN, DISTINCT e tratamento de nulos.
Regra
Ver íntegra
SELECT uf, COUNT(*) AS total
FROM ocorrencias
WHERE ano = 2025
GROUP BY uf
HAVING COUNT(*) > 100
ORDER BY total DESC;
Lê-se: das ocorrências de 2025, conte por UF, mostre só as UFs com mais de 100 e ordene da maior para a menor.
| Comando | Categoria | Efeito |
|---|---|---|
| CREATE TABLE | DDL | Cria tabela |
| ALTER TABLE | DDL | Altera estrutura |
| DROP TABLE | DDL | Remove tabela e dados |
| TRUNCATE | DDL | Esvazia a tabela (mantém estrutura) |
| INSERT / UPDATE / DELETE | DML | Inclui / altera / exclui linhas |
| GRANT / REVOKE | DCL | Concede / retira permissão |
| COMMIT / ROLLBACK | DTL | Confirma / desfaz transação |
Pontos-chave
- WHERE filtra linhas antes do agrupamento e não aceita função de agregação; HAVING filtra grupos.
- DISTINCT elimina linhas repetidas do resultado.
- LIKE:
%= qualquer sequência;_= um caractere.'Jo%'pega João, Jonas. - IN, BETWEEN (inclusivo nas pontas), ORDER BY padrão crescente (ASC).
- UNION remove duplicatas; UNION ALL mantém.
- UPDATE sem WHERE altera todas as linhas.
- Visão (VIEW): consulta armazenada que funciona como tabela virtual.
Como a banca cobra
- "Os comandos CREATE, ALTER e DROP pertencem à DDL" → certo.
- "A cláusula HAVING é usada para filtrar grupos formados pelo GROUP BY" → certo.
- "Em um LEFT JOIN, só aparecem as linhas com correspondência nas duas tabelas" → errado (esse é o INNER JOIN).
- "A condição WHERE coluna = NULL retorna os registros com valor nulo" → errado (usa-se IS NULL).
- "TRUNCATE remove a estrutura da tabela" → errado (remove as linhas; a estrutura fica).
Referência
Mapa mental
Sublinguagens
- DDL: CREATE, ALTER, DROP, TRUNCATE
- DML: INSERT, UPDATE, DELETE
- DQL: SELECT
- DCL: GRANT, REVOKE
- DTL: COMMIT, ROLLBACK
SELECT
- SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY
- WHERE filtra linhas
- HAVING filtra grupos
- COUNT, SUM, AVG, MIN, MAX
JOIN
- INNER: só correspondências
- LEFT: tudo da esquerda
- FULL: tudo dos dois lados
Detalhes
- IS NULL, nunca = NULL
- LIKE: % várias, _ uma
- UNION remove duplicatas
⚠️ Pegadinha
- DELETE apaga linhas; DROP apaga tabela
Questão 1, Agente PF, Certo ou Errado
O comando DELETE, sem cláusula WHERE, remove a tabela do banco de dados.
Revelar gabarito
Gabarito: Errado
Errado. DELETE é comando DML e atua sobre linhas: sem WHERE, apaga todas elas, mas a tabela e sua estrutura continuam existindo. Para remover a própria tabela, usa-se DROP, que é comando DDL.
Questão 2, Agente PF, Certo ou Errado
GRANT e REVOKE pertencem à linguagem de controle de dados (DCL).
Revelar gabarito
Gabarito: Certo
Certo. A DCL trata do controle de acesso: GRANT concede e REVOKE retira permissões. Não se confunde com DDL, que define estruturas, nem com DML, que manipula os dados das tabelas.
Questão 3, Agente PF, Certo ou Errado
A cláusula HAVING é usada para filtrar grupos formados por GROUP BY.
Revelar gabarito
Gabarito: Certo
Certo. HAVING filtra grupos depois do GROUP BY e admite função de agregação, como HAVING COUNT(*) > 100. WHERE atua antes, sobre linhas individuais, e não aceita função de agregação em sua condição.
Questão 4, Agente PF, Certo ou Errado
Para selecionar registros com valor ausente em uma coluna, usa-se a condição coluna = NULL.
Revelar gabarito
Gabarito: Errado
Errado. Nulo representa ausência de valor e não é testado por igualdade. A condição correta é coluna IS NULL; escrever coluna = NULL não seleciona os registros pretendidos pelo usuário.
Questão 5, Agente PF, Certo ou Errado
Em um LEFT JOIN, as linhas da tabela à esquerda sem correspondência na outra tabela são descartadas do resultado.
Revelar gabarito
Gabarito: Errado
Errado. O LEFT JOIN preserva todas as linhas da tabela à esquerda, mesmo sem correspondência, preenchendo com nulos as colunas da direita. Descartar as não correspondentes é comportamento do INNER JOIN.
- Revelar resposta
Sublinguagens do SQL
DDL: CREATE, ALTER, DROP, TRUNCATE. DML: INSERT, UPDATE, DELETE (SELECT/DQL). DCL: GRANT, REVOKE. DTL: COMMIT, ROLLBACK.
- Revelar resposta
WHERE × HAVING
WHERE filtra linhas antes do agrupamento; HAVING filtra grupos depois do GROUP BY.
- Revelar resposta
DELETE × DROP
DELETE apaga linhas (sem WHERE, todas), a tabela continua. DROP remove a tabela.
- Revelar resposta
COUNT(*) × COUNT(coluna)
COUNT(*) conta todas as linhas; COUNT(coluna) ignora nulos.
- Revelar resposta
INNER JOIN × LEFT JOIN
INNER: só correspondências. LEFT: todas as linhas da esquerda, com nulos onde não há correspondência.
- Revelar resposta
TRUNCATE
TRUNCATE é comando DDL que esvazia a tabela preservando a estrutura; DROP remove a tabela e seus dados, e DELETE é comando DML que apaga linhas.
- Revelar resposta
LIKE: % e _
Os símbolos estão trocados: no LIKE, o sinal de porcentagem representa qualquer sequência de caracteres, enquanto o sublinhado representa exatamente um único caractere.
- Revelar resposta
UNION × UNION ALL
Ocorre o contrário: UNION remove as duplicatas do resultado combinado, enquanto UNION ALL mantém todas as linhas, inclusive as repetidas entre as consultas.
- Revelar resposta
BETWEEN
O BETWEEN é inclusivo nas duas pontas, de modo que a condição retorna também as linhas com valores iguais ao limite inferior ou ao limite superior.
- Revelar resposta
COUNT(*) × COUNT(coluna)
COUNT(*) conta todas as linhas do resultado, enquanto COUNT(coluna) ignora os valores nulos existentes nela, o que pode produzir contagens diferentes na mesma consulta.
Estude Agente PF no app
Grátis, sem cartão