Fala, meus consagrados! Beleza?
A linguagem SQL faz parte do estudo de bancos de dados e do trabalho de quem desenvolve sistemas, administra informações ou produz relatórios. Consultar os produtos de uma loja, registrar uma matrícula e reunir dados para um painel são exemplos de atividades que podem envolver SQL.
Para quem se prepara para concursos de TI, entender a linguagem exige mais do que memorizar comandos. É necessário acompanhar como uma consulta transforma os dados: quais linhas entram no resultado, como as tabelas se relacionam e o que acontece quando os registros são agrupados.
Neste artigo, vamos construir essa compreensão com exemplos comentados. O objetivo é conhecer os principais recursos da SQL e desenvolver uma forma de leitura que ajude tanto na prática quanto na resolução de questões.
O que é a linguagem SQL?
SQL significa Structured Query Language, expressão traduzida como Linguagem de Consulta Estruturada. Ela permite definir estruturas, consultar dados, modificar registros e realizar outras operações em sistemas de gerenciamento de bancos de dados relacionais. Apesar da palavra “consulta” no nome, sua finalidade vai além de buscar informações. [1, 2]
A SQL é predominantemente declarativa: uma consulta descreve o resultado desejado. Ao solicitar os produtos com preço superior a determinado valor, por exemplo, o usuário informa a condição de seleção. O sistema gerenciador decide como executar essa busca, considerando seus mecanismos de processamento e otimização. [1]
Essa característica ajuda a separar duas perguntas: “quais dados eu quero?” e “como o sistema encontrará esses dados?”. Na escrita de consultas, concentramos a atenção na primeira. Questões de desempenho também importam, mas devem ser analisadas sem perder de vista a correção do resultado.
SQL, MySQL, PostgreSQL e Oracle: qual é a diferença?
SQL é uma linguagem; MySQL, PostgreSQL e Oracle Database são sistemas gerenciadores de bancos de dados que a utilizam. O gerenciador é o software responsável por armazenar os dados e executar operações sobre eles. [4, 23]
Os produtos possuem diferenças de sintaxe e funcionalidades. Tipos de dados, funções de datas, geração automática de identificadores e comandos administrativos podem variar. Por isso, uma consulta simples costuma ser fácil de adaptar, enquanto recursos específicos exigem consultar a documentação do gerenciador indicado. [2, 3]
Em provas, observe se o enunciado identifica um produto e uma versão. Essa informação pode definir a sintaxe considerada correta. Neste artigo, os exemplos usam recursos comuns da SQL; o bloco de transação segue a sintaxe do PostgreSQL.
Para que serve a SQL e onde ela é usada?
Em um sistema de vendas, a SQL pode cadastrar produtos, consultar preços e atualizar registros. Em um sistema acadêmico, pode recuperar estudantes e suas matrículas. Em relatórios administrativos, permite reunir informações armazenadas em tabelas distintas e apresentar totais por categoria. [4]
Na prática, uma mesma aplicação costuma executar operações variadas. A tela de cadastro insere dados; a tela de pesquisa realiza consultas; uma alteração de preço modifica um registro. A linguagem oferece recursos para expressar essas operações, enquanto as regras do sistema determinam quando elas devem ocorrer.
Na análise de dados, as consultas ajudam a responder perguntas objetivas: quantos produtos existem, qual é o maior preço e quais categorias concentram mais itens? Perceba que a pergunta de negócio vem antes do comando. Quando a pergunta está clara, torna-se mais fácil escolher filtros, relacionamentos e agrupamentos adequados.
Principais comandos do SQL
A tabela reúne os comandos básicos e a função de cada um. Observe a diferença entre modificar registros e modificar a estrutura que os armazena. [4, 23]
| Comando | Finalidade | Exemplo de uso |
|---|---|---|
| SELECT | Consultar dados | Listar nomes e preços |
| INSERT | Inserir registros | Cadastrar um novo produto |
| UPDATE | Atualizar registros | Alterar o preço de um produto |
| DELETE | Excluir registros | Remover um produto do cadastro |
| CREATE | Criar objetos | Criar uma tabela de produtos |
| ALTER | Alterar estruturas | Adicionar uma coluna à tabela |
| DROP | Remover objetos | Remover uma tabela |
DDL, DML, DQL, DCL e comandos de transação
Uma organização didática frequente divide os comandos por finalidade. DDL, de Data Definition Language, reúne comandos de definição de estruturas, como CREATE, ALTER e DROP. DML, de Data Manipulation Language, contempla a manipulação dos dados, com exemplos como INSERT, UPDATE e DELETE. [23]
Alguns materiais separam as consultas em DQL, de Data Query Language, associando esse grupo ao SELECT. Outros incluem SELECT na DML. DCL, de Data Control Language, costuma reunir GRANT e REVOKE, relacionados a permissões. TCL, de Transaction Control Language, é uma classificação didática para comandos como COMMIT e ROLLBACK. [2, 10, 21, 22]
Essas classificações não são uniformes entre materiais e fabricantes. A documentação da Oracle, por exemplo, inclui SELECT na DML e trata GRANT e REVOKE entre os comandos DDL. Em concursos, considere a convenção adotada pelo enunciado e pela referência indicada. [2]
O mais importante é compreender o efeito do comando. UPDATE modifica valores nas linhas; ALTER TABLE modifica a definição da tabela. Essa distinção permite resolver questões mesmo quando a classificação terminológica apresenta variações.
Exemplo de banco de dados SQL: um catálogo de produtos
Vamos utilizar duas tabelas: categorias e produtos. Cada categoria possui um identificador e um nome. Cada produto possui identificador, nome, preço e uma referência à categoria à qual pertence.
Esse cenário permite estudar consultas simples, junções e agrupamentos sem mudar de contexto a cada exemplo. Antes de executar qualquer consulta, identifique as colunas disponíveis e as regras de relacionamento. Essa leitura inicial evita interpretar um nome de coluna como se ele representasse outra informação.
CREATE TABLE: criando as estruturas
CREATE TABLE categorias (
id INTEGER PRIMARY KEY,
nome VARCHAR(50) NOT NULL
);
CREATE TABLE produtos (
id INTEGER PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
preco DECIMAL(10, 2) NOT NULL CHECK (preco >= 0),
categoria_id INTEGER REFERENCES categorias(id)
);
CREATE TABLE define uma nova tabela. INTEGER representa um tipo inteiro; VARCHAR armazena textos de tamanho variável, com o limite especificado. DECIMAL(10, 2) permite representar valores decimais com precisão total de dez dígitos e duas casas decimais. [3]
As restrições ajudam a manter dados coerentes. PRIMARY KEY identifica cada linha de forma única e impede valores nulos na chave. NOT NULL exige um valor na coluna. CHECK estabelece uma condição, que neste exemplo impede preços negativos. A chave estrangeira em categoria_id exige que um identificador de categoria informado exista na tabela referenciada. [13]
Observe que categoria_id aceita NULL, pois não recebeu NOT NULL. Assim, podemos cadastrar um produto sem categoria. Essa possibilidade será útil para entender as diferenças entre junções internas e externas.
INSERT: incluindo os dados
INSERT INTO categorias (id, nome) VALUES
(1, ‘Informática’),
(2, ‘Papelaria’),
(3, ‘Livros’);
INSERT INTO produtos (id, nome, preco, categoria_id) VALUES
(1, ‘Notebook’, 3500.00, 1),
(2, ‘Monitor’, 900.00, 1),
(3, ‘Mouse’, 80.00, 1),
(4, ‘Caderno’, 25.00, 2),
(5, ‘Caneta’, 5.00, 2),
(6, ‘Mochila’, 120.00, NULL);
O INSERT acrescenta registros. A lista de colunas deixa explícito o destino de cada valor; em cada linha, a posição dos valores deve corresponder à posição das colunas informadas. Textos aparecem entre aspas simples e os valores numéricos utilizam ponto como separador decimal no código. [14]
Nosso catálogo contém seis produtos. Três pertencem à categoria Informática, dois à Papelaria e um está sem categoria. A categoria Livros existe, mas ainda não possui produtos. Guarde essas informações: elas explicam os resultados das próximas consultas.
Como utilizar o SELECT em SQL?
O SELECT permite escolher quais informações serão apresentadas. A cláusula FROM indica a origem dos dados. Para listar os produtos, podemos escrever: [5]
SELECT nome, preco
FROM produtos;
O resultado contém duas colunas e seis linhas. A consulta não solicita o identificador nem a categoria. Se usássemos SELECT *, obteríamos todas as colunas da tabela. Para estudar uma questão, confira sempre quais colunas o enunciado pede e quais aparecem efetivamente na projeção.
WHERE e ORDER BY: filtrando e ordenando
SELECT nome, preco
FROM produtos
WHERE preco >= 900
ORDER BY preco DESC;
A condição mantém os produtos com preço maior ou igual a 900. O resultado apresenta Notebook, com 3.500, e Monitor, com 900. ORDER BY preco DESC solicita a ordem decrescente de preço; ASC representa a ordem crescente. Sem ORDER BY, a ordem das linhas não é garantida. [5, 12]
Para combinar condições, podemos usar AND e OR. A consulta abaixo seleciona produtos da categoria 1 que custam menos de 1.000:
SELECT nome, preco
FROM produtos
WHERE categoria_id = 1 AND preco < 1000
ORDER BY preco;
O resultado é Mouse, com 80, seguido de Monitor, com 900. Quando houver combinações de AND e OR, use parênteses para deixar a intenção explícita e, em questões, verifique cuidadosamente como as condições foram agrupadas.
IN, BETWEEN e LIKE
IN permite testar se um valor pertence a uma lista. BETWEEN verifica um intervalo incluindo os dois limites. LIKE realiza comparação por padrão textual: % representa uma sequência de zero ou mais caracteres e _ representa um único caractere. [11, 15, 19]
SELECT nome
FROM produtos
WHERE nome LIKE ‘M%’
ORDER BY nome;
No catálogo do exemplo, a consulta encontra Mochila, Monitor e Mouse. O padrão procura nomes que começam com “M”. Uma pergunta semelhante poderia utilizar preco BETWEEN 80 AND 120, selecionando Mouse e Mochila, ou categoria_id IN (1, 2), selecionando os cinco produtos com essas categorias.
DISTINCT: retirando duplicidades do resultado
SELECT DISTINCT categoria_id
FROM produtos;
O DISTINCT elimina linhas repetidas do resultado da consulta. Neste caso, aparecem os valores 1, 2 e NULL, sem repetição. Ele não modifica os dados armazenados. Quando o SELECT contém várias colunas, a eliminação de duplicidades considera a combinação dos valores selecionados. [12]
Como tratar NULL em SQL?
NULL representa a ausência de um valor conhecido ou informado. Ele não equivale automaticamente a zero, texto vazio ou ao texto ‘NULL’. Para buscar produtos sem categoria, use o teste específico: [11]
SELECT nome
FROM produtos
WHERE categoria_id IS NULL;
O resultado é Mochila. Para procurar produtos com categoria informada, use IS NOT NULL. A expressão categoria_id = NULL não realiza o mesmo teste: comparações comuns com NULL produzem resultado desconhecido, e o WHERE mantém as linhas cuja condição é verdadeira. [11]
Esse comportamento exige atenção ao interpretar questões. Se uma linha possui um valor nulo na coluna comparada, ela pode deixar de atender a uma condição sem que isso signifique que o valor seja zero. Antes de calcular o resultado, marque quais colunas do conjunto de dados contêm NULL.
JOIN: consultando dados de tabelas relacionadas
Uma junção combina informações de tabelas segundo uma condição. Em nosso catálogo, os produtos guardam o identificador da categoria; o nome da categoria está em outra tabela. Para reunir essas informações, usamos um JOIN. [6]
INNER JOIN
SELECT p.nome AS produto, c.nome AS categoria
FROM produtos AS p
INNER JOIN categorias AS c ON p.categoria_id = c.id
ORDER BY p.id;
p e c são apelidos das tabelas, chamados aliases. Eles ajudam a qualificar as colunas, especialmente quando duas tabelas possuem nomes de coluna iguais. AS produto e AS categoria definem os rótulos das colunas do resultado. [6]
A junção interna apresenta os cinco produtos que possuem correspondência em categorias. Mochila não aparece porque seu categoria_id é nulo. Livros também não aparece, pois não há produto associado a essa categoria. Leia a condição ON como a regra que determina quais linhas podem ser combinadas.
LEFT JOIN e outras junções
SELECT p.nome AS produto, c.nome AS categoria
FROM produtos AS p
LEFT JOIN categorias AS c ON p.categoria_id = c.id
ORDER BY p.id;
O LEFT JOIN preserva todas as linhas da tabela à esquerda. Aqui, o resultado contém os seis produtos. Para Mochila, a coluna com o nome da categoria recebe NULL, porque nenhuma correspondência foi encontrada. [6]
O RIGHT JOIN preserva as linhas da tabela à direita, enquanto o FULL OUTER JOIN preserva as linhas dos dois lados, incluindo as que não encontram correspondência. O CROSS JOIN produz combinações de todas as linhas de uma tabela com todas as linhas da outra. O suporte a determinados tipos de junção varia entre gerenciadores. [16]
Para resolver uma questão, não suponha que o resultado terá o mesmo número de linhas da tabela principal. Se uma linha encontrar várias correspondências, ela participará de várias combinações. Em nosso exemplo, uma categoria se relaciona com diversos produtos, por isso o nome Informática aparece três vezes na junção.
Também observe filtros aplicados após um LEFT JOIN. Uma condição como WHERE c.nome = ‘Informática’ elimina as linhas sem categoria, pois o valor nulo não satisfaz a comparação. Preservar linhas na junção não impede que um filtro posterior as retire. [16]
Funções agregadas, GROUP BY e HAVING
Funções agregadas calculam um resultado a partir de várias linhas. COUNT conta, SUM soma, AVG calcula a média, MIN encontra o menor valor e MAX encontra o maior. Elas permitem transformar um conjunto de registros em informações resumidas. [8]
SELECT COUNT(*) AS quantidade,
SUM(preco) AS total_precos,
MIN(preco) AS menor_preco,
MAX(preco) AS maior_preco
FROM produtos;
O resultado é uma linha: quantidade 6, total de preços 4.630, menor preço 5 e maior preço 3.500. O total representa a soma dos preços cadastrados, não uma receita de vendas; para calcular receita, seriam necessários dados de vendas e quantidades.
COUNT(*) conta linhas; COUNT(coluna) conta os valores não nulos daquela coluna. Em nosso catálogo, COUNT(*) retorna 6 e COUNT(categoria_id) retorna 5. Funções como SUM e AVG também desconsideram entradas nulas nos cálculos. Essa diferença pode alterar o resultado de uma questão. [8]
Agrupando os dados por categoria
SELECT categoria_id, COUNT(*) AS quantidade,
SUM(preco) AS total_precos
FROM produtos
GROUP BY categoria_id;
O GROUP BY reúne linhas que compartilham os valores das colunas de agrupamento. O resultado possui um grupo para a categoria 1, com três produtos e total 4.480; outro para a categoria 2, com dois produtos e total 30; e um grupo com categoria nula, com um produto e total 120. [7]
Ao selecionar uma coluna junto de funções agregadas, verifique se ela faz parte do agrupamento ou se é admitida pelas regras específicas do gerenciador, como reconhecimento de dependências funcionais. Para os exemplos introdutórios, a forma mais clara é agrupar explicitamente pelas colunas não agregadas selecionadas. [16]
Qual é a diferença entre WHERE e HAVING?
WHERE filtra linhas antes do agrupamento; HAVING filtra os grupos formados. Essa distinção explica por que uma condição sobre COUNT(*) normalmente aparece em HAVING. [7]
SELECT categoria_id, COUNT(*) AS quantidade
FROM produtos
WHERE preco >= 80
GROUP BY categoria_id
HAVING COUNT(*) >= 2;
Primeiro, o filtro de preço mantém Notebook, Monitor, Mouse e Mochila. Depois, o agrupamento forma um grupo para a categoria 1, com três linhas, e outro para a categoria nula, com uma linha. Por fim, HAVING mantém somente o grupo com pelo menos dois produtos: categoria 1, quantidade 3.
Essa sequência é uma boa técnica de resolução: filtre as linhas em uma tabela de rascunho, forme os grupos e só então aplique a condição sobre os totais. Tentar calcular todas as etapas mentalmente aumenta a chance de confundir uma condição individual com uma condição coletiva.
Outros pontos importantes
Subconsultas: uma consulta dentro de outra
Uma subconsulta pode fornecer um valor ou um conjunto de resultados para outra consulta. Considere a pergunta: quais produtos custam mais do que a média dos preços cadastrados? [9]
SELECT nome, preco
FROM produtos
WHERE preco > (SELECT AVG(preco) FROM produtos)
ORDER BY preco DESC;
A consulta interna calcula a média, aproximadamente 771,67. A consulta externa compara cada preço com esse valor e apresenta Notebook e Monitor. Nesse exemplo, a subconsulta funciona como uma expressão que retorna um único valor. Não seria correto substituí-la por uma consulta que retornasse várias linhas nesse mesmo contexto. [9]
Outro recurso é EXISTS, que verifica se uma subconsulta retorna alguma linha. Para encontrar categorias com pelo menos um produto, podemos escrever:
SELECT c.nome
FROM categorias AS c
WHERE EXISTS (
SELECT 1
FROM produtos AS p
WHERE p.categoria_id = c.id
)
ORDER BY c.nome;
O resultado contém Informática e Papelaria. A subconsulta é correlacionada porque faz referência a c.id, pertencente à consulta externa. EXISTS verifica a existência de linhas; o número 1 no SELECT interno não significa que o comando conte os produtos. [15]
UPDATE, DELETE, ALTER e DROP: diferenças essenciais
O UPDATE modifica valores de registros existentes. Para alterar apenas o preço do produto de identificador 2, escrevemos: [17]
UPDATE produtos
SET preco = 850.00
WHERE id = 2;
O Monitor passa de 900 para 850. O WHERE define quais linhas serão alteradas; sem esse filtro, todas as linhas da tabela seriam atingidas pela atualização. Como prática de estudo, execute primeiro um SELECT com a mesma condição para conferir o conjunto selecionado. [17]
O DELETE exclui linhas. O exemplo seguinte remove o cadastro de Mochila: [18]
DELETE FROM produtos
WHERE id = 6;
A tabela permanece existente. Já ALTER TABLE modifica sua estrutura, por exemplo, acrescentando uma coluna: [20]
ALTER TABLE produtos ADD COLUMN descricao VARCHAR(200);
Por sua vez, DROP TABLE produtos remove a própria tabela. Portanto, “excluir um produto” e “excluir a tabela de produtos” são operações diferentes. Em questões, destaque o objeto sobre o qual o comando atua: dados ou estrutura. [2]
Os exemplos desta seção são operações independentes. Os resultados das consultas anteriores consideram o catálogo original com seis produtos. Se você executar as alterações e repetir aquelas consultas, deverá recalcular os resultados com os novos dados.
GRANT e REVOKE: controle de permissões
O comando GRANT concede privilégios. No PostgreSQL, supondo que a função leitor já exista, podemos permitir consultas à tabela de produtos: [21]
GRANT SELECT ON produtos TO leitor;
REVOKE SELECT ON produtos FROM leitor revoga uma concessão desse privilégio. As permissões efetivas também podem depender de associações a outras funções e de concessões por outros caminhos; revogar uma concessão específica não significa necessariamente retirar toda possibilidade de acesso. [22]
Para uma introdução, guarde a finalidade: permissões determinam quais operações um usuário ou uma função pode realizar. A existência de uma tabela, por si só, não explica quem está autorizado a consultá-la ou modificá-la.
Transações: COMMIT, ROLLBACK e SAVEPOINT
Uma transação agrupa operações em uma unidade de trabalho. Imagine uma transferência que reduz o saldo de uma conta e aumenta o saldo de outra. As duas alterações precisam ser tratadas em conjunto para representar corretamente a operação. [10]
No exemplo abaixo, considere uma tabela contas já existente, com as contas 1 e 2. A sintaxe de início da transação é a do PostgreSQL:
BEGIN;
UPDATE contas SET saldo = saldo – 100 WHERE id = 1;
UPDATE contas SET saldo = saldo + 100 WHERE id = 2;
COMMIT;
COMMIT confirma as alterações da transação. Se a operação precisar ser desfeita antes da confirmação, utiliza-se ROLLBACK. SAVEPOINT permite estabelecer um ponto intermediário para um possível retorno parcial. O comportamento automático de transações e o efeito de comandos DDL dependem do gerenciador e das configurações utilizadas. [10]
Esse código ilustra o agrupamento das duas atualizações. Uma transferência real ainda exige verificar condições como existência das contas, saldo disponível e regras para acessos simultâneos. Para estudar, diferencie o papel dos comandos de transação das regras necessárias ao funcionamento completo da aplicação.
Como ler uma consulta e evitar erros comuns?
A ordem em que as cláusulas aparecem no texto não é a mesma usada para explicar logicamente a consulta. Uma sequência útil é considerar a origem e as junções, aplicar WHERE, formar grupos, aplicar HAVING, selecionar as expressões e ordenar o resultado. Essa é uma descrição lógica; o plano físico de execução pode ser diferente. [12]
Na resolução de questões, anote primeiro o conjunto inicial. Depois, registre o efeito de cada etapa. Essa prática ajuda a perceber, por exemplo, que um filtro anterior ao agrupamento muda o valor contado, enquanto um filtro posterior decide quais grupos serão apresentados.
Confira alguns erros que merecem atenção:
| Situação | Problema | Forma de analisar |
|---|---|---|
| Comparar com = NULL | A comparação comum não testa ausência de valor | Use IS NULL ou IS NOT NULL |
| Trocar WHERE por HAVING | O filtro é aplicado a conjuntos diferentes | Separe linhas de grupos |
| Omitir a condição de junção | O resultado pode gerar combinações indevidas | Confira as colunas relacionadas |
| Esperar ordem sem ORDER BY | A ordem não foi solicitada | Localize a cláusula de ordenação |
| Confundir formas de COUNT | Valores nulos alteram a contagem por coluna | Identifique as entradas nulas |
Uma consulta pode executar sem erro de sintaxe e, ainda assim, responder à pergunta errada. Por isso, conferir apenas se o comando é aceito pelo gerenciador não basta. Compare o resultado com a necessidade descrita e verifique se cada linha deveria realmente aparecer.
Como estudar linguagem SQL para concursos públicos?
Comece pelos comandos básicos e pela diferença entre consultar, modificar registros e alterar estruturas. Em seguida, avance para filtros, junções, agregações, subconsultas e transações. Essa organização cria uma base que permite interpretar consultas progressivamente mais complexas.
Monte tabelas pequenas, com poucas linhas, e calcule os resultados antes de executar os comandos. Inclua casos que revelam diferenças de comportamento: uma categoria sem produtos, um produto sem categoria e valores repetidos. Nosso catálogo foi organizado dessa forma justamente para permitir essas comparações.
Depois, resolva questões conforme os conteúdos do edital. Ao errar, identifique a causa concreta: classificação adotada, condição de filtro, presença de NULL, multiplicidade de uma junção ou etapa do agrupamento. Corrigir a regra responsável pelo erro é mais útil do que apenas memorizar o gabarito.
Use também a documentação do gerenciador indicado na prova. Uma função válida em PostgreSQL pode ter outro nome ou outra sintaxe em Oracle Database ou MySQL. Para a preparação em concursos de TI, combine compreensão dos conceitos com atenção ao produto especificado.
O avanço aparece quando você consegue explicar o resultado de uma consulta linha por linha. Pratique essa explicação em voz alta ou por escrito: de onde vêm os dados, quais condições são aplicadas e por que determinado registro aparece ou desaparece. Essa habilidade conecta o estudo teórico ao desenvolvimento de sistemas.
Referências técnicas
[1] IBM – Structured Query Language: https://www.ibm.com/think/topics/structured-query-language
[2] Oracle – Types of SQL Statements: https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Types-of-SQL-Statements.html
[3] PostgreSQL – Creating a New Table: https://www.postgresql.org/docs/current/tutorial-table.html
[4] PostgreSQL – The SQL Language: https://www.postgresql.org/docs/current/tutorial-sql.html
[5] PostgreSQL – Querying a Table: https://www.postgresql.org/docs/current/tutorial-select.html
[6] PostgreSQL – Joins Between Tables: https://www.postgresql.org/docs/current/tutorial-join.html
[7] PostgreSQL – Aggregate Functions: tutorial: https://www.postgresql.org/docs/current/tutorial-agg.html
[8] PostgreSQL – Aggregate Functions: reference: https://www.postgresql.org/docs/current/functions-aggregate.html
[9] PostgreSQL – Value Expressions: https://www.postgresql.org/docs/current/sql-expressions.html
[10] PostgreSQL – Transactions: https://www.postgresql.org/docs/current/tutorial-transactions.html
[11] PostgreSQL – Comparison Functions and Operators: https://www.postgresql.org/docs/current/functions-comparison.html
[12] PostgreSQL – SELECT: https://www.postgresql.org/docs/current/sql-select.html
[13] PostgreSQL – Constraints: https://www.postgresql.org/docs/current/ddl-constraints.html
[14] PostgreSQL – Populating a Table With Rows: https://www.postgresql.org/docs/current/tutorial-populate.html
[15] PostgreSQL – Subquery Expressions: https://www.postgresql.org/docs/current/functions-subquery.html
[16] PostgreSQL – Table Expressions: https://www.postgresql.org/docs/current/queries-table-expressions.html
[17] PostgreSQL – Updates: https://www.postgresql.org/docs/current/tutorial-update.html
[18] PostgreSQL – Deletions: https://www.postgresql.org/docs/current/tutorial-delete.html
[19] PostgreSQL – Pattern Matching: https://www.postgresql.org/docs/current/functions-matching.html
[20] PostgreSQL – Modifying Tables: https://www.postgresql.org/docs/current/ddl-alter.html
[21] PostgreSQL – GRANT: https://www.postgresql.org/docs/current/sql-grant.html
[22] PostgreSQL – REVOKE: https://www.postgresql.org/docs/current/sql-revoke.html
[23] MySQL – SQL Statements: https://dev.mysql.com/doc/refman/8.4/en/sql-statements.html
FAQ sobre linguagem SQL
O que é a linguagem SQL?
SQL é a Linguagem de Consulta Estruturada, utilizada para definir estruturas, consultar e modificar dados em bancos de dados relacionais. Ela também oferece comandos relacionados a permissões e transações. Sua abordagem é predominantemente declarativa: descrevemos o resultado desejado. [1, 2]
Para que serve a linguagem SQL?
Serve para criar tabelas, inserir registros, consultar informações, atualizar valores, excluir dados e realizar outras operações no banco. É utilizada em aplicações, rotinas administrativas e análises que dependem de dados armazenados. [4]
Quais são os principais comandos da linguagem SQL?
Os comandos básicos incluem SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER e DROP. Também é importante conhecer GRANT e REVOKE, para permissões, e COMMIT, ROLLBACK e SAVEPOINT, para controle de transações. [2, 10]
Qual é a diferença entre SQL, MySQL, PostgreSQL e Oracle?
SQL é a linguagem. MySQL, PostgreSQL e Oracle Database são sistemas gerenciadores que a utilizam. Cada produto possui particularidades de sintaxe, funções e recursos, por isso o gerenciador indicado deve orientar o estudo de comandos específicos. [1, 2]
Como utilizar o comando SELECT em SQL?
Informe as colunas desejadas após SELECT e a tabela após FROM. Acrescente WHERE para filtrar e ORDER BY para ordenar. Por exemplo: SELECT nome FROM produtos WHERE preco >= 900 ORDER BY nome;. Junções e agrupamentos podem ampliar a consulta conforme a necessidade. [5]
Como estudar linguagem SQL para concursos públicos?
Estude os conteúdos previstos no edital, pratique com tabelas pequenas e interprete o resultado de cada consulta antes de executá-la. Revise filtros, NULL, junções, agregações, subconsultas e transações. Ao resolver questões, observe a classificação adotada e o gerenciador especificado.
Espero que tenham gostado!
Forte abraço e até a próxima jornada!
_________________________
Professor Rogerão Araújo
![[MÊS DO SERVIDOR] R$ 2,30 por dia – Cabeçalho](https://blog-static.infra.grancursosonline.com.br/wp-content/uploads/2026/10/07112045/mes-do-servidor-pricing-230-dia-cabecalho.webp)
![[MÊS DO SERVIDOR] R$ 2,30 por dia – Post](https://blog-static.infra.grancursosonline.com.br/wp-content/uploads/2026/10/07112454/mes-do-servidor-pricing-230-dia-post.webp)


