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! :)