Você está na página 1de 16

#interna

SQL: Comandos básicos


Provavelmente, você já ouviu falar bastante por aí em SQL. O SQL é muito importante
na vida dos desenvolvedores e DBAs (database administrador/administradores de
banco de dados). Se você pretende seguir na área de tecnologia, é de extrema
importância que aprenda o quanto antes. Neste artigo, vamos abordar o que é e quais
os comandos básicos.

O que é SQL?

A linguagem SQL, em português “Linguagem de Consulta Estruturada", é usada para


executar comandos em bancos de dados relacionais, ou seja, bancos de dados baseados
em tabelas.

Se você pensa que o SQL não é utilizado na rotina de um(a) desenvolvedor(a), está bem
enganado(a). Como pensa que é feito aqueles relatórios enormes dentro do seu sistema
ERP(enterprise resource planning/sistema de gestão integrado)? Sim, é com SQL.

Por fim, ela é dividida em alguns subgrupos, como:

• DML – Data Manipulation Language: comandos que alteram informações nas


tabelas, seja para inserir ou excluir dados (ex: select, delete e insert);
• DDL – Data Definition Language: são comandos que modificam o banco de
dados (ex: drop – apaga algum objeto e create – permite a criação de novos
objetos);
• DCL – Data Control Language: é o grupo responsável pelas permissões,
restrições ou bloqueios (ex: grant – permite o acesso e/ou modificações no
banco de dados);
• DTL – Linguagem de Transição de Dados: é responsável por salvar as alterações
feitas pelos usuários (ex: commit – autoriza que as alterações sejam salvas).
#interna

Porém, vamos aprofundar no **DML que são os comandos mais básicos do SQL.

SELECT

Imagine que você tem uma tabela de banco de dados para guardar alguns dados dos seus
clientes:

id nome telefone genero

1 Roberta 9999-9999 F

2 Denis 8888-8888 M

3 Valéria 7777-7777 F

4 Isabel 5555-555 F

Então, para consultar todos os dados dos seus clientes, a query que você deve rodar é
uma que vai selecionar (SELECT) todos os campos (*) da tabela (FROM) clientes:

SELECT * FROM clientes

Provavelmente, você já ouviu falar bastante por aí em SQL. O SQL é muito importante
na vida dos desenvolvedores e DBAs (database administrador/administradores de
banco de dados). Se você pretende seguir na área de tecnologia, é de extrema
importância que aprenda o quanto antes. Neste artigo, vamos abordar o que é e quais
os comandos básicos.
#interna

O que é SQL?

A linguagem SQL, em português “Linguagem de Consulta Estruturada", é usada para


executar comandos em bancos de dados relacionais, ou seja, bancos de dados baseados
em tabelas.

Se você pensa que o SQL não é utilizado na rotina de um(a) desenvolvedor(a), está bem
enganado(a). Como pensa que é feito aqueles relatórios enormes dentro do seu sistema
ERP(enterprise resource planning/sistema de gestão integrado)? Sim, é com SQL.

Por fim, ela é dividida em alguns subgrupos, como:

• DML – Data Manipulation Language: comandos que alteram informações nas


tabelas, seja para inserir ou excluir dados (ex: select, delete e insert);
• DDL – Data Definition Language: são comandos que modificam o banco de
dados (ex: drop – apaga algum objeto e create – permite a criação de novos
objetos);
• DCL – Data Control Language: é o grupo responsável pelas permissões,
restrições ou bloqueios (ex: grant – permite o acesso e/ou modificações no
banco de dados);
• DTL – Linguagem de Transição de Dados: é responsável por salvar as alterações
feitas pelos usuários (ex: commit – autoriza que as alterações sejam salvas).

Porém, vamos aprofundar no **DML que são os comandos mais básicos do SQL.

SELECT

Imagine que você tem uma tabela de banco de dados para guardar alguns dados dos seus
clientes:

id nome telefone genero

1 Roberta 9999-9999 F

2 Denis 8888-8888 M

