Não foi possível atualizar as configurações de digitação. Recarregue a página para tentar novamente.
Exercício de digitação: Programação em linguagem SQL
As regras de cálculo da precisão mudaram. Este exercício recomeça do início.
Não foi possível confirmar que a sessão concluída foi guardada. Tente guardá-la novamente sem voltar a escrever o texto.
Exercício de digitação: Programação em linguagem SQL
A datilografia é importante na programação. Você será mais eficiente ao usar técnicas de digitação rápida para escrever código na linguagem de programação SQL.
Programação em SQL e datilografia
Aprender SQL e praticar digitação andam naturalmente juntos. As consultas SQL estão cheias de parênteses, vírgulas, operadores e aspas. Pequenos erros, como uma aspa incorreta ou um ponto e vírgula esquecido, podem fazer a consulta inteira falhar. Ao escrever SQL, é útil saber quais partes da sintaxe são comuns entre diferentes bancos de dados e quais são específicas. Este artigo foca principalmente no PostgreSQL, mas também menciona MySQL, SQLite e SQL Server onde a sintaxe difere.
O que é característico da sintaxe SQL?
SQL (Structured Query Language) é uma linguagem declarativa. Em vez de descrever passo a passo como obter os dados, você declara quais dados deseja. Quase todas as instruções começam com uma palavra-chave como SELECT, INSERT ou UPDATE. A ordem das cláusulas é fixa: SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY .... PostgreSQL e MySQL compartilham essa ordem, então se você aprender em um, pode aplicar no outro.
SELECT id, name
FROM customers
WHERE active = true
ORDER BY created_at DESC;
Caracteres especiais usados com frequência
SQL contém muitos sinais de pontuação. Parênteses () delimitam argumentos de funções e agrupam condições. Vírgulas , separam colunas. O ponto . é usado em esquemas e nomes de tabelas, como public.users. Aspas simples '...' delimitam strings. O PostgreSQL usa aspas duplas "..." para identificadores, enquanto o MySQL usa backticks `...`. No SQL Server, também aparecem colchetes [...]. Praticar esses símbolos ajuda a escrever consultas corretas.
-- String literal
SELECT * FROM books WHERE title = 'War and Peace';
-- Identificadores com espaços (PostgreSQL)
SELECT "Order ID", "Customer Name" FROM orders;
Letras maiúsculas e minúsculas
Por convenção, as palavras-chave SQL são frequentemente escritas em maiúsculas: SELECT, FROM, WHERE. Isso facilita a leitura, mas não é obrigatório. No PostgreSQL, identificadores não citados são convertidos automaticamente em minúsculas, então MyTable e mytable são tratados como iguais. No MySQL, a distinção entre maiúsculas e minúsculas nos nomes de bancos de dados e tabelas depende do sistema operacional e das configurações do servidor. Para prática, usar palavras-chave em maiúsculas é comum, pois destaca a estrutura da consulta.
Ponto e vírgula e fim da instrução
Em SQL, o ponto e vírgula ; termina uma instrução. Ferramentas interativas como psql, o cliente MySQL e o terminal interativo SQLite normalmente aguardam esse caractere antes de executar a instrução. No psql, também pode enviar a consulta atual com \g. Se aparecer uma indicação para inserir mais texto em vez de um resultado, verifique se terminou a instrução.
Consultas SELECT e joins
Escrever consultas geralmente significa escrever joins. O PostgreSQL usa INNER JOIN, LEFT JOIN e RIGHT JOIN. No exemplo abaixo, a condição do join aparece após a palavra-chave ON. Também existem joins com USING ou NATURAL. Um espaço ou erro de digitação na condição quebra a consulta. Praticar joins ajuda a ganhar precisão com símbolos como = e ..
SELECT c.id, c.name, o.amount
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id
WHERE o.amount > 100;
Funções e expressões
O PostgreSQL possui muitas funções integradas como COUNT(), SUM() e AVG(). Parênteses são sempre obrigatórios. Funções de data e hora como NOW() ou DATE_TRUNC() estão disponíveis no PostgreSQL; a disponibilidade e o funcionamento dessas funções variam entre bancos de dados. O MySQL também tem funções como CURDATE() ou DATE_FORMAT(). Escrevê-las corretamente exige atenção aos traços de sublinhado, às vírgulas e aos parênteses.
SELECT DATE_TRUNC('month', created_at) AS month,
COUNT(*) AS orders
FROM orders
GROUP BY month
ORDER BY month;
INSERT, UPDATE, DELETE
Instruções que modificam dados usam muitos sinais de pontuação. INSERT usa parênteses e vírgulas para colunas e valores. UPDATE usa = para atribuir valores e vírgulas para separar as atribuições. DELETE combina palavras-chave com condições. Essas estruturas são quase idênticas no PostgreSQL, MySQL, SQLite e SQL Server, embora as regras de aspas variem.
INSERT INTO users (id, name, email)
VALUES (1, 'Alice', 'a@example.com');
UPDATE users
SET name = 'Bob', email = 'bob@example.com'
WHERE id = 1;
DELETE FROM users WHERE id = 2;
Common Table Expressions (CTE)
O PostgreSQL usa frequentemente CTEs iniciadas com WITH. Elas contêm muitos parênteses e vírgulas, sendo um bom exercício de digitação. MySQL, SQLite e SQL Server também suportam CTEs. Verifique se cada parêntese de abertura tem um parêntese de fecho correspondente.
WITH recent_orders AS (
SELECT * FROM orders WHERE created_at > NOW() - INTERVAL '30 days'
)
SELECT customer_id, COUNT(*) AS order_count
FROM recent_orders
GROUP BY customer_id;
Funções de janela
O PostgreSQL é conhecido por suas funções de janela avançadas. A sintaxe típica OVER (PARTITION BY ... ORDER BY ...) exige digitação precisa de parênteses e palavras-chave. MySQL e SQL Server também suportam funções de janela. O exemplo abaixo usa a sintaxe do PostgreSQL.
SELECT customer_id,
SUM(amount) OVER (PARTITION BY customer_id ORDER BY created_at) AS running_total
FROM payments;
Parâmetros e placeholders
Nas aplicações, os marcadores de parâmetros dependem tanto do banco de dados como do driver. As instruções preparadas nativas do PostgreSQL usam $1, $2, as instruções preparadas do MySQL e as consultas SQLite podem usar ?, e os parâmetros do SQL Server têm nomes como @p1. Um driver pode exigir outra sintaxe, como %s no Psycopg. Consulte a sua documentação, pois esses pequenos símbolos são fáceis de digitar incorretamente.
-- PostgreSQL
SELECT * FROM users WHERE id = $1;
-- MySQL
SELECT * FROM users WHERE id = ?;
Resumo
Por convenção, as palavras-chave SQL são escritas em maiúsculas. O PostgreSQL converte em minúsculas os identificadores sem aspas duplas; em outros sistemas, as regras são diferentes. O PostgreSQL usa aspas duplas para identificadores, placeholders $n, CTEs e funções de janela. O MySQL usa backticks e placeholders ?. O SQL Server introduz colchetes e parâmetros @. O SQLite mantém a sintaxe simples, mas exige precisão. Praticar consultas SQL melhora a exatidão na digitação de sinais de pontuação, palavras-chave e símbolos, e focar no PostgreSQL oferece experiência com um dos bancos de dados modernos mais usados.