SQL: comandos básicos
Tags: sql, database, datascience
Published: 2020-09-16 11:04:00

Nesse artigo veremos os comandos básicos da linguagem SQL mais utilizados no dia a dia de uma cientista de dados e como utilizá-los. 

Se você quer entender como funciona um banco de dados relacional, te convido a ler [este outro artigo](https://dev.to/luizabizoni/banco-de-dados-relacional-introducao-24an), no qual expliquei sobre a terminologia utilizada, o conceito ACID, os grupos de comandos da linguagem SQL, as restrições de integridade e as três formas normais.

<center><img src="https://dev-to-uploads.s3.amazonaws.com/i/vxyfuugyh3iuqcpnvj2j.png" alt ="Principais comandos SQL"></center>

## SELECT
A instrução "SELECT" é utilizada para fazer consultas no banco de dados. Seu resultado é uma cópia do banco de dados com as especificações indicadas. Não há alteração dos dados no banco.

A maior parte dos comandos SQL são instruções "SELECT" e normalmente é a primeira palavra da instrução SQL.

Ao executar a instrução, o SGBD irá procurar a tabela ou tabelas especificadas, selecionar as colunas escolhidas e as linhas que satisfazem os critérios especificados, classificando ou agrupando estas na ordem indicada.

A sintaxe mais básica da instrução "SELECT" é escrita da seguinte forma:

```
SELECT colunas FROM tabela
```

Caso você queira selecionar todas as colunas da tabela indicada, basta utilizar "*" no lugar de "colunas", deste jeito:

```
SELECT * FROM tabela
```

### Exemplos
Imagine que temos uma tabela chamada "Funcionários" que possuí diversas informações sobre os funcionários de uma empresa.

Precisamos do nome e sobrenome de todos os funcionários da empresa em ordem alfabética. Para isso selecionaremos todas as linhas das colunas "Nome" e "Sobrenome" da tabela "Funcionários" e utilizaremos a cláusula "ORDER BY" para ordenar a consulta.

A sintaxe será:

<center><img src="https://dev-to-uploads.s3.amazonaws.com/i/r3he8pk4vyzjgr2ih3p8.png" alt ="Select e Order By"></center>

A empresa decide que o reajuste salarial para o próximo ano será de 5% para todos os funcionários e precisamos atualizar a consulta acima incluindo o salário atual e o salário com reajuste para todos os funcionários.

Para isso selecionaremos todas as linhas das colunas "Nome" e "Sobrenome" da tabela "Funcionários", como fizemos anteriormente, e também as da coluna "Salário", que renomearemos como "Salário Atual". Para calcular o valor do salário com reajuste multiplicaremos os valores da coluna "Salário" por 1.05 e este campo será renomeado como "Salário Reajustado".

A sintaxe, portanto, passará a ser:

<center><img src="https://dev-to-uploads.s3.amazonaws.com/i/yvkxhj6p77102hl6hb65.png" alt ="Select e cálculo"></center>

Por último, iremos fazer uma nova consulta na qual retorne os nomes dos cargos do departamento de tecnologia da empresa que tenham sido atribuídos a pelo menos 10 funcionários e a quantidade de funcionários com estes cargos.

Neste caso, selecionaremos a coluna "Cargo" e faremos a contagem de funcionários com aquele cargo utilizando a função "count" com o parâmetro "Cargo". Utilizamos a cláusula "where" para filtrar apenas os funcionários do departamento de tecnologia e "having" para filtrar apenas os cargos que tenham sido atribuídos a pelo menos 10 funcionários e agrupamos pelo nome do cargo utilizando a cláusula "group by" assim:

<center><img src="https://dev-to-uploads.s3.amazonaws.com/i/dwqsysmcaclpwegap4tv.png" alt ="Select, count, where, group by e having"></center>

## INSERT
A instrução "INSERT" é o comando para inclusão no banco de dados. Ele é utilizado para adicionar um ou vários registros a uma tabela.

A sintaxe mais básica da instrução "INSERT" é escrita da seguinte forma:
```
INSERT INTO tabela (coluna1, coluna2, coluna3)
VALUES (valor1, valor2, valor3)

--OU

INSERT INTO tabela VALUES (valor1, valor2, valor3)
```
### Exemplos
Vamos inserir na tabela "Funcionários" a Maria Sousa, que terá o código identificador "741" e seu salário é R$2500,00.

Na primeira sintaxe informamos o nome das colunas que receberão os valores e os valores que serão inseridos na tabela. É importante lembrar que os valores devem estar na mesma ordem das suas respectivas colunas.

Na segunda forma não declaramos as colunas. Atente-se para este caso, pois é necessário informar valores para todas as colunas da tabela para que o comando funcione.

A sintaxe será:

<center><img src="https://dev-to-uploads.s3.amazonaws.com/i/abtykkdqsbo9tjpa7uku.png" alt ="Insert"></center>

## UPDATE
A instrução "UPDATE" é o comando utilizado para atualização de registros no banco de dados.

A sintaxe mais básica da instrução "UPDATE" é escrita da seguinte forma:
```
UPDATE tabela
SET coluna = "novo_valor"
WHERE condição
```
### Exemplos
Vamos atualizar na tabela "Funcionários" o sobrenome da Maria para "Souza" e seu salário para R$3500,00.

Informamos o nome da tabela que receberá as alterações, as colunas e seus respectivos valores a serem alterados na tabela e a cláusula que impõe a condição de execução do comando é que o "IDFuncionario" seja igual a "741", que é o código identificador da Maria.

A sintaxe será:

<center><img src="https://dev-to-uploads.s3.amazonaws.com/i/vqahno4ayvxvx5e6xmnw.png" alt ="Update"></center>

## DELETE
A instrução "DELETE" é o comando utilizado para apagar registros no banco de dados.

A sintaxe mais básica da instrução "DELETE" é escrita da seguinte forma:
```
DELETE FROM tabela
WHERE condição
```
### Exemplo
Vamos excluir da tabela "Funcionários" aquele que possuí o código identificador igual a "3084".

Para isso informamos que a tabela de onde desejamos deletar o registro é a "Funcionários" e a cláusula que impõe a condição de execução do comando é que o "IDFuncionario" seja igual a "3084".

A sintaxe será:

<center><img src="https://dev-to-uploads.s3.amazonaws.com/i/bz9x03jfyuia04fs9vxd.png" alt ="Delete"></center>

_______________
**REFERÊNCIA**:
ELMASRI, Ramez e NAVATHE, Shamkant B. **Sistemas de Banco de Dados**. Pearson Addison Wesley. 6a Edição, 2011.

*Este post é um resumo do que aprendi na Unidade 1 da disciplina "Banco de Dados Relacionais e não Relacionais". Esta é ministrada pelo Prof. Henrique Batista da Silva no curso de especialização em Ciência de Dados e Big Data da PUC Minas Virtual.*