3 Valéria 7777-7777 F

4 Isabel 5555-555 F

Então, para consultar todos os dados dos seus clientes, a query que você deve rodar é
uma que vai selecionar (SELECT) todos os campos (*) da tabela (FROM) clientes:

SELECT * FROM clientes

O resultado será o seguinte:


#interna

id nome telefone genero

1 Roberta 9999-9999 F

2 Denis 8888-8888 M

3 Valéria 7777-7777 F

4 Isabel 5555-5555 F

Não mudou muita coisa, certo? Então vamos buscar os dados de todos clientes do
gênero feminino:

A query que você deve rodar é uma que vai selecionar (SELECT) todos os campos (*) da
tabela (FROM) clientes onde (WHERE) o gênero seja igual a F:

SELECT * FROM clientes WHERE genero = ‘F’

O resultado será o seguinte:

id nome telefone genero

1 Roberta 9999-9999 F

3 Valéria 7777-7777 F

4 Isabel 5555-5555 F

Simples, não é?

INSERT

O INSERT insere novas linhas, novos dados dentro da tabela.

Em nosso caso vamos inserir novos dados na tabela de clientes, passando os argumentos
no insert:

INSERT INTO clientes (id, nome, telefone, genero) VALUES (5, ‘Miguel’,
4444-4444, ‘M’)

Esse comando está inserindo um novo registro em nossa tabela clientes, o cadastro do
Miguel.

E então, temos:

id nome telefone genero

1 Roberta 9999-9999 F
#interna

id nome telefone genero

2 Denis 8888-8888 M

3 Valéria 7777-7777 F

4 Isabel 5555-5555 F

5 Miguel 4444-4444 M

UPDATE

O UPDATE atualiza as linhas dentro da tabela, mas não podemos esquecer o WHERE onde
inserimos uma condição, ou seja, uma regra que impõe a execução do comando. Se a
condição não for informada a tabela inteira será atualizada.

A Isabel ligou em nossa loja para informar que trocou o seu número de telefone, então
temos que atualizar dentro do nosso banco de dados:

UPDATE clientes SET telefone = 2222-2222 WHERE id = 4

Aqui, o que o comando está fazendo? Está atualizando a linha 4 da tabela clientes, onde
está o cadastro da Isabel.

A regra a ser utilizada é o id da Isabel, onde vai identificar a linha a ser atualizada.

E então, temos a tabela atualizada:

id nome telefone genero

1 Roberta 9999-9999 F

2 Denis 8888-8888 M

3 Valéria 7777-7777 F

4 Isabel 2222-2222 F

5 Miguel 4444-4444 M

DELETE

O DELETE apaga as linhas, os dados dentro da tabela. Assim como o UPDATE, não
podemos esquecer do WHERE. Caso contrário, toda tabela será apagada.

Miguel deixou de ser nosso cliente, então precisamos apagar os dados dele:

DELETE FROM clientes WHERE id = 5

Neste caso, o comando exclui a linha 5 da tabela clientes, que é o cadastro do Miguel.
#interna

E então, temos a tabela atualizada:

id nome telefone genero

1 Roberta 9999-9999 F

2 Denis 8888-8888 M

3 Valéria 7777-7777 F

4 Isabel 2222-2222 F
#interna

SQL: consultas com SELECT


O banco de dados não é utilizado apenas para armazenar dados, em alguns momentos é
necessário realizar consultas ou até comunicar com outras ferramentas e sistemas para
fazer relatórios, mas como tudo isso é feito? Com a cláusula SELECT, a principal
função do SELECT é consultar/buscar os dados de uma tabela em um banco de dados.

Vamos supor que precisamos desenvolver um relatório para algum cliente/sistema ou


até mesmo consultar uma informação que mostra inconsistência no sistema, mas como
fazemos isso? Usando o SELECT para buscar esses dados.

SELECT SIMPLES

A sintaxe básica do comando é:

SELECT campos FROM nome_da_tabela

Bom, nós temos em nosso banco de dados a tabela de clientes:

