⌘K

13 – SQL no PostgreSQL: O que significam DDL, DML, DCL e DTL? O Guia Definitivo de Siglas

Last updated

Chegamos ao final da nossa jornada introdutória de SQL! Ao longo dos últimos posts, nós colocamos a mão na massa no PostgreSQL: criamos tabelas, inserimos dados, otimizamos buscas com índices, isolamos complexidade com views, criamos automações com triggers e blindamos acessos com roles.

Se você olhar para trás, você já aprendeu uma quantidade massiva de comandos (CREATE, INSERT, SELECT, GRANT, ALTER…). Mas no dia a dia da Engenharia de Software, DevOps e Engenharia de Dados, é muito comum vermos esses comandos agrupados em siglas de quatro letras: DDL, DML, DCL e DTL.

Para fechar nossa seção de fundamentos com chave de ouro, vamos entender o que significa cada um desses subgrupos do SQL, para que servem e como mapear os comandos que você já domina dentro deles.

O Panorama Geral das Categorias SQL

O SQL não é apenas uma linguagem única, mas sim um conjunto de sublinguagens especializadas. Cada sigla representa o objetivo do comando que você está executando.

Aqui está o resumo visual de como o ecossistema se divide:

CategoriaSignificadoO que faz?Principais Comandos
DDLData Definition LanguageDefine e modifica a estrutura dos objetos (o esqueleto).CREATE, ALTER, DROP, TRUNCATE
DMLData Manipulation LanguageManipula os dados armazenados dentro das tabelas.INSERT, SELECT, UPDATE, DELETE
DCLData Control LanguageControla a segurança e permissões de acesso.GRANT, REVOKE
DTL (ou TCL)Data Transaction LanguageGerencia as transações e a consistência dos dados.BEGIN, COMMIT, ROLLBACK

1. DDL: Data Definition Language (Linguagem de Definição de Dados)

Os comandos DDL lidam diretamente com o esquema (schema) do banco de dados. Eles não mexem nos registros (linhas) em si, mas sim nas estruturas que guardam esses registros (tabelas, índices, views, triggers).

  • CREATE: Cria um novo objeto (ex: CREATE TABLE servidores...).
  • ALTER: Modifica a estrutura de um objeto existente (ex: ALTER TABLE servidores ADD COLUMN...).
  • DROP: Exclui permanentemente um objeto e tudo o que está dentro dele (ex: DROP TABLE servidores;).
  • TRUNCATE: Esvazia completamente o conteúdo de uma tabela instantaneamente, mas mantém a sua estrutura intacta para novos dados.

2. DML: Data Manipulation Language (Linguagem de Manipulação de Dados)

Uma vez que a DDL criou a estrutura, a DML entra em cena para interagir com a informação. É a camada com a qual o código da sua aplicação (backend) passa 95% do tempo interagindo.

  • INSERT: Adiciona novos registros.
  • SELECT: Consulta e extrai os dados. (Nota técnica: alguns autores classificam o SELECT isoladamente como DQL – Data Query Language, mas historicamente ele faz parte da DML).
  • UPDATE: Modifica dados existentes.
  • DELETE: Remove linhas específicas.

3. DCL: Data Control Language (Linguagem de Controle de Dados)

Como vimos no post sobre privilégios mínimos, a segurança é vital. A DCL gerencia os direitos de propriedade e as permissões de execução dos usuários e roles do sistema.

  • GRANT: Concede permissão de acesso a um objeto (ex: GRANT SELECT TO analista_bi_grupo;).
  • REVOKE: Retira uma permissão anteriormente concedida.

4. DTL / TCL: Data Transaction Language (Linguagem de Transação de Dados)

Este grupo garante uma das propriedades mais importantes dos bancos de dados relacionais: o ACID (especificamente a Atomicidade e o Isolamento). Comandos DTL garantem que um conjunto de operações aconteça com sucesso total, ou seja completamente desfeito caso algo falhe no meio do caminho.

  • BEGIN TRANSACTION (ou apenas BEGIN no Postgres): Inicia uma transação. Tudo o que for executado após esse comando fica em um estado temporário.
  • COMMIT: Salva permanentemente no disco todas as alterações feitas desde o BEGIN.
  • ROLLBACK: Aborta a transação atual e desfaz tudo o que foi feito desde o BEGIN, voltando o banco ao estado original.
BEGIN;
  UPDATE servidores SET status = 'inativo' WHERE id = 10;
  INSERT INTO logs_infra (evento) VALUES ('Servidor 10 desativado');
COMMIT; -- Se tudo deu certo, salva ambos. Se a máquina cair antes do COMMIT, nada é alterado.

Conclusão e Próximos Passos

Parabéns! Compreender a diferença entre DDL, DML, DCL e DTL fecha o ciclo de fundamentos de banco de dados. Agora, quando você ler uma documentação de uma ferramenta de automação (como o Flyway, Liquibase ou o dbt) falando que ela “gerencia scripts DDL”, ou um relatório de segurança apontando “excesso de privilégios DCL”, você já sabe exatamente do que se trata.

Mas a nossa jornada de manipulação de dados ainda tem um último capítulo essencial. Existe um comando poderoso, mas que se for usado sem cuidado em produção, pode causar o maior pesadelo de um time de tecnologia.

No próximo post, vamos fechar a nossa seção essencial de SQL falando exclusivamente sobre o comando DELETE. Vamos aprender como remover dados de forma cirúrgica e segura, e quais são as boas práticas de infraestrutura para evitar desastres em ambientes vivos. Até lá!

Ficou fácil fixar as siglas com esse resumo? Qual dessas categorias você acha mais desafiadora de gerenciar em produção? Deixe seu comentário aqui embaixo e nos vemos no próximo post!

Still stuck? How can we help? Get Help