Versão de demonstração: os dados deste texto ainda passam por revisão de fatos.
Neste artigo
O que é SQL e para que serve
SQL descreve o que você quer do banco, e o banco decide como entregar. Você escreve, por exemplo, "traga o nome dos alunos com nota acima de 7", e o sistema encontra as linhas certas.
Um banco relacional guarda dados em tabelas. Se esse conceito ainda é novo, leia antes o guia de banco de dados relacional. Para o conceito mais geral, o ponto de partida é o guia de banco de dados.
SQL e banco de dados andam juntos, mas não são a mesma coisa. O banco guarda os dados, o SGBD administra o banco e o SQL é a língua em que você faz o pedido. Quem usa um site de loja ou um aplicativo de banco não vê o SQL, mas o sistema o executa a cada busca e a cada cadastro.
O SQL serve para quatro tarefas principais:
- criar e mudar a estrutura das tabelas;
- gravar, corrigir e apagar registros;
- consultar os dados com filtros e ordenação;
- definir quem pode ler ou alterar cada tabela.
A origem do SQL está na IBM, onde Donald Chamberlin e Raymond Boyce desenvolveram a primeira versão, chamada SEQUEL. A linguagem virou padrão ANSI em 1986 e padrão ISO em 1987, e hoje o padrão leva o número ISO/IEC 9075, segundo a Wikipédia (artigo em inglês, conferido em 28 de outubro de 2026). Cada sistema gerenciador de banco de dados (SGBD) implementa o padrão à sua maneira, com extensões próprias.
SQL é linguagem de programação?
Depende do que você chama de programação. A explicação honesta tem duas partes.
Primeiro, o SQL é uma linguagem de consulta. A Wikipédia o descreve como uma linguagem específica de domínio, usada para gerenciar dados, e como essencialmente declarativa. Declarativa quer dizer que você descreve o resultado, não cada passo para chegar a ele.
Segundo, a programação com laços, condições e variáveis fica nas extensões do SQL. O manual do PostgreSQL diz que o PL/pgSQL adiciona estruturas de controle à linguagem SQL. A Wikipédia também registra que existem extensões procedurais ao SQL padrão.
Na conversa do dia a dia, as pessoas chamam SQL de linguagem de programação sem maiores problemas. Para estudar, vale a distinção: SQL puro pede dados, e as extensões permitem escrever lógica dentro do banco.
Na prática, isso afeta o seu aprendizado. Quem já programa em outra linguagem estranha o SQL no começo, porque ele não tem a sequência de passos a que está acostumado. Em vez de "percorra cada aluno e some as notas", você escreve o resultado que quer e deixa o banco escolher o caminho.
Grupos de comandos: DDL, DML, DQL, DCL e TCL
Os comandos SQL costumam ser organizados em grupos. A Wikipédia afirma que a divisão é informal e cita DQL, DDL, DCL e DML. O TCL, para transações, aparece em manuais e cursos, e o MySQL reúne esses comandos em "Transactional and Locking Statements". Como a divisão varia entre autores, trate-a como um mapa de estudo.
Os exemplos abaixo usam uma tabela alunos e a sintaxe padrão. Eles foram conferidos nos manuais do PostgreSQL, do MySQL e do SQLite; onde o dialeto muda, o texto avisa.
DDL: define a estrutura
DDL (Data Definition Language, linguagem de definição de dados) cria e altera tabelas. O principal comando é o CREATE TABLE.
CREATE TABLE alunos (
id INTEGER PRIMARY KEY,
nome VARCHAR(100),
nota NUMERIC(4,2)
);
O SQLite descreve o CREATE TABLE como o comando para criar uma tabela nova. Outros comandos do grupo são ALTER TABLE, para mudar a tabela, e DROP TABLE, para removê-la. Atenção: no SQLite, o ALTER TABLE aceita só algumas variações, segundo a documentação oficial.
DML: altera os dados
DML (Data Manipulation Language, linguagem de manipulação de dados) grava, corrige e apaga registros.
INSERT INTO alunos (id, nome, nota) VALUES (1, 'Ana', 8.5);
UPDATE alunos SET nota = 9 WHERE id = 1;
DELETE FROM alunos WHERE id = 1;
O INSERT cria linhas novas, o UPDATE muda as existentes e o DELETE remove. O manual do PostgreSQL avisa que um DELETE sem condição apaga todas as linhas da tabela, sem pedir confirmação. Por isso, escreva sempre o WHERE.
DQL: consulta os dados
DQL (Data Query Language, linguagem de consulta de dados) tem um comando só na prática: o SELECT. Alguns autores o incluem no DML.
SELECT nome, nota FROM alunos WHERE nota >= 7 ORDER BY nome;
O manual do PostgreSQL divide o SELECT em lista de colunas, lista de tabelas e uma condição opcional. O WHERE filtra as linhas, e o ORDER BY define a ordem. Quando os dados estão em duas tabelas, o JOIN combina as linhas pelo valor da chave, como mostra o guia de banco relacional.
DCL: controla as permissões
DCL (Data Control Language, linguagem de controle de dados) define quem pode fazer o quê. Os comandos são GRANT, para conceder, e REVOKE, para retirar.
GRANT SELECT ON alunos TO leitura;
REVOKE SELECT ON alunos FROM leitura;
Esse exemplo segue o PostgreSQL, em que leitura é um papel (role) que precisa existir antes. No MySQL, o destino é uma conta no formato 'usuario'@'host', criada antes com CREATE USER. No SQLite, não há exemplo: a documentação oficial diz que GRANT e REVOKE não são implementados, porque seriam inúteis para um banco embutido na aplicação.
TCL: controla transações
TCL (Transaction Control Language, linguagem de controle de transações) agrupa comandos em uma operação de tudo ou nada. O manual do PostgreSQL explica que, se algo falha no meio da transação, nenhum passo altera o banco.
BEGIN;
UPDATE alunos SET nota = 7 WHERE id = 1;
ROLLBACK;
O ROLLBACK cancela o UPDATE. Para gravar, você troca o ROLLBACK por COMMIT. A sintaxe BEGIN funciona nos três bancos, segundo os manuais, e o MySQL também aceita START TRANSACTION. Atenção ao modo automático: o MySQL roda com autocommit ligado por padrão, e o SQLite inicia e encerra uma transação sozinho quando você não abre uma. Sem BEGIN, o ROLLBACK não desfaz o comando anterior.
Linguagens procedurais: PL/SQL, PL/pgSQL e T-SQL
Fabricantes de SGBD criaram extensões do SQL com laços, condições e variáveis. Essas extensões ficam dentro do banco e servem para funções, procedimentos e gatilhos (triggers).
- PL/SQL: a Oracle a define como a extensão procedural do SQL do Oracle Database.
- PL/pgSQL: é a linguagem procedural carregável do PostgreSQL, segundo o manual, usada para criar funções, procedimentos e gatilhos.
- T-SQL (Transact-SQL): é a linguagem da Microsoft. A documentação diz que ferramentas e aplicações que falam com um banco SQL Server o fazem por comandos T-SQL.
Cada uma só roda no SGBD de origem. Um código em PL/SQL não funciona direto no PostgreSQL. Aprenda o SQL básico primeiro e deixe as extensões para quando tiver um banco específico em mente.
Primeiros passos para praticar
- Escolha um banco simples. O SQLite é um banco embutido na aplicação, segundo a documentação oficial. Para testar sem instalar nada, use um editor de SQLite online.
- Crie a tabela
alunoscom o CREATE TABLE da seção sobre DDL e insira três linhas com INSERT. - Consulte com SELECT. Teste o WHERE, depois o ORDER BY.
- Altere e apague com cuidado. Rode um SELECT com a mesma condição antes de cada UPDATE ou DELETE.
- Use um cliente gráfico. O DBeaver é descrito no site oficial como uma ferramenta gratuita e de código aberto, na edição Community, para gerenciar bancos como MySQL, PostgreSQL e SQLite. Baixe sempre pelo site oficial.
Quando quiser um banco no computador, o PostgreSQL é uma boa opção de estudo, e o guia de instalação mostra o passo a passo. Qual banco escolher depende do seu objetivo.
Erros comuns
- Rodar UPDATE ou DELETE sem WHERE e alterar a tabela inteira.
- Copiar um comando de outro banco sem conferir o dialeto. O que funciona em T-SQL ou PL/SQL pode falhar no PostgreSQL ou no MySQL.
- Achar que SQL e MySQL são a mesma coisa. SQL é a linguagem; MySQL é um dos sistemas que a entende.
- Esperar um ROLLBACK depois de um COMMIT. Depois da gravação, o comando não desfaz.
- Testar comandos de apagar direto em dados de verdade, sem cópia de segurança.
Próximo passo
SQL só faz sentido sobre tabelas bem organizadas. Se você pulou essa parte, a resposta sobre bancos relacionais explica chave primária, chave estrangeira e o exemplo de duas tabelas. Os demais guias do tema ficam na resposta do silo, e outros assuntos do MundoBla começam na resposta da página inicial.
Fonte: manuais oficiais do PostgreSQL, do MySQL, do SQLite, da Oracle e da Microsoft, e a Wikipédia para a história e a classificação dos comandos, listados em Fontes. Verificado em 28 de outubro de 2026.
Perguntas frequentes
O que é SQL?
SQL é a linguagem usada para consultar e alterar dados em bancos de dados relacionais. Com ela, você cria tabelas, insere registros, busca informações e controla quem pode acessar o quê. A sigla vem de Structured Query Language, em português, linguagem estruturada de consulta.
Para que serve o SQL?
O SQL serve para conversar com o banco de dados. Você usa comandos para criar tabelas, gravar dados, buscar o que precisa, corrigir registros e apagar o que não vale mais. Sites, aplicativos e sistemas de empresas usam SQL por baixo para guardar e recuperar informação.
SQL é um banco de dados?
Não. SQL é a linguagem, e o banco de dados é onde os dados ficam guardados. O programa que administra o banco é o SGBD, sistema gerenciador de banco de dados, como PostgreSQL, MySQL ou SQLite. Você escreve SQL, e o SGBD executa o pedido.
O que significa DDL, DML, DQL, DCL e TCL?
São grupos informais de comandos SQL. DDL define a estrutura, como CREATE. DML altera dados, como INSERT, UPDATE e DELETE. DQL consulta, com SELECT. DCL controla permissões, com GRANT e REVOKE. TCL controla transações, com COMMIT e ROLLBACK. A divisão varia entre autores e manuais.
O que é uma consulta (query) em SQL?
Consulta, ou query, é um pedido de dados escrito em SQL. A mais comum usa o comando SELECT, que informa quais colunas você quer, de qual tabela e com quais condições. O banco devolve só as linhas que atendem ao pedido, na ordem que você indicar.
Como aprender SQL do zero?
Comece por um banco simples, como o SQLite, e pratique os cinco comandos básicos: CREATE TABLE, INSERT, SELECT, UPDATE e DELETE. Use uma tabela pequena que você mesmo invente. Depois, aprenda filtros com WHERE, ordenação e a junção de tabelas com JOIN.
Como praticar SQL sem instalar nada?
Use um editor de SQLite no navegador, que roda o banco na própria página. Você cria tabelas e testa comandos sem instalar programa. A página sobre SQLite online reúne essa opção. Quando quiser um banco no computador, instale pelo site oficial do projeto.
Como escrever um SELECT?
O SELECT tem três partes: as colunas que você quer, a tabela de onde vêm e, se precisar, uma condição com WHERE. Exemplo: SELECT nome FROM alunos WHERE nota >= 7. O manual do PostgreSQL descreve essas partes como lista de seleção, lista de tabelas e qualificação.
Como não apagar todos os dados sem querer?
Escreva sempre o WHERE em UPDATE e DELETE. O manual do PostgreSQL avisa que DELETE sem condição remove todas as linhas da tabela, e o sistema não pede confirmação. Teste a condição antes com um SELECT e, se possível, faça isso dentro de uma transação.
Como desfazer um comando que errei?
Só dá para desfazer se o comando estiver dentro de uma transação aberta, com BEGIN ou START TRANSACTION. Nesse caso, ROLLBACK cancela as alterações. Depois de COMMIT, o resultado fica gravado. Por isso, faça cópia de segurança (backup) antes de mexer em dados importantes.
SQL é uma linguagem de programação?
Depende do critério. SQL é uma linguagem de consulta, em que você descreve o que quer, e não o passo a passo. Fontes a descrevem como essencialmente declarativa. Laços e condições fazem parte de extensões, como PL/pgSQL, PL/SQL e T-SQL.
Qual a diferença entre SQL e MySQL?
SQL é a linguagem. MySQL é um sistema gerenciador de banco de dados que entende SQL. A confusão vem do nome parecido. Outros SGBDs, como PostgreSQL e SQLite, também usam SQL, cada um com pequenas diferenças de sintaxe e recursos.
SQL e NoSQL são concorrentes?
São abordagens diferentes. SQL é a linguagem dos bancos relacionais, que usam tabelas. NoSQL reúne bancos com outros modelos, como documentos ou chave e valor. Um não substitui o outro: a escolha depende do formato dos dados e das consultas que você vai fazer.
O SQL é igual em todos os bancos?
Não é idêntico. Existe um padrão internacional, o ISO/IEC 9075, mas cada SGBD tem extensões e diferenças. O SQLite, por exemplo, não implementa GRANT e REVOKE, segundo a documentação oficial. Comandos básicos costumam funcionar em todos; confira o manual do seu banco.
Qual o risco de rodar SQL copiado da internet?
O risco é executar um comando que altera ou apaga dados que você não queria. Leia o que o código faz antes de rodar e teste em uma cópia do banco. Desconfie de comandos com DROP ou DELETE sem WHERE, que podem destruir tabelas ou todas as linhas.
Onde encontro a documentação oficial do SQL?
Cada SGBD publica o próprio manual: postgresql.org para o PostgreSQL, dev.mysql.com para o MySQL e sqlite.org para o SQLite. O padrão em si é o ISO/IEC 9075, mantido pela ISO e pela IEC. Para os comandos do dia a dia, o manual do seu banco é a fonte mais segura.
Preciso saber SQL para trabalhar com dados?
Costuma ajudar, mas depende da função. Vagas de análise de dados, desenvolvimento e administração de banco costumam pedir SQL; outras áreas não. Aprender o básico já permite consultar dados e ler relatórios com mais autonomia, sem depender de outra pessoa.
Referências
- Wikipédia, SQL (padronização ANSI/ISO, sublinguagens e natureza declarativa). Disponível em: https://en.wikipedia.org/wiki/SQL.
- PostgreSQL, documentação: Querying a Table (SELECT). Disponível em: https://www.postgresql.org/docs/current/tutorial-select.html.
- PostgreSQL, documentação: INSERT. Disponível em: https://www.postgresql.org/docs/current/sql-insert.html.
- PostgreSQL, documentação: Updates e Deletions. Disponível em: https://www.postgresql.org/docs/current/tutorial-update.html.
- PostgreSQL, documentação: GRANT. Disponível em: https://www.postgresql.org/docs/current/sql-grant.html.
- PostgreSQL, documentação: REVOKE. Disponível em: https://www.postgresql.org/docs/current/sql-revoke.html.
- PostgreSQL, documentação: Transactions. Disponível em: https://www.postgresql.org/docs/current/tutorial-transactions.html.
- PostgreSQL, documentação: PL/pgSQL Overview. Disponível em: https://www.postgresql.org/docs/current/plpgsql-overview.html.
- MySQL 8.4 Reference Manual: SQL Statements. Disponível em: https://dev.mysql.com/doc/refman/8.4/en/sql-statements.html.
- MySQL 8.4 Reference Manual: GRANT. Disponível em: https://dev.mysql.com/doc/refman/8.4/en/grant.html.
- MySQL 8.4 Reference Manual: START TRANSACTION, COMMIT e ROLLBACK. Disponível em: https://dev.mysql.com/doc/refman/8.4/en/commit.html.
- SQLite: SQL Features That SQLite Does Not Implement. Disponível em: https://www.sqlite.org/omitted.html.
- SQLite: Transaction. Disponível em: https://www.sqlite.org/lang_transaction.html.
- Oracle, PL/SQL: Overview. Disponível em: https://docs.oracle.com/en/database/oracle/oracle-database/23/lnpls/overview.html.
- Microsoft Learn, Transact-SQL Reference. Disponível em: https://learn.microsoft.com/en-us/sql/t-sql/language-reference.
- DBeaver, site oficial. Disponível em: https://dbeaver.io/.
Fontes conferidas em 28 de outubro de 2026.