id nome telefone genero data_cadastro

1 Roberta de Jesus 9999-9999 F 10-12-2019

2 Denis Oliveira 8888-8888 M 05-11-2019

3 Valeria Custodio 7777-7777 F 20-10-2019

4 Isabel Borges 5555-555 F 01-10-2019

Então, para consultar podemos fazer de duas formas:


#interna

• Trazendo todos os campos:

SELECT * FROM clientes

Neste comando, todos clientes são retornados.

Ou

• Trazendo alguns campos:

SELECT nome, telefone FROM clientes

Neste comando, nome e telefone de todos os clientes são retornados.

O asterisco representa todos os campos. É bem prático, mas não muito utilizado. Ao
usar o asterisco para trazer todos os campos, ele obriga o servidor do banco de dados a
procurar os campos antes de trazer os dados e assim, causando uma demora no retorno
da consulta.

SELECT COM WHERE

O WHERE é utilizado no SQL para passar condições/regras de filtragem.

Vamos supor que queremos ver todos clientes do gênero feminino em nossa tabela,
então, utilizamos o WHERE para realizar essa filtragem:

SELECT * FROM clientes WHERE genero = “F”

Neste comando, todos clientes do gênero feminino são retornados.

Também podemos usar operadores lógicos para usar mais de uma condição dentro do
WHERE.

SELECT * FROM clientes WHERE genero = “F” AND nome LIKE “R%”

Neste comando, todos os clientes do gênero feminino com nomes que iniciam com R
serão retornados.

Além do operador de igual (=) temos o IN e o BETWEEN.

• IN

O IN é utilizado para fazer a filtragem a partir de uma lista de buscas.

SELECT * FROM clientes WHERE genero IN id (1, 2, 3)

Neste comando, todos os clientes com id 1, 2 e 3 serão retornados.

• BETWEEN
#interna

O BETWEEN é utilizado para fazer buscas entre intervalos. É mais utilizado para filtrar
intervalos de datas.

SELECT * FROM clientes WHERE data_cadastro BETWEEN ‘10-12-2019’ AND


‘20-10-2019’

Neste comando, todos os clientes que foram cadastrados entre essas datas serão
retornados.

LIKE

O LIKE é utilizado para buscar strings(texto) dentro de uma coluna com valores
textuais. Podemos buscar as linhas que o nome inicia com uma determinada palavra,
como vimos acima ou contém um certo texto.

• string: são retornadas todas as linhas que tem na coluna buscada exatamente a
"string" informada no filtro. É a mesma coisa de usar o operador de igual.
• %string%: são retornadas as linhas que tem na coluna buscada a "string"
informada. Podemos buscar os nomes que tem "Jesus", ou que tem alguma
sílaba ou letra específica. A linha com o nome "Roberta de Jesus", contém o
termo "da", então atenderia ao filtro '%de%'.
• %string: são retornadas as linhas que a coluna filtrada termina com a "string"
informada. O % indica que pode ter qualquer valor no começo do campo, desde
que ele termine com a “string". A linha com nome "Roberta de Jesus" atenderia
ao filtro '%Jesus'.
• string%: são retornadas as linhas que o coluna filtrada começa com a “string"
informada. O % indica que depois da “string” pode ter qualquer valor. A linha
com nome "Roberta de Jesus", atenderia ao filtro 'Roberta%'.

ORDER BY

O ORDER BY é utilizado para ordenação. Podemos ordenar em ordem crescente (ASC)


ou em ordem decrescente (DESC).

SELECT * FROM clientes ORDER BY nome ASC

Neste comando, serão retornados todos os clientes ordenados pelo nome em ordem
crescente.

Então pessoal, vimos neste artigo como fazer consultas simples apenas com o SELECT,
como incrementar essas consultas criando filtros com WHERE e ordenar os dados com
o ORDER BY.
#interna

SQL: cláusulas UPDATE e DELETE


