Exercício de digitação: Programação em linguagem SQL

feche e comece a digitar

Datilografia é significativa 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.

Vamos aprender mais sobre a linguagem SQL e a datilografia ao programar em 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 () envolvem funções e 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, o comportamento depende do sistema operacional. 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

No PostgreSQL, cada instrução geralmente termina com um ponto e vírgula ;. Esquecê-lo pode impedir a execução em ferramentas como psql. MySQL e SQLite são mais permissivos em modo interativo, mas o ponto e vírgula ainda é recomendado. Esse pequeno caractere é frequentemente a causa de erros.

Consultas SELECT e joins

Escrever consultas geralmente significa escrever joins. O PostgreSQL usa INNER JOIN, LEFT JOIN e RIGHT JOIN. Cada join requer a palavra-chave ON seguida de uma condição. 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() são específicas do PostgreSQL. O MySQL tem equivalentes como CURDATE() ou DATE_FORMAT(). Escrevê-las corretamente exige atenção a underscores, vírgulas e 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 = separados por vírgulas. 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 e SQLite as suportam em versões recentes, e o SQL Server também. Colocar corretamente os parênteses é o erro mais comum.

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 as suportam, mas o PostgreSQL é frequentemente a referência.

SELECT customer_id,
       SUM(amount) OVER (PARTITION BY customer_id ORDER BY created_at) AS running_total
FROM payments;

Parâmetros e placeholders

Em aplicações, os placeholders variam entre bancos de dados. O PostgreSQL usa $1, $2, o MySQL e o SQLite usam ?, e o SQL Server usa @p1. Esses pequenos símbolos são fáceis de digitar incorretamente, mas são essenciais para a execução.

-- 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, enquanto os identificadores permanecem em minúsculas, a menos que sejam citados. 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.