Voltar para a lista de artigos Artigos
11 minutos de leitura

Sintaxe SQL

No artigo de hoje, vamos dar-lhe um passeio pela sintaxe SQL central com foco no SELECIONE, INSERIR INTO, ATUALIZAÇÃOe DELETE declarações.

SQL é uma linguagem de programação projetada especificamente para se comunicar com bancos de dados. Ela permite obter os dados de um banco de dados ou alterar os dados dentro dele.

Como qualquer linguagem de programação, SQL tem uma sintaxe a qual você deve aderir. Em outras palavras, há regras a seguir com relação a seus comandos, se você quiser que seu código funcione.

A sintaxe SQL é melhor aprendida nas instruções SQL básicas. Você pode então construir sobre elas e escrever código mais complexo seguindo as mesmas regras. Se você é novo em SQL, recomendamos nossa SQL para Iniciantes curso interativo. Ele cobre a declaração SELECT e outras declarações e funções SQL muito comuns. Por exemplo, você aprenderá a filtrar dados usando a cláusula WHERE e operadores lógicos. Este curso irá ensiná-lo a combinar dados de múltiplas tabelas usando JOINs, agregar dados em grupos usando GROUP BY, e combinar resultados de consultas usando os operadores do conjunto UNION, UNION ALL, e INTERSECT.

Com mais de 120 exercícios interativos, SQL para Iniciantes é um bom começo para aprender a usar SQL. Você também pode usar nossa Folha de Consulta gratuita SQL para Iniciantes ao ler este artigo.

Já mencionamos os bancos de dados várias vezes. O que há de tão específico neles que eles precisam de uma linguagem de programação dedicada?

Como são organizados os bancos de dados?

Os bancos de dados consistem em uma ou mais tabelas. O objetivo das tabelas é armazenar dados de forma organizada. A palavra-chave aqui é "organizado", o que significa que as tabelas devem ter uma certa estrutura.

Cada tabela tem um nome para diferenciar as tabelas dentro do banco de dados - de preferência um nome que seja descritivo o suficiente para saber quais dados são armazenados naquela tabela.

Cada tabela tem colunas que também têm nomes. As colunas definem os dados na tabela, enquanto os nomes das colunas os descrevem. As tabelas também têm linhas, e é aqui que os dados são armazenados. Por exemplo, a tabela abaixo é denominada employees. Ela tem as seguintes colunas:

  • id - O número de identificação do funcionário.
  • first_name - O primeiro nome do funcionário.
  • last_name - O sobrenome do funcionário.
  • salary - O salário do funcionário.
  • department - O departamento do funcionário.

Os dados da tabela são mostrados abaixo:

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Accounting
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting

Como você pode ver, a tabela tem dez linhas, com cada linha contendo dados de um empregado.

Declarações SQL comuns e sua sintaxe

Para usar SQL para consulta de dados, você precisa de instruções SQL. São comandos emitidos para o banco de dados, que executa uma tarefa de acordo com o que está escrito no código.

As instruções SQL normalmente terminam com um ponto-e-vírgula. Esta não é uma parte obrigatória da sintaxe: a consulta funcionará da mesma forma sem ela. Entretanto, terminar a instrução SQL com um ponto-e-vírgula é uma boa prática. Ele aumenta a legibilidade do código, especialmente quando se escreve um monte de código. Nos exemplos a seguir, vamos nos ater a essa prática.

Agora vamos rever algumas das instruções SQL mais comuns.

Declaração SELECT

A declaração SELECT é utilizada para a recuperação de dados dos bancos de dados. Você pode selecionar todos os dados ou apenas as informações em colunas específicas. Você também pode filtrar dados, efetuar cálculos e agregações de dados, e fazer outras coisas dentro desta declaração.

Vejamos algumas das possibilidades do SELECT e como sua sintaxe funciona.

Selecione todos os dados da tabela

A sintaxe para selecionar todos os dados da tabela é:

SELECT *
FROM table;

Primeiro, você escreve SELECT. Depois disso, você especifica que deseja selecionar todos os dados. Quando dizemos 'todos os dados', queremos dizer 'todas as colunas da tabela' - um asterisco (*) na declaração SELECT faz exatamente isso.

Depois disso, você precisa dizer ao banco de dados de qual tabela você quer buscar os dados. Esta é a segunda linha do código, que começa com a cláusula FROM. Ela anuncia que a tabela será especificada imediatamente após esta palavra, então você simplesmente escreve o nome da tabela.

Eis como ela funciona:

SELECT *
FROM employees;

Este código se traduz como "selecione todas as colunas da tabela employees. E faz exatamente isso!

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Accounting
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting

Selecione Colunas Específicas da Tabela

