Além do DML e DDL - Os outros grupos de elementos do SQL

Além do DML e DDL - Os outros grupos de elementos do SQL

O SQL por ser uma linguagem declarativa ela é bem simples de se aprender e de se usar, apesar de haver comandos e combinações bastante avançadas na mesma ela comparada a linguagens procedurais comum denota de certa facilidade de uso em vantagem a outras.

Entretanto, no nosso dia-a-dia é muito comum utilizarmos e conhecermos o termo DML e DDL, é o que aprendemos na faculdade por exemplo, mas e outros termos como por exemplo: TCL, DTL, DQL, DCL... já ouviu por aí?

Em síntese a linguagem SQL tem 5 grandes e principais elementos, sendo eles: DDL, DML, DQL, DTL ou TCL e DCL, mas afinal, quem são esses?

Para o artigo não ficar muito grande, em resumo temos o seguinte:

DDL - Data Definition Language - Linguagem de Definição de Dados.

Como o nome já diz são comandos/instruções enviadas aos bancos de dados com intuito de definição de objetos presentes nos mesmos, como por exemplo: CREATE, ALTER e DROP

  • CREATE: Cria um determinado objeto dentro da instância, seja ele desde um banco de dados à objetos menores derivados como tabelas, triggers, procedures, etc.

Exemplos:

-- Criando um banco de dados
CREATE DATABASE meu_banco;

-- Criando uma tabela

CREATE TABLE minha_tabela (nome varchar(32), telefone smallint, endereco varchar(64));
  • ALTER: Produz uma alteração no objeto em questão seja por exemplo alterando o tipo de dado de uma determinada coluna em uma tabela, adicionando uma coluna ou alterando por exemplo o nome de uma tabela, etc.
-- Adicionando uma nova coluna na tabela minha_tabela
ALTER TABLE minha_tabela ADD idade smallint;
  • DROP: Destrói determinado objeto na instância/banco. Use esse comando com cuidado.
-- Apagando um banco de dados
DROP DATABASE meu_banco;

-- Apagando a tabela minha_tabela
DROP TABLE minha_tabela;

DML - Data Manipulation Language - Linguagem de Manipulação de Dados.

São os comandos que interagem com os dados dentro das tabelas, como por exemplo: INSERT, DELETE e UPDATE.

  • INSERT: Insere dados em determinada tabela.
-- Adicionando dados na tabela minha_tabela
INSERT INTO minha_tabela (nome, idade, endereco) VALUES ("Fernando", 32, "Avenida das Couves 35");
  • DELETE: Remove dados em uma determinada tabela.
DELETE FROM minha_tabela WHERE nome = "Fernando";
  • UPDATE: Atualiza determinado dado em uma tabela.
UPDATE minha_tabela SET nome = "Castro" WHERE nome = "Fernando";

DQL - Data Query Language - Linguagem de Consulta de dados.

São os comandos de consulta como por exemplo: SELECT.

-- Traz todos os dados da tabela minha_tabela
select * from minha_tabela;

Alguns livros colocam o SELECT como DML visto que em alguns bancos de dados ele não somente retorna informações como também às manipula diretamente em seu resultado e também fazendo movimentação de dados como por exemplo em um "SELECT * INTO TABELA FROM TABELA_2"

-- Exemplo de select que movimenta dados
SELECT nome, idade, endereco INTO minha_tabela_2 FROM minha_tabela;

DTL - Data Transaction Language - Linguagem de Transação de Dados.

São os comandos para controle de transação. Em alguns livros é descrita como TCL ou Transaction Control Language.

Em um resumo vulgar, transações são contextos encapsulados em cada requisição os quais se mantém a nível de sessão a integridade e atomicidade(nem sempre) dos dados manipulados.

Em breve irei fazer um artigo sobre MVCC e todos entenderão sobre transações, concorrência, atomicidade de dados, versionamento de linhas, etc.

São comandos DTL/TCL : BEGIN TRANSACTION, COMMIT, ROLLBACK, SAVEPOINT.

  • BEGIN/BEGIN TRANSACTION - São usados para iniciar/instanciar uma transação dentro da sessão.
  • COMMIT - Utilizado para confirmar as alterações executadas dentro do contexto da transação.
  • ROLLBACK - Utilizado para reverter as alterações executadas dentro do contexto da transação.
  • SAVEPOINT - Utilizado para gerar um ponto de salvamento dentro do contexto da transação para poder ser retornado caso haja vontade sem precisar finalizar a transação com um commit ou rollback.

Exemplo:

BEGIN; -- Inicia a transação

DELETE FROM minha_tabela WHERE nome = "Fernando";

COMMIT; -- Confirma o delete

ROLLBACK; -- Descarta o delete

SAVEPOINT; -- Cria um ponto de salvamento que pode ser retornado posteriormente

DCL - Data Control Language - Linguagem de Controle de Dados.

São os comandos para controlar a parte de segurança do banco de dados, por exemplo: GRANT, REVOKE E DENY.

  • GRANT - Utilizado para aplicar/garantir permissões a determinado usuário ou role dentro do banco de dados.
  • REVOKE - Utilizado para remover determinadas permissões a um usuário ou role dentro do banco de dados.
  • DENY - Utilizado para negar determinadas permissões a um usuário ou role dentro do banco de dados.
-- Libera permissão de leitura na tabela minha_tabela ao usuário/role fernando
GRANT select on table minha_tabela to fernando;

-- Retira a permissão de leitura na tabela minha_tabela ao usuário/role fernando
REVOKE select on table minha_tabela to fernando.

-- Nega permissão de leitura na tabela minha_tabela ao usuário/role fernando
DENY select on table minha_tabela to fernando.

Gostou do artigo? Deixe um feedback para que eu possa trazer artigos ainda melhores no futuro. Desde já muito obrigado pela sua leitura no meu artigo, até o próximo! :)


Entre para ver ou adicionar um comentário

Outros artigos de Fernando Castro

Outras pessoas também visualizaram

Conferir tópicos