Após a finalização de um projeto de modelagem de dados e a sua implementação,
inicia-se o desenvolvimento para a manutenção do banco de dados. Essa manutenção se
dá por meio do SGBD, que nos permite realizar vários processos nos bancos de dados,
como consultar, inserir, alterar e excluir dados das tabelas.

Para alterar e excluir dados de uma tabela, utilizamos duas cláusulas bem importantes
da linguagem SQL: a cláusula UPDATE que é responsável por alterar os dados
armazenados e a cláusula DELETE que é responsável por remover os dados.

Neste artigo, vamos conhecer a sintaxe básica de cada cláusula e entender quais os
riscos e os cuidados necessários ao executar as cláusulas UPDATE e DELETE.

Cláusula UPDATE

Utilizamos a cláusula UPDATE para realizar alterações nos dados armazenados em uma
tabela do banco de dados. A sintaxe básica do comando utilizado por todos os bancos de
dados relacionais é:

UPDATE nome_da_tabela
SET coluna = valor,
WHERE condição;

Na cláusula UPDATE, informamos o nome da tabela que queremos atualizar, utilizamos o


SET para indicar os campos da tabela que serão atualizados e no WHERE expressamos a
condição para a atualização, ou seja, especificamos quais registros devem ser
atualizados na tabela.
#interna

Cláusula DELETE

Utilizamos a cláusula DELETE para realizar a exclusão de dados de uma ou mais tabelas
de um banco de dados. A sintaxe básica do comando utilizado por todos os bancos de
dados relacionais é:

DELETE
FROM nome_da_tabela,
WHERE condição;

Onde na cláusula FROM, informamos o nome da tabela que queremos excluir os dados, e
no WHERE informamos a condição que especifica quais registros devem ser excluídos da
tabela.

Riscos e Cuidados

Ao executar os comandos para realizar a atualização ou exclusão de dados de uma


tabela de um banco de dados, precisamos tomar alguns cuidados.

Nesse sentido, um ponto de atenção é sempre informar uma condição ao realizar uma
atualização ou exclusão de dados de uma tabela. Quando não informamos essa
condição, corremos o risco de que todos os dados da tabela sejam atualizados, ou até
mesmo excluídos, ocorrendo assim a perda de dados importantes.

Cláusula WHERE

Para que essa perda de dados em massa não ocorra, utilizamos a cláusula ´WHERE´.
Especificamos nesta cláusula os critérios que os dados armazenados em uma tabela
devem cumprir para que os registros que contêm esses parâmetros sejam incluídos nos
resultados da consulta.
#interna

Para aplicarmos na prática a utilização das cláusulas DELETE e 'UPDATE'. Vamos


observar o seguinte exemplo:

Em um banco de dados existe a tabela de clientes e a tabela de vendedores, com os


seguintes campos e registros:

ID CPF NOME ENDEREÇO BAIRRO CIDADE ESTADO CEP

01 1471156710 Érica Carvalho R. Iriquitia Jardins São Paulo SP 80012212

Fernando R. Dois de Agua Rio de


02 19290992743 RJ 22000000
Cavalcante Fevereiro Santa Janeiro

Rua Conde de Rio de


03 2600586709 César Teixeira Tijuca RJ 22020001
Bonfim Janeiro

Rio de
04 492472718 Eduardo Jorge R. Volta Grande Tijuca RJ 22012002
Janeiro

Rio de
05 50534475787 Abel Silva Rua Humaitá Humaitá RJ 22000212
Janeiro

R. Benício de
06 5576228758 Petra Oliveira Lapa São Paulo SP 88192029
Abreu

R. Manuel de Santo
07 5840119709 Gabriel Araujo São Paulo SP 80010221
Oliveira Amaro

MATRÍCULA NOME BAIRRO COMISSÃO DATA ADMISSÃO

235 Márcio Almeida Tijuca 0.08 2014-08-15

236 Cláudia Morais Jardins 0.08 2013-09-17

237 Roberta Martins Copacabana 0.11 2017-03-18

238 Péricles Alves Santo Amaro 0.11 2016-08-21