A única diferença em relação à sintaxe acima é que você lista colunas específicas em vez de escrever um asterisco:

SELECT column1,
	 column2
FROM table;

Quando você lista as colunas, é importante separar as colunas com uma vírgula; caso contrário, o código não funcionará.

Também é importante notar que não há vírgula após a última coluna.

Embora não seja necessário escrever cada coluna da tabela em uma nova linha, é uma boa prática. Aconselhamos que você a siga. Isso ajuda na legibilidade do código à medida que as declarações se tornam mais complexas. Ter cada coluna em uma linha separada facilita seguir quais colunas você selecionou e se cometeu um erro de sintaxe - por exemplo, perceber que você perdeu uma vírgula entre os nomes das colunas é mais fácil.

Vamos usar esta sintaxe em nossa tabela de exemplo:

SELECT first_name,
	 last_name
FROM employees;

Esta consulta seleciona as colunas first_name e last_name da tabela employees.

first_namelast_name
NancyChapman
SteveMason
KateWilliams
FrankHasbeen
HillaryAdailton
DanielJackson
SusanDeutsch
DereckVans
SamNelson
MariaLopez

Filtrar dados usando WHERE

A declaração SELECT permite que você utilize outras cláusulas nela contidas, como WHERE.

SELECT …
FROM table
WHERE …;

Esta é a mesma declaração SELECT como antes. A única diferença é que você escreve a cláusula WHERE após especificar a tabela na cláusula FROM.

A cláusula WHERE permite que você filtre os dados devolvidos definindo uma ou mais condições que devem ser satisfeitas.

Por exemplo:

SELECT first_name,
	 last_name,
	 salary
FROM employees
WHERE salary > 3000;

Esta consulta seleciona o primeiro e último nome dos funcionários e seu salário. Estas são todas as colunas da tabela employees. Entretanto, quero mostrar apenas os funcionários que têm um salário acima de 3.000. Para fazer isso, escrevo primeiro a cláusula WHERE. Depois vem a condição: a coluna salary tem que ser superior a 3.000.

Aqui estão os dados que a consulta retorna:

first_namelast_namesalary
FrankHasbeen5,711.49
HillaryAdailton3,066.52
DanielJackson3,066.52
SusanDeutsch5,039.13
DereckVans4,434.27

Há cinco funcionários com um salário superior a 3.000 e todos eles estão listados acima.

Esta é apenas uma das muitas maneiras de usar WHERE. Para saber mais, consulte este guia para escrever a cláusula WHERE.

Linhas de Grupo com o GROUP BY

Se você usar a cláusula GROUP BY na declaração SELECT, você pode agrupar as linhas em grupos.

SELECT …
FROM table
GROUP BY …; 

A sintaxe mostra uma declaração padrão SELECT. A cláusula FROM é seguida pela cláusula GROUP BY, onde você lista as colunas pelas quais deseja que os dados sejam agrupados. As linhas são agrupadas pelos dados em uma coluna ou colunas específicas; as linhas com o mesmo valor de coluna estarão no mesmo grupo.

Um dos usos práticos do GROUP BY é contar o número de funcionários em cada departamento. Para isso, é necessário selecionar a coluna department e usar a função agregada COUNT() para contar o número de funcionários. Quando você usa GROUP BY, você pode agrupar o resultado pelo departamento. E aí você o tem: o número de funcionários por departamento.

Para exemplos sobre como o GROUP BY funciona, leia GROUP BY em SQL Explained ou 5 GROUP BY exemplos.

Filtrar dados usando HAVING

A cláusula HAVING é mais freqüentemente utilizada com a cláusula GROUP BY. Ela tem a mesma finalidade que WHERE, exceto que WHERE filtra dados antes da agregação, enquanto que HAVING filtra registros agregados. É por isso que você sempre tem que escrever HAVING após GROUP BY:

SELECT …
FROM table
GROUP BY …
HAVING …;

As condições em HAVING são escritas da mesma forma que na cláusula WHERE. Como filtra os dados após a agregação, as funções agregadas são permitidas em HAVING.

Como você usa isso na vida real? Um exemplo comum é calcular o salário médio por departamento, e depois usar HAVING para mostrar somente os departamentos com um salário médio acima de um certo valor.

Para exemplos detalhados de como esta cláusula funciona, veja A Cláusula de HAVING SQL Explicada.

Ordenar Resultados de Consulta com ORDEM POR

Uma das cláusulas comumente usadas na declaração SELECT é ORDER BY. É usada para classificar os resultados da consulta em ordem ascendente ou descendente. Dependendo do tipo de dados, isto pode significar classificar os dados do valor mais alto para o mais baixo, da data mais antiga ou mais recente, ou em ordem alfabética.

A cláusula ORDER BY permite ordenar os resultados por uma ou mais colunas.

Aqui está a sintaxe:

SELECT …
FROM table
…
ORDER BY …;

Um uso simples e prático do ORDER BY é ordenar os funcionários de acordo com seu salário, do mais alto para o mais baixo.

Você pode encontrar alguns exemplos detalhados desta cláusula em Como Ordenar Registros com a Cláusula ORDER BY.

INSERIR INTO Declaração

Este comando é usado para inserir dados no banco de dados. Aqui está a sintaxe:

INSERT INTO table (column1, column2, …)
VALUES (value1, value2, …);

Depois de INSERT INTO, você tem que escrever o nome da tabela na qual você quer que os dados sejam inseridos. Depois, entre parênteses, você escreve as colunas que deseja alterar. Como em SELECT, as colunas são separadas por vírgula.

Depois disso, há o comando VALUES. Nos parênteses, você escreve os valores que deseja inserir na tabela. As vírgulas também separam estes valores. Dê uma olhada neste exemplo:

INSERT INTO employees (id, first_name, last_name)
VALUES (11, 'Obi-Wan', 'Kenobi');

Esta consulta insere os dados na tabela employees. Ele muda as colunas id, first_name, e last_name. A nova linha inserida na tabela será para o funcionário Obi-Wan Kenobi, cujo ID é 11.

Se você selecionou todas as colunas desta tabela (você sabe como fazê-lo!), aqui está o que você obteria:

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Accounting
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting
11Obi-WanKenobiNULLNULL

Como eu não defini os valores do salário e do departamento para o novo funcionário, eles estão vazios. O banco de dados usa NULL para marcar os valores vazios.

Declaração UPDATE

UPDATE é usado para modificar os dados na tabela. Este comando é normalmente executado com a cláusula WHERE. Se você não fizesse isso, todos os dados da tabela seriam modificados.

A sintaxe é parecida com esta:

UPDATE table
SET column1 = value1, column2 = value2, …
WHERE …;

Depois de escrever UPDATE, você escreve o nome da tabela que está sendo atualizada. Em seguida, vem o comando SET. Ele define as colunas para um valor específico. Em outras palavras, você diz qual coluna você quer ser atualizada e com quais valores. Você usa um sinal de igual para definir os valores, com cada coluna e seu novo valor separado por uma vírgula. WHERE está aqui para limitar as atualizações apenas aos valores que satisfazem uma condição específica.

Aqui está um exemplo de atualização dos valores na tabela employees:

UPDATE employees
SET department = 'Sales'
WHERE id = 2;

Nesta consulta, eu especifico que quero atualizar a tabela employees. Depois quero ter o valor 'Vendas' na coluna department para o funcionário cujo ID é 2. Este funcionário passou da Contabilidade para Vendas; por isso esta atualização é necessária.

Aqui está a tabela atualizada:

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Sales
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting
11Obi-WanKenobiNULLNULL

O resultado mostra que Steve Mason está agora em Vendas.

Declaração DELETE

Como você provavelmente adivinhou, este comando é usado para apagar dados da tabela.

Mais uma vez, a cláusula WHERE aqui desempenha um papel importante. Ela permite excluir apenas certos dados, ou seja, que satisfazem a condição da cláusula WHERE. Se você omitir WHERE, a declaração DELETE apaga todos os dados da tabela.

Esta é a sintaxe:

DELETE
FROM table
WHERE …;

Depois de DELETE, vem a cláusula FROM. Semelhante à declaração SELECT, ela contém o nome da tabela da qual você deseja excluir dados. Depois disso, certifique-se de escrever a cláusula WHERE se você não quiser excluir todos os dados da tabela.

Aqui está um exemplo prático:

DELETE 
FROM employees
WHERE id = 11;

Esta consulta apaga todas as linhas onde a identificação é 11. Aqui está o resultado:

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Sales
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting

Apaguei o novo funcionário Obi-Wan Kenobi da tabela.

Da sintaxe SQL para as instruções SQL

Para fazer uma declaração em SQL - como em qualquer linguagem natural - é preciso conhecer sua sintaxe. Isto abre muitas portas de outra forma fechadas.

Como você viu, saber apenas o básico permite selecionar dados da tabela, filtrá-los e agrupá-los. Esta é a declaração SELECT, e conhecer este comando básico é apenas um começo. Existem algumas outras instruções SQL comuns que permitem inserir dados na tabela, modificá-los ou apagá-los.

Qualquer idioma é aprendido mais rapidamente se você o usar todos os dias. Para SQL, isto se traduz em escrever código regularmente. Encontrar oportunidades para 'falar' SQL pode ser difícil, mas não se preocupe. Há muitas delas no SQL para Iniciantes curso. Experimente. Antes que você perceba, você será fluente em SQL!