Uma tal de SQL: um breve resumo das subdivisões que integram essa linguagem!
- #SQL
A patroa dos bancos de dados, sim pois a sigla (ou acrônimo para quem é um pouco mais exigente quanto a protocólos) Structured Query Language quer dizer Linguagem de Consulta Estruturada e é ela quem é a responsável por todas as ações que envolvem um banco de dados relacional.
Você pode pesquisar um pouco da história se quiser, mas como diz o nome do artigo, aqui falaremos sobre as partes que fazem a composição dessa linguagem.
A Sql divide-se em 5 grupamentos de funções cada um dedicado a uma finalidade bem especifíca, vamos a eles:
DDL - Data Definition Language (linguagem de definição de dados)
Aqui estamos falando da construção, manutenção e mesmo da exclusão de estruturas em um banco de dados relacional, sejam essas estruturas tabelas (CREATE TABLE, ALTER TABLE. DROP TABLE) sejam bancos inteiros (CREATE DATABASE, ETC). Uma função que de inicio pode não parecer tão aderente ao contexto acima é a opção TRUNCATE, que serve para excluir todas as linhas de uma tabela. Isso é algo que um DELETE sem especificação de WHERE vindo da DML também faz (e que você DEVE tomar muito cuidado para não fazer se não for sua vontade), mas com uma diferença importante que é o desempenho... e todos nós adoramos desempenho não é? Precisa excluir todas as linhas de uma tabela? Use o TRUNCATE, da um google, testa e me agradece depois, ok?
Sobre os comandos disponibilizados aqui (Create, Drop, Alter e Truncate), eles pertencem a um dos dois grupamentos que mais podem colocar em risco a integridade do seu banco, aqui no caso principalmente quanto a estrutura (mesmo havendo o TRUNCATE que vai literalmente desaparecer com todas as linhas de uma tabela), portanto muita atenção e cuidado ao usá-los!
DCL - Data Control Language (linguagem de controle de dados)
Ah controle... como é bom manter as coisas sobre controle e evitar que alguém que não deve, faça coisas que não queremos com as coisas que não deixamos!
É para isso que esse grupamento serve! Ele está relacionado a garantir que o acesso aos dados do banco seja executado somente por quem deve fazer isso!
GRANT (ou garantir)
É bem auto-explicativo: "GRANT" garante que um determinado usuário possa fazer uma determinada coisa...
Um exemplo:
GRANT SELECT ON carros TO Ayrton;
Aqui liberamos que Ayrton consultar todos os dados da tabela carros... É se você entendeu a referência, significa que talvez esteja ficando velho!
REVOKE (ou revogar)
Faz o contrário do GRANT, portanto revoga o acesso concedido anteriormente!
REVOKE SELECT ON carros FROM Ayrton;
Aqui não quero mais que Ayrton possa selecionar as linhas da tabela carros, então retirei esse acesso dele!
DML - Data Manipulation Language
Lembra do "Com grandes poderes, grandes responsabilidades"?
Quando falei sobre DDL, comentei que existiam dois grupamentos que ofereciam riscos a integridade do banco, se a DDL está relacionado a manutenção estrutural do banco, a DML está relacionada aos dados que "moram" nessas estruturas definidas pela DDL. Portanto é através dos comandos disponibilizados neste grupamento que inserimos, atualizamos e até deletamos dados de nossas tabelas.
TCL - Transaction Control Language (linguagem de controle de transação)
Pense que você tem uma lista de coisas que precisa fazer e que não pode esquecer de nenhuma dessas coisas da lista...
TCL é o equivalente para a linguagem SQL.
Aqui listaremos uma série de comandos a serem executados sempre em conjunto e... bom... o resto é código!
BEGIN TRANSACTION
Aqui informamos que começaremos a lista de tarefas que queremos executar
Depois incluimos os comandos conforme nosso contexto determina e encerramos com o comando COMMIT, é ele que determina que todas as ações solicitadas na nossa transação, devem ser efetivados no banco de dados.
O ROLLBACK faz exatamente o contrário! Ele desfaz as alterações de nossa transação. Mas por que eu desfaria algo? Bom pense que você pode usar isso para testar transações e ver se está obtendo os resultados desejados!
Exemplos com comentários:
-- transação com rollback
BEGIN TRANSACTION
DELETE FROM Livro_ISBN -- apaga todos registros da tabela, "sem querer"
SELECT * FROM Livro_ISBN -- mostra tabela vazia
ROLLBACK TRANSACTION; -- desfaz a transação
SELECT * FROM Livro_ISBN; -- mostra os dados normalmente
-- transação com commit
BEGIN TRANSACTION
DELETE FROM Livro_ISBN -- apaga todos registros da tabela
SELECT * FROM Livro_ISBN -- mostra tabela vazia
COMMIT TRANSACTION; -- confirma a transação
SELECT * FROM Livro_ISBN; -- agora mostra a tabela vazia em definitivo
DQL - Data Query Language (linguagem de consulta de dados)
Esse aqui já diz logo para o que veio: consultas!
Se você precisa de um banco de dados claramente vai precisar consultá-los, aqui então teremos o SELECT e é esse comando que vai buscar informações para nós no banco de dados!
Bom, por enquanto é isso! Sigam estudando e desliguem a Netflix! Forte abraço!
Contatos:
linkedin : www.linkedin.com/in/rjsilva-oficial
github: https://github.com/rjsilvaoficial