Estas duas tabelas, serão utilizadas em todos os exemplos apresentados durante o artigo.

UPDATE Com WHERE

Tendo então a tabela de clientes acima como nosso exemplo, precisamos atualizar as
informações da cliente que possui o CPF `147115670´ e está na primeira linha da nossa
tabela, para isso vamos utilizar a seguinte consulta:

UPDATE CLIENTES
SET nome = 'Érica Silvia'
WHERE CPF = '1471156710';
#interna

Ao executar este comando apenas a cliente que possui o CPF `147115670´, terá os seus
dados alterados:

ID CPF NOME ENDEREÇO BAIRRO CIDADE ESTADO CEP

01 1471156710 Érica Silva R. Iriquitia Jardins São Paulo SP 80012212

Fernando R. Dois de Agua Rio de


02 19290992743 RJ 22000000
Cavalcante Fevereiro Santa Janeiro

Rua Conde de Rio de


03 2600586709 César Teixeira Tijuca RJ 22020001
Bonfim Janeiro

Rio de
04 492472718 Eduardo Jorge R. Volta Grande Tijuca RJ 22012002
Janeiro

Rio de
05 50534475787 Abel Silva Rua Humaitá Humaitá RJ 22000212
Janeiro

R. Benício de
06 5576228758 Petra Oliveira Lapa São Paulo SP 88192029
Abreu

R. Manuel de Santo
07 5840119709 Gabriel Araujo São Paulo SP 80010221
Oliveira Amaro

Para atualizar mais de um campo ao mesmo tempo, podemos utilizar a seguinte


consulta:

UPDATE CLIENTES
SET NOME = 'Fernando Sousa',CEP = '80012212'
WHERE CPF = '19290992743';

Assim, apenas as informações de nome e CEP do segundo cliente que possui o CPF
19290992743 será atualizado:

ID CPF NOME ENDEREÇO BAIRRO CIDADE ESTADO CEP

01 1471156710 Érica Silva R. Iriquitia Jardins São Paulo SP 80012212

Fernando R. Dois de Agua Rio de


02 19290992743 RJ 80012212
Sousa Fevereiro Santa Janeiro

César Rua Conde de Rio de


03 2600586709 Tijuca RJ 22020001
Teixeira Bonfim Janeiro

Eduardo Rio de
04 492472718 R. Volta Grande Tijuca RJ 22012002
Jorge Janeiro
#interna

ID CPF NOME ENDEREÇO BAIRRO CIDADE ESTADO CEP

Rio de
05 50534475787 Abel Silva Rua Humaitá Humaitá RJ 22000212
Janeiro

Petra R. Benício de
06 5576228758 Lapa São Paulo SP 88192029
Oliveira Abreu

Gabriel R. Manuel de Santo


07 5840119709 São Paulo SP 80010221
Araujo Oliveira Amaro

UPDATE sem WHERE

Precisamos agora alterar os dados de um outro registro armazenado na nossa tabela de


clientes:

UPDATE Clientes
SET ESTADO = 'SP';

Como a cláusula WHERE não foi utilizada, informando o registro que deveria ser
atualizado, o valor do campoESTADO de todos clientes foram alterados:

ID CPF NOME ENDEREÇO BAIRRO CIDADE ESTADO CEP

01 1471156710 Érica Silva R. Iriquitia Jardins São Paulo SP 80012212

Fernando R. Dois de Agua Rio de


02 19290992743 SP 80012212
Sousa Fevereiro Santa Janeiro

César Rua Conde de Rio de


03 2600586709 Tijuca SP 22020001
Teixeira Bonfim Janeiro

Eduardo Rio de
04 492472718 R. Volta Grande Tijuca SP 22012002
Jorge Janeiro

Rio de
05 50534475787 Abel Silva Rua Humaitá Humaitá SP 22000212
Janeiro

Petra R. Benício de
06 5576228758 Lapa São Paulo SP 88192029
Oliveira Abreu

Gabriel R. Manuel de Santo


07 5840119709 São Paulo SP 80010221
Araujo Oliveira Amaro

DELETE Com WHERE

Um dos clientes, solicitou que as suas informações fossem removidas do banco de


dados. Para realizar esta exclusão, vamos utilizar a seguinte consulta:

DELETE
FROM Clientes
#interna

WHERE CPF = '5840119709';

Ao executar este comando apenas o cliente Gabriel Araujo que estava localizado na
ultima linha da tabela de clientes, foi excluído:

ID CPF NOME ENDEREÇO BAIRRO CIDADE ESTADO CEP

01 1471156710 Érica Silva R. Iriquitia Jardins São Paulo SP 80012212

Fernando R. Dois de Agua Rio de


02 19290992743 SP 80012212
Sousa Fevereiro Santa Janeiro

César Rua Conde de Rio de


03 2600586709 Tijuca SP 22020001
Teixeira Bonfim Janeiro

Eduardo Rio de
04 492472718 R. Volta Grande Tijuca SP 22012002
Jorge Janeiro

Rio de
05 50534475787 Abel Silva Rua Humaitá Humaitá SP 22000212
Janeiro

R. Benício de
06 5576228758 Petra Oliveira Lapa São Paulo SP 88192029
Abreu

DELETE sem WHERE

Pensando que se a cláusula WHERE não fosse utilizada ao executar um comando DELETE
para remover algum registro, teríamos como resultado a exclusão de todos os dados
armazenados na tabela, ou seja, perdendo os dados de todos os clientes:

DELETE
FROM Clientes;
CPF NOME ENDEREÇO BAIRRO CIDADE ESTADO CEP

Atualizar utilizando como condição outras tabelas

Podemos informar na cláusula WHERE como condição para realizar atualização ou


exclusão dos dados, outra consulta, que pode ser utilizada para buscar informações
armazenadas na própria tabela ou em outras tabelas:

Sendo assim, vamos analisar o exemplo abaixo:

UPDATE VENDEDORES
SET COMISSÃO = COMISSÃO + 0.03
WHERE COMISSÃO = (SELECT min(COMISSÃO) FROM VENDEDORES)

O SELECT passado na cláusula WHERE, retornará apenas o valor da menor comissão


armazenada na tabela. Dessa forma, apenas os vendedores que possuem o valor da
comissão igual ao valor retornado neste SELECT terão os seus dados alterados e o valor
da sua comissão aumentará:
#interna

MATRÍCULA NOME BAIRRO COMISSÃO DATA ADMISSÃO

235 Márcio Almeida Tijuca 0.11 2014-08-15

236 Cláudia Morais Jardins 0.11 2013-09-17

237 Roberta Martins Copacabana 0.11 2017-03-18

238 Péricles Alves Santo Amaro 0.11 2016-08-21

Chave primária

Uma outra forma de garantir que apenas os dados desejados sofram alterações é a
criação de uma chave primária na tabela.

A chave primária, ou Primary key (PK) é o dado que pode ser utilizado como um
identificador único de um registro em uma tabela no banco de dados.

Se definirmos que o campo CPF será a chave primária da tabela de clientes, estamos
definindo que este campo receberá apenas valores únicos. Ao utilizarmos este campo
como uma condição no momento de executar uma consulta com as cláusulas DELETE ou
UPDATE, garantimos que apenas o registro que possui aquele dado será alterado.

Conclusão

Como estudamos neste artigo, as cláusulas DELETE e UPDATE são muito importantes na
manipulação de um banco de dados, pois, através delas, conseguimos atualizar ou
excluir dados de uma tabela.

Também entendemos os riscos que corremos ao utilizar estas cláusulas e como podemos
evitar que, ao executar comandos de modo não recomendado, ocorram perdas de dados
em massa em um banco de dados.

Portanto, podemos utilizar estas cláusulas em diversas consultas, assim como utilizar
outros recursos disponibilizados pela linguagem SQL para garantir que não haja perda
de dados.

Você também pode gostar