Voltar para a lista de artigos Artigos
7 minutos de leitura

O que são DDL, DML, DQL, e DCL em SQL?

Exploramos a separação de SQL em suas quatro principais sub-línguas e explicamos o significado por trás de cada uma delas.

Quando você estiver aprendendo SQL - talvez através do LearnSQL.com.br's muito próprio abrangente SQL para Iniciantes curso - você pode ter se deparado com os termos DDL, DML, DQL e DCL. E talvez você tenha ficado confuso por todas as siglas. Neste artigo, explicaremos o que significam estes termos e como eles correspondem a sublínguas que dividem a linguagem SQL em quatro partes que funcionam juntas.

Dividindo a linguagem SQL em sub-línguas

A Structured Query Language, ou SQL, é uma linguagem abrangente para manipulação de bancos de dados. É a linguagem utilizada em sistemas de bancos de dados como PostgreSQL, MySQL, Microsoft SQL Server, e Oracle Database. Cada um destes sistemas tem suas próprias implementações das dezenas de comandos na linguagem SQL (ou seja, seus próprios dialetos), o que pode ser esmagador no início.

SQL pode fazer muitas coisas diferentes: criar tabelas de banco de dados, inserir ou alterar registros, adicionar índices, recuperar informações, e assim por diante. Portanto, pode ser útil dividir SQL em várias sub-línguas; isto nos ajuda a envolver nossas cabeças em todas as diferentes operações que podem ser realizadas em um banco de dados SQL. Estas sub-línguas são:

  • Data Query Language (DQL) - A Data Query Language é a sub-língua responsável pela leitura, ou consulta, de dados de um banco de dados. Em SQL, isto corresponde à SELECT
  • Data Manipulation Language (DML ) - A Data Manipulation Language é o sub idioma responsável pela adição, edição ou exclusão de dados de um banco de dados. Em SQL, isto corresponde ao INSERT, UPDATE, e DELETE
  • Data Definition Language (DDL ) - A linguagem de definição de dados é a sub-língua responsável pela definição da forma como os dados são estruturados em um banco de dados. Em SQL, isto corresponde à manipulação de tabelas através do CREATE TABLE, ALTER TABLE, e DROP TABLE
  • Data Control Language (DCL) - A Data Control Language é a sub-língua responsável pelas tarefas administrativas de controle do próprio banco de dados, principalmente a concessão e revogação de permissões de banco de dados para os usuários. Em SQL, isto corresponde aos comandos GRANT, REVOKE, e DENY, entre outros.

Nas seções abaixo passaremos por estas sublínguas uma a uma e exploraremos seus significados e os comandos que elas representam. Se você quiser um mergulho mais profundo sobre estes conceitos, siga nossos conceitos interativos SQL para Iniciantes curso em LearnSQL.com.br. Ele contém 129 exercícios práticos que o ajudarão a aprender SQL através da prática. Com cada exercício resolvido, você ganhará confiança em suas habilidades SQL.

Linguagem de Consulta de Dados (DQL)

A Data Query Language, ou DQL, é o grupo de comandos responsáveis por consultar os dados de um banco de dados. O principal comando DQL em SQL é o comando SELECT, que recupera dados de uma ou mais tabelas.

Vamos pegar a seguinte tabela. Ela contém detalhes de contas bancárias e é denominada Accounts:

IDNameBalance
1John Doe2000
2Sally Swanson1800
3Richard Poor5

Se quiséssemos recuperar os nomes de todos os usuários com uma conta bancária, usaríamos este comando SELECT:

SELECT Name 
FROM Accounts

O comando acima é uma declaração típica da sub-língua DQL. E se, no entanto, quiséssemos obter os nomes de todos os usuários com um saldo superior a US$ 1.500? Nesse caso, precisamos acrescentar a cláusula WHERE à declaração:

SELECT Name 
FROM Accounts 
WHERE Balance > 1500

Dê uma olhada em nossa SQL para Iniciantes Cheat Sheet para obter detalhes sobre o comando SELECT (e muito mais).

Linguagem de Manipulação de Dados (DML)

A Linguagem de Manipulação de Dados, ou DML , é o grupo de comandos responsáveis pela manipulação de dados em um banco de dados; isto geralmente implica em inserir, editar ou excluir linhas em tabelas SQL.

O comando SQL para inserção de uma nova linha em uma tabela é o comando INSERT. Se quisermos adicionar uma linha ao comando Accounts tabela para um usuário chamado Evan Johnson com um saldo de 3.200 dólares, faríamos algo como isto:

INSERT INTO Accounts (Name, Balance) 
VALUES (‘Evan Johnson’, 3200)

Se, em algum momento no futuro, Evan fizesse um saque de $200, precisaríamos atualizar seu saldo para $3000. Para editar o registro da conta bancária de Evan, precisamos usar o comando UPDATE:

UPDATE Accounts SET Balance = 3000 
WHERE Name = ‘Evan Johnson’

Finalmente, se Evan decidisse fechar sua conta em nosso banco, precisaríamos apagar sua entrada no Accounts mesa. Para conseguir isso, precisamos usar o comando DELETE:

DELETE FROM Accounts 
WHERE Name = ‘Evan Johnson’

Os comandos descritos acima (INSERT, UPDATE, e DELETE) representam as principais operações SQL para manipulação de dados e assim compõem a Linguagem de Manipulação de Dados. Para saber mais sobre estes comandos, você pode ler o artigo SQL INSERT, SQL UPDATE, SQL DELETE - Oh My! ou pegar o Usando Comandos INSERT, UPDATE e DELETE em SQL curso aqui mesmo em LearnSQL.com.br.

Linguagem de Definição de Dados (DDL)

A Linguagem de Definição de Dados, ou DDL, é composta pelos comandos responsáveis pela criação, edição e exclusão de tabelas SQL. Estes comandos são CREATE TABLE, ALTER TABLE, e DROP TABLE.

Nos exemplos acima, estávamos trabalhando com a Accounts tabela, que já possuía uma estrutura e registros. Mas como criar esta mesa em primeiro lugar? Precisaríamos usar o comando CREATE TABLE:

CREATE TABLE Accounts (
	ID INT,
	Name VARCHAR(255),
	Balance INT
)

E se depois quiséssemos editar a tabela para que ela tivesse uma coluna armazenando os números de telefone dos titulares de contas? Usaríamos o comando ALTER TABLE:

ALTER TABLE Accounts
ADD Phone VARCHAR(255)

Finalmente, se quisermos apagar o comando Accounts no conjunto, usaríamos o comando DROP TABLE:

DROP TABLE Accounts

Estes comandos têm muito mais características do que os listados acima e sua sintaxe específica tende a variar entre os dialetos SQL. Se você quiser aprender mais, pegue nossa trilha Creating Database Structure ou leia What Is a SQL Dialect, and Which One Should You Learn? para ter uma idéia das diferentes implementações SQL disponíveis.

Linguagem de Controle de Dados (DCL)

A Linguagem de Controle de Dados, ou DCL , resumindo, é responsável por todos os tipos de tarefas administrativas em torno do próprio banco de dados. A mais notável é a definição de permissões para os usuários do banco de dados, que é feita principalmente através dos comandos GRANT, REVOKE, e DENY.

GRANT é o comando SQL responsável pela concessão de permissões a um usuário do banco de dados. Se quiséssemos conceder a permissão para consultar o Accounts a um usuário chamado Mark, nós faríamos algo assim:

GRANT SELECT TO ‘mark’@’localhost’

Para negar explicitamente a permissão de consultar a tabela para um usuário do banco de dados, use o comando DENY como segue:

DENY SELECT FROM ‘mark’@’localhost’

Note que a negação explícita de uma permissão impede que ela seja concedida no futuro. Se simplesmente quisermos reverter um comando GRANT ou DENY, devemos usar o comando REVOKE:

REVOKE SELECT FROM ‘mark’@’localhost’

O comando acima reverte quaisquer permissões particulares GRANT e DENY atribuídas ao usuário, essencialmente redefinindo-as para seu estado padrão.

Note que estes comandos diferem muito entre os dialetos SQL, portanto, os exemplos acima estão assumindo que você está executando o Microsoft SQL Server. Há muitos outros comandos que lidam com a administração de bancos de dados, mas estes diferem tanto entre plataformas que seria esmagador lidar com eles aqui. Consulte a documentação de seu banco de dados para obter mais detalhes.

Saiba mais sobre a linguagem SQL

Em resumo, a linguagem SQL pode ser dividida em quatro sub-línguas:

  1. Linguagem Data Query (DQL) para consulta de dados.
  2. Linguagem de Manipulação de Dados (DML) para edição de dados.
  3. Data Definition Language (DDL ) para a estruturação de dados.
  4. Linguagem deControle de Dados (DCL) para administrar o banco de dados.

Se você quiser saber mais sobre SQL, junte-se a nossa SQL para Iniciantes curso, onde cobrimos tudo isso e muito mais. Você também pode dar uma olhada em nosso SQL para Iniciantes Cheat Sheet para uma rápida atualização de sintaxe em qualquer comando.