Banco de Dados Descomplicado: Principais Comandos em SQL.
Introdução
Vamos retomar a nossa série especial sobre temas de Bancos de Dados, área da Tecnologia da Informação que vem despencando nas provas das principais bancas. O nosso assunto de hoje amedronta muitos concurseiros, mas você vai “tirar de letra” conosco: comandos em SQL.
Neste artigo, você terá oportunidade de aprender e revisar a sintaxe dos principais comandos da linguagem SQL de uma forma bem dinâmica, com muitos exemplos exclusivos. A nossa proposta é deixar tudo claro como água, até para quem não é da área de TI. Assim, veja como as seções estão organizadas:
- Objetivo
- Classificação dos Comandos em SQL
- Comandos em SQL: DML
- Comandos em SQL: DQL
- Comandos em SQL: DDL
- Comandos em SQL: DCL
- Comandos em SQL: DTL
Este artigo é recomendado primordialmente a todos os concurseiros da área de TI e Fiscal. Contudo, fique atento também se você pretende fazer provas de outras áreas, tais como Controle e Policial, pois eventualmente as bancas estão exigindo SQL em seu conteúdo programático.
Para entender os comandos em SQL apresentados neste artigo, é recomendável que você tenha noções básicas de Bancos de Dados. Sendo assim, se você nunca viu o assunto, sugerimos que busque o material do Estratégia e retorne a esta publicação quando estiver preparado.
Tentamos esquematizar bem o conteúdo, a fim de deixar o artigo objetivo e a leitura facilitada. A nossa ideia é conseguir atingir o maior número de pessoas possível. Sem mais delongas, vamos lá então?
Tempo de leitura aproximada: 10 a 15 minutos
Objetivo
A Structured Query Language (SQL) é uma linguagem de consulta estruturada, utilizada em bancos de dados relacionais sob a forma de comandos. Apesar de ter consulta no nome, ela é utilizada para realizar diversas outras operações que envolvam dados, tais como inserções, remoções etc.
O padrão SQL é considerado universal para os principais bancos. Embora algumas versões de Sistemas Gerenciadores de Bancos de Dados (SGBDs) possam ter funções adicionais, essas diferenças não costumam ser tão exploradas nas provas. Em outras palavras, a cobrança ainda é focada no tradicional mesmo.
ATENÇÃO: O SQL SERVER (MSSQL) é o SGBD comercializado pela Microsoft. No mundo de TI, muitos profissionais costumam chamá-lo apenas de SQL. Entretanto, isso nada tem a ver com o SQL que vamos apresentar aqui. O MSSQL utiliza a linguagem SQL em seu ambiente, assim como outros bancos também a utilizam, mas são conceitos diferentes.
Classificação dos Comandos em SQL
Antes de mais nada, a linguagem SQL divide os comandos em alguns tipos:
Data Manipulation Language (DML): comandos em SQL de manipulação dos dados nas tabelas. Em outras palavras, não alteram as tabelas, mas podem impactar os dados armazenados nelas.
Data Query Language (DQL): comandos em SQL de consulta aos dados nas tabelas.
ATENÇÃO: A adoção do DQL para os comandos de consulta não é unânime. Alguns autores consideram esses comandos como DML, enquanto outros os consideram como DQL. Normalmente, a questão trará apenas um dos dois no gabarito. Contudo, se os dois estiverem entre as alternativas possíveis, recomendamos que marque o DQL, por ser mais específico.
Data Definition Language (DDL): comandos em SQL que atuam diretamente nas estruturas dos objetos de bancos. Só para exemplificar, os objetos podem ser tabelas, índices, sequências etc.
Data Control Language (DCL): comandos em SQL envolvendo permissões de acesso ao banco. Nesse sentido, estão atrelados diretamente com a segurança da informação.
Data Transaction Language (DTL): comandos em SQL relacionados com as transações no banco. São eles que confirmam ou desfazem as operações realizadas, em caso de sucesso ou erro.
Comandos em SQL: DML
Seguem os principais comandos DML. Para fins didáticos, vamos considerar os comandos de consulta como DQL e, por conseguinte, iremos apresentá-los na próxima seção:
Comando | Descrição | Sintaxe | Exemplo |
---|---|---|---|
INSERT | Inserção dos dados na tabela (padrão). | INSERT INTO tabela (coluna1, coluna2, …) VALUES (valor1, valor2, …) | INSERT INTO Colaborador (nome, cidade) VALUES (“Cristiane”, “Rio de Janeiro”) |
Inserção dos dados na tabela, omitindo o nome das colunas (considerando os dados inseridos na mesma ordem). | INSERT INTO tabela VALUES (valor1, valor2, …) | INSERT INTO Colaborador VALUES (1, “Cristiane”, 18/01/1985, “Rio de Janeiro”) | |
UPDATE | Atualização dos dados na tabela. Caso a condição seja omitida, todas as linhas da tabela serão atualizadas. | UPDATE tabela SET coluna1 = valor 1, coluna 2 = valor2 … [WHERE condição] | UPDATE Colaborador SET cidade = “Florianópolis” WHERE nome = “Cristiane” |
DELETE | Remoção dos dados da tabela. Caso a condição seja omitida, todas as linhas da tabela serão removidas. | DELETE FROM tabela [WHERE condição] | DELETE FROM Colaborador |
Comandos em SQL: DQL
Conforme explicado anteriormente, vamos considerar os comandos de consulta nesta seção. Você vai observar que a consulta é representada pelo SELECT:
Comando | Descrição | Sintaxe | Exemplo |
---|---|---|---|
SELECT | Consulta a todos os campos da tabela (padrão). Caso a condição seja omitida, todas as linhas da tabela serão consultadas. | SELECT * FROM tabela [WHERE condição] | SELECT * FROM Colaborador WHERE nome = “Cristiane” |
Consulta a alguns campos discriminados da tabela. Caso a condição seja omitida, todas as linhas da tabela serão consultadas. | SELECT campo1, campo2 FROM tabela [WHERE condição] | SELECT nome, cidade FROM Colaborador |
Funções de Agregação
Conforme o próprio nome diz, essas funções agregam, agrupam um conjunto de valores em um único resultado, após a realização de uma determinada operação por um comando em SQL. O agrupamento é dado pelo GROUP BY.
Em seguida, após agrupá-los, você poderá efetuar uma nova filtragem (opcional). Essa filtragem sobre o agrupamento realizado é feita com o HAVING. Só para ilustrar, vamos esquematizar para você entender melhor:
Dessa forma, as principais funções de agregação são:
Função de Agregação | Descrição |
---|---|
COUNT | Total de linhas no resultado. |
SUM | Somatório de valores da coluna. |
AVG | Média aritmética de valores da coluna. |
MAX | Maior valor da coluna. |
MIN | Menor valor da coluna. |
Em seguida, vamos ver o SQL esquematizado:
Comando | Descrição | Sintaxe | Exemplo |
---|---|---|---|
SELECT | Consulta aos dados da tabela, aplicando função de agregação. Se a função for aplicada, o agrupamento é obrigatório. | SELECT função (campo1), campo2 FROM tabela [WHERE condição] GROUP BY campo2 | SELECT COUNT(*), cidade FROM Colaborador GROUP BY cidade |
Consulta aos dados da tabela, aplicando função de agregação e filtragem dos dados agregados. Se a função for aplicada, o agrupamento é obrigatório. Entretanto, a filtragem do agrupamento é opcional. | SELECT função (campo1), campo2 FROM tabela [WHERE condição1] GROUP BY campo2 [HAVING condição2] | SELECT COUNT(*), cidade FROM Colaborador GROUP BY cidade HAVING COUNT(*) > 10 |
Ordenação
Por outro lado, caso você deseje, o resultado da consulta poderá vir ordenado. A ordenação poderá ser crescente ou decrescente. A fim de evitar confusão, lembre-se sempre de que ela é a última coisa a ser aplicada na consulta elaborada com um comando SQL, independente se ela tenha funções de agregação ou não:
Comando | Descrição | Sintaxe | Exemplo |
---|---|---|---|
SELECT | Consulta padrão aos dados da tabela, aplicando ordenação crescente (ASC) ou decrescente (DESC). | SELECT * FROM tabela [WHERE condição] ORDER BY campo1, campo2 [ASC | DESC] | SELECT * FROM Colaborador ORDER BY nome, cidade ASC |
Consulta aos dados da tabela, aplicando função de agregação e ordenação crescente (ASC) ou decrescente (DESC) combinadas. | SELECT função (campo1), campo2 FROM tabela [WHERE condição1] GROUP BY campo2 [HAVING condição2] ORDER BY função (campo1), campo2 [ASC | DESC] | SELECT COUNT(*), cidade FROM Colaborador GROUP BY cidade HAVING COUNT(*) > 10 ORDER BY cidade DESC |
Para não deixar este artigo muito extenso, optamos por explorar as junções em SQL separadamente. Sendo assim, fique ligado nas próximas publicações, pois virá mais conteúdo pela frente.
Comandos em SQL: DDL
Seguem os principais comandos DDL. Nesta seção, vamos considerar apenas tabelas nos exemplos, pois são os objetos mais cobrados em prova pelas bancas:
Comando | Descrição | Sintaxe | Exemplo |
---|---|---|---|
CREATE | Criação de uma tabela no banco, em sua versão padrão. | CREATE TABLE tabela (coluna1 tipo1, coluna 2 tipo2…) | CREATE TABLE Colaborador (id int, nome varchar, dataNascimento date, cidade varchar) |
Criação de uma nova tabela no banco, a partir de uma consulta a uma tabela já existente (antiga). A condição é opcional. | CREATE TABLE tabelaNova AS SELECT coluna1, coluna2… FROM tabelaAntiga [WHERE condição] | CREATE TABLE Colaborador AS SELECT * FROM Pessoa WHERE status = “aprovado” | |
ALTER | Alteração de uma tabela para adição, exclusão ou alteração de campos | ALTER TABLE tabela [ADD coluna tipo] | [DROP COLUMN coluna] | [RENAME COLUMN colunaAntiga TO colunaNova] | ALTER TABLE Colaborador ADD experiencia int |
TRUNCATE | Remoção dos dados de uma tabela, mantendo a sua estrutura. | TRUNCATE TABLE tabela | TRUNCATE TABLE Colaborador |
DROP | Remoção dos dados e da estrutura de uma tabela. | DROP TABLE tabela | DROP TABLE Colaborador |
ATENÇÃO: Observe que o TRUNCATE apaga apenas os dados de uma tabela, mantendo a sua estrutura. Contudo, ele não é considerado um comando DML, mas sim DDL. Cuidado para não confundir com o DELETE.
Comandos em SQL: DCL
Seguem os principais comandos DCL. Da mesma forma que na seção anterior, vamos considerar tabelas nos exemplos, pois são os objetos mais cobrados pelas bancas em provas:
Comando | Descrição | Sintaxe | Exemplo |
---|---|---|---|
GRANT | Concede privilégio a um determinado usuário ou papel, sobre uma tabela (padrão). | GRANT privilégio ON tabela TO [usuário | papel] | GRANT SELECT ON Colaborador TO estrategia |
Concede privilégio a um determinado usuário ou papel, sobre uma tabela, e permite que o beneficiado estenda o privilégio a outros. | GRANT privilégio ON tabela TO [usuário | papel] [WITH GRANT OPTION] | GRANT SELECT ON Colaborador TO estrategia WITH GRANT OPTION | |
REVOKE | Revoga privilégio concedido a um determinado usuário ou papel, sobre uma tabela. | REVOKE privilégio ON tabela FROM [usuário | papel] | REVOKE SELECT ON Colaborador FROM estrategia |
Comandos em SQL: DTL
Antes de mais nada, parabéns por ter chegado até aqui! SQL não é um assunto tão difícil, basta treinar. Se ainda está com dificuldade, tenha certeza de que ela é passageira. Sem dúvida, o sucesso virá com a persistência.
Por fim, para fechar o artigo, seguem os principais comandos DTL. Você vai reparar que a sintaxe é igual ao nome do comando, o que dispensa exemplos adicionais:
Comando / Sintaxe | Descrição |
---|---|
COMMIT | Confirma as operações realizadas na base de dados. |
ROLLBACK | Desfaz as operações realizadas na base de dados. |
Conclusão
Em suma, apresentamos neste artigo os comandos da linguagem SQL (considerada um dos tópicos mais cobrados de Bancos de Dados) de uma forma exemplificada. Dessa forma, se você compreendeu bem os conceitos, a recomendação é fazer muitas questões no Sistema de Questões do Estratégia Concursos para treinar.
Alunos aprovados realizam centenas ou até milhares de questões para atingir seu objetivo. Lembre-se do ditado: treino difícil, jogo fácil. O acesso ao Sistema de Questões é feito pelo link: https://concursos.estrategia.com/.
Ademais, além de treinar por questões, é fundamental que você faça a revisão periódica do conteúdo apresentado. Se restaram dúvidas ou quiser explorar mais o assunto, fique à vontade para buscar diretamente o material do Estratégia.
Por fim, lembramos que o Estratégia oferece diversos cursos em pdf, videoaulas e áudios para você ouvir onde quiser.
Bons estudos e até a próxima!
Cristiane Selem Ferreira Neves é Bacharel em Ciência da Computação e Mestre em Sistemas de Informação pela Universidade Federal do Rio de Janeiro (UFRJ), além de possuir a certificação Project Management Professional pelo Project Management Institute (PMI). Já foi aprovada nos seguintes concursos: ITERJ (2012), DATAPREV (2012), VALEC (2012), Rioprevidência (2012/2013), TJ-RJ (2022) e TCE-RJ (2022). Atualmente exerce o cargo efetivo de Especialista em Previdência Social – Ciência da Computação no Rioprevidência, além de ser colaboradora do Blog do Estratégia Concursos.