SQL: Introdução ao SQL
Imagine entrar em uma grande biblioteca e querer emprestar um livro específico. Você precisa se comunicar com a bibliotecária — dizer o título do livro, autor ou número de classificação, e ela pode ajudá-lo a encontrá-lo. SQL (Structured Query Language) é a linguagem universal entre você e o "bibliotecário" do banco de dados. Não importa quantos milhões de registros estejam armazenados no banco de dados, desde que você conheça SQL, pode consultar, adicionar, modificar ou deletar as informações necessárias com precisão.
1. Conceitos Fundamentais
(1) O que é SQL?
SQL é uma linguagem padrão projetada especificamente para se comunicar com bancos de dados relacionais. Nasceu na década de 1970, proposta por pesquisadores da IBM, e desde então tornou-se a linguagem de consulta de bancos de dados mais utilizada no mundo.
(2) Por que Aprender SQL?
- Alta demanda no mercado: Desenvolvimento backend, análise de dados, ciência de dados e muitas outras vagas quase sempre exigem habilidades em SQL
- Muito versátil: Após aprender SQL, você pode alternar seamless entre MySQL, PostgreSQL, SQLite, SQL Server e muitos outros bancos de dados
- Lógica clara: A sintaxe do SQL é próxima da linguagem natural, facilitando o início, porém extremamente poderosa
- Atemporal: SQL está popular há mais de 50 anos e continua sendo uma habilidade central na área de dados
(3) Conceitos Fundamentais de Bancos de Dados Relacionais
Bancos de dados relacionais organizam dados usando tabelas, assim como planilhas do Excel — intuitivo e direto:
| Conceito | Descrição | Analogia |
|---|---|---|
| Tabela | Uma coleção de dados armazenados | Uma planilha no Excel |
| Linha | Um registro específico de dados | Uma linha no Excel |
| Coluna | Um atributo/campo dos dados | Uma coluna no Excel |
| Chave Primária | Uma coluna que identifica unicamente cada linha | Um número de documento de identidade |
Por exemplo, uma tabela employees:
| id | name | department | salary |
|---|---|---|---|
| 1 | John Smith | Engineering | 15000 |
| 2 | Jane Doe | Marketing | 12000 |
- Cada linha representa um funcionário
- A coluna
idé a chave primária, garantindo que cada funcionário tenha um identificador único name,department,salarysão colunas que descrevem informações do funcionário
(4) SQL vs NoSQL
| Comparação | SQL (Relacional) | NoSQL (Não-relacional) |
|---|---|---|
| Estrutura de Dados | Tabelas (linhas e colunas) | Documentos, pares chave-valor, grafos, etc. |
| Esquema | Esquema fixo | Flexível/sem esquema |
| Suporte a Transações | Consistência forte (ACID) | Consistência eventual |
| Método de Escalabilidade | Escalabilidade vertical | Escalabilidade horizontal |
| Cenários Típicos | Bancos, pedidos de e-commerce | Logs, dados sociais |
| Produtos Representativos | MySQL, PostgreSQL | MongoDB, Redis |
(5) Comparação dos Principais Bancos de Dados
| Banco de Dados | Características | Ideal Para |
|---|---|---|
| MySQL | Open source, ecossistema maduro, excelente desempenho | Aplicações web, projetos de pequeno a médio porte |
| PostgreSQL | Mais rico em recursos, suporta JSON, ótima extensibilidade | Consultas complexas, dados geográficos, grandes projetos |
| SQLite | Leve, sem necessidade de servidor, armazenamento em arquivo único | Mobile, embarcado, testes locais |
| SQL Server | Produto Microsoft, boa integração com .NET | Aplicações corporativas, ecossistema Windows |
2. Sintaxe/Uso Básico
(1) Fundamentos da Sintaxe SQL
Instruções SQL terminam com ponto e vírgula ;. Palavras-chave são case-insensitive (mas maiúsculas são recomendadas para legibilidade).
SELECT name, salary FROM employees WHERE salary > 10000;
Esta instrução significa: da tabela employees, consulte o name e salary dos funcionários cujo salário ultrapassa 10000.
(2) Categorias de Comandos SQL
Os comandos SQL são divididos em quatro categorias principais por função:
| Categoria | Nome Completo | Finalidade | Comandos Comuns |
|---|---|---|---|
| DDL | Data Definition Language | Definir estrutura do banco de dados | CREATE, ALTER, DROP |
| DML | Data Manipulation Language | Manipular dados (CRUD) | SELECT, INSERT, UPDATE, DELETE |
| DCL | Data Control Language | Controle de permissões | GRANT, REVOKE |
| TCL | Transaction Control Language | Gerenciamento de transações | COMMIT, ROLLBACK |
SELECT, FROM, WHERE) são palavras reservadas e não podem ser usadas como nomes de tabelas ou colunas.
▶ Exemplo: Consultar Todos os Dados (Dificuldade ⭐)
A consulta mais básica — recuperar todos os dados de uma tabela:
-- Consultar todas as informações dos funcionários
SELECT * FROM employees;
Saída de exemplo:
id name department_id salary hire_date
1 John 1 15000.00 2023-01-15
2 Jane 2 12000.00 2023-03-20
3 Bob 1 18000.00 2022-06-01
* significa "todas as colunas". Em ambientes de produção, é recomendado listar explicitamente os nomes das colunas para evitar retornar dados desnecessários.
▶ Exemplo: Criar uma Tabela e Inserir Dados (Dificuldade ⭐)
Use DDL para criar uma tabela simples e depois use DML para inserir dados:
-- Criar tabela students
CREATE TABLE students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
grade TEXT
);
-- Inserir dois registros
INSERT INTO students (name, age, grade) VALUES ('Alice', 18, 'Senior');
INSERT INTO students (name, age, grade) VALUES ('Bob', 17, 'Junior');
-- Consultar para verificar
SELECT * FROM students;
Saída:
id name age grade
1 Alice 18 Senior
2 Bob 17 Junior
3. Cenários Comuns de Aplicação
(1) Cenário 1: Gerenciamento de Dados de E-commerce
Uma plataforma de e-commerce precisa gerenciar produtos, usuários, pedidos e outros dados. SQL pode lidar com isso facilmente:
-- Consultar produtos com estoque baixo
SELECT name, stock FROM products WHERE stock < 10;
-- Calcular valor total dos pedidos deste mês
SELECT SUM(quantity * price) AS total_revenue
FROM orders
JOIN products ON orders.product_id = products.id
WHERE order_date >= '2026-06-01';
(2) Cenário 2: Sistema de Gestão de Funcionários
Um sistema de RH corporativo precisa gerenciar informações de funcionários, departamentos, salários, etc.:
-- Consultar salário médio por departamento
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id;
-- Consultar funcionários que entraram em 2023
SELECT name, hire_date FROM employees
WHERE hire_date BETWEEN '2023-01-01' AND '2023-12-31';
❓ Perguntas Frequentes
P: SQL é difícil de aprender? R: Não. A sintaxe do SQL é próxima do inglês, e existem apenas alguns comandos principais (SELECT, INSERT, UPDATE, DELETE). Dominar o básico leva apenas alguns dias.
P: Preciso instalar um banco de dados antes de aprender SQL? R: É recomendado começar com SQLite — não requer instalação de servidor, apenas um único arquivo para rodar. A lição 02 deste tutorial mostrará como configurar o ambiente.
P: Qual a diferença entre SQL e MySQL? R: SQL é um padrão de linguagem, enquanto MySQL é um produto específico de banco de dados que utiliza a linguagem SQL. É como a relação entre "inglês" e "americanos".
P: Que empregos posso conseguir com habilidades em SQL? R: Desenvolvedor backend, analista de dados, engenheiro de dados, engenheiro BI, DBA (administrador de banco de dados) e muitas outras vagas dependem de SQL.
📖 Resumo
- SQL é a linguagem padrão para comunicação com bancos de dados relacionais, com mais de 50 anos de história
- Bancos de dados relacionais organizam dados usando tabelas, linhas e colunas; chaves primárias identificam unicamente cada linha
- Comandos SQL são divididos em DDL (definir estrutura), DML (manipular dados), DCL (controlar permissões) e TCL (gerenciar transações)
- Os principais bancos de dados incluem MySQL, PostgreSQL, SQLite e SQL Server; SQLite é recomendado para iniciantes
- SQL se adapta à maioria dos cenários de negócios; NoSQL é para necessidades especiais (escala massiva, estrutura flexível)
📝 Exercícios
Exercício 1 (⭐): Explique com suas próprias palavras o que é uma Chave Primária e por que toda tabela precisa de uma.
Exercício 2 (⭐⭐): Suponha que você precise projetar uma tabela "books" contendo título, autor, preço e data de publicação. Escreva a instrução CREATE TABLE.
Exercício 3 (⭐⭐⭐): Compare SQL e NoSQL, liste 3 vantagens e 3 desvantagens de cada, e explique quais cenários exigem qual tipo de banco de dados.
4. Banco de Dados de Exemplo Unificado
Os dados a seguir serão usados nas 27 lições restantes. Familiarize-se com eles agora; após configurar o ambiente na Lição 02, você poderá copiá-los e executá-los:
-- Tabela de departamentos
CREATE TABLE departments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
location TEXT
);
-- Tabela de funcionários
CREATE TABLE employees (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
department_id INTEGER,
salary DECIMAL(10,2),
hire_date DATE,
FOREIGN KEY (department_id) REFERENCES departments(id)
);
-- Tabela de produtos
CREATE TABLE products (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
category TEXT,
price DECIMAL(10,2),
stock INTEGER DEFAULT 0
);
-- Tabela de pedidos
CREATE TABLE orders (
id INTEGER PRIMARY KEY AUTOINCREMENT,
customer_name TEXT NOT NULL,
product_id INTEGER,
quantity INTEGER,
order_date DATE,
FOREIGN KEY (product_id) REFERENCES products(id)
);
5. Próxima Lição
👉 02 - Configuração do Ambiente: Instale ferramentas de banco de dados, configure seu ambiente de aprendizado e execute sua primeira instrução SQL!