MySQL: Uma introdução à sintaxe básica do SQL e uma…
Última atualização: 2026-08-26
O SQL é uma linguagem universal para trabalhar com bancos de dados — depois de aprendê-la, você terá a chave para acessar todos os bancos de dados relacionais.
Esta aula oferece uma introdução sistemática à classificação e à sintaxe básica do SQL, estabelecendo uma base sólida para estudos posteriores.
1. O que você vai aprender
- As cinco principais categorias do SQL e suas aplicações
- Sintaxe básica de consultas SELECT
- Duas maneiras de escrever comentários em SQL
- A diferença entre palavras-chave e palavras reservadas
- Convenções de nomenclatura de identificadores
2. Uma história real de um analista
(1) Problema: Isso não aconteceria se mudássemos para um banco de dados diferente
Um analista de dados que utilizava o Oracle na empresa anterior agora utiliza o MySQL na nova empresa:
“Venho escrevendo SQL para Oracle há três anos e, depois de mudar para o MySQL, percebi que parte da sintaxe é diferente — ROWNUM passou a ser LIMIT e SYSDATE passou a ser NOW(). Será que vou ter que começar tudo de novo?”
Na verdade, não há necessidade — a sintaxe básica do SQL é universal, e as diferenças representam apenas 5%.
(2) A solução de acordo com o Padrão SQL
O SQL é uma norma internacional (ISO/IEC 9075) à qual todos os bancos de dados relacionais se submetem:
-- This SQL runs on MySQL, PostgreSQL, Oracle, and SQL Server
SELECT 1 + 1 AS result;
Vantagens: Aprenda a sintaxe padrão do SQL; ao mudar para um banco de dados diferente, você precisará aprender apenas 5% das diferenças.
| Banco de dados | Sintaxe idêntica | Sintaxe diferente |
|---|---|---|
| MySQL | 95% | LIMIT, AUTO_INCREMENT |
| PostgreSQL | 95% | SERIAL, ILIKE |
| Oracle | 95% | ROWNUM, SYSDATE |
| SQL Server | 95% | TOP, GETDATE() |
3. As cinco principais categorias do SQL
graph TB
A[SQL Language] --> B[DDL Data Definition]
A --> C[DML Data Manipulation]
A --> D[DQL Data Query]
A --> E[DCL Data Control]
A --> F[TCL Transaction Control]
B --> B1[CREATE]
B --> B2[ALTER]
B --> B3[DROP]
C --> C1[INSERT]
C --> C2[UPDATE]
C --> C3[DELETE]
D --> D1[SELECT]
E --> E1[GRANT]
E --> E2[REVOKE]
F --> F1[COMMIT]
F --> F2[ROLLBACK]
| Categoria | Nome completo | Palavras-chave | Finalidade | Nível de risco |
|---|---|---|---|---|
| DDL | Linguagem de Definição de Dados | CREATE/ALTER/DROP/TRUNCATE | Define a estrutura do banco de dados | ⚠️ Médio |
| DML | Linguagem de Manipulação de Dados | INSERT/UPDATE/DELETE | Inserir, atualizar e excluir dados | ⚠️ Médio |
| DQL | Linguagem de Consulta de Dados | SELECT | Consultar dados | ✅ Seguro |
| DCL | Linguagem de Controle de Dados | GRANT/REVOKE | Gerenciamento de permissões | 🔴 Alto |
| TCL | Linguagem de Controle de Transações | COMMIT/ROLLBACK/SAVEPOINT | Controle de transações | ⚠️ Médio |
(1) DDL — Linguagem de Definição de Dados
Defina a estrutura do banco de dados (bancos de dados, tabelas, índices).
-- Create a Database
CREATE DATABASE mydb;
-- Create a Table
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50)
);
-- Modify the table structure
ALTER TABLE users ADD COLUMN email VARCHAR(100);
-- Delete Table
DROP TABLE users;
-- Clear Table Data (Keep Structure)
TRUNCATE TABLE users;
(2) DML — Linguagem de Manipulação de Dados
Dados na tabela (inserir, excluir, atualizar).
-- Insert data
INSERT INTO users (id, name) VALUES (1, 'Alice');
-- Update Data
UPDATE users SET name = 'Bob' WHERE id = 1;
-- Delete Data
DELETE FROM users WHERE id = 1;
(3) DQL — Linguagem de Consulta de Dados
Consultar os dados da tabela.
-- Query All Fields
SELECT * FROM users;
-- Conditional Query
SELECT name, email FROM users WHERE id > 10;
-- Sorted Queries
SELECT * FROM users ORDER BY created_at DESC;
-- Limit Results
SELECT * FROM users LIMIT 10;
(4) DCL — Linguagem de Controle de Dados
Gerenciar permissões do usuário.
-- Grant Permissions
GRANT SELECT, INSERT ON mydb.* TO 'user'@'localhost';
-- Revoke Permissions
REVOKE INSERT ON mydb.* FROM 'user'@'localhost';
(5) TCL — Linguagem de Controle de Transações
Gerenciar o envio e a reversão de transações.
-- Start Transaction
START TRANSACTION;
-- Perform an action
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
-- Commit Transaction
COMMIT;
-- Or roll back the transaction
ROLLBACK;
4. Sintaxe básica da instrução SELECT
(1) Sintaxe completa da instrução SELECT
SELECT [DISTINCT] column1, column2, ...
FROM table_name
[WHERE condition]
[ORDER BY column [ASC|DESC]]
[LIMIT offset, count];
▶ Exemplo: Consulta básica
-- Query All Fields
SELECT * FROM employees;
-- Query a Specific Field
SELECT first_name, last_name, salary FROM employees;
-- Using Aliases
SELECT first_name AS first_name, last_name AS last_name, salary AS salary FROM employees;
-- (Omit) AS (same result)
SELECT first_name first_name, last_name last_name FROM employees;
SELECT DISTINCT department FROM employees;
Saída:
+------+--------+---------+
| first_name | last_name | salary |
+------+--------+---------+
| John | Smith | 5000.00 |
| Jane | Doe | 6000.00 |
+------+--------+---------+
▶ Exemplo: Consulta condicional
-- Equal Value Query
SELECT * FROM employees WHERE department = 'Engineering';
-- Range Query
SELECT * FROM employees WHERE salary BETWEEN 4000 AND 8000;
-- List Query
SELECT * FROM employees WHERE department IN ('Sales', 'Marketing');
-- Fuzzy Search
SELECT * FROM employees WHERE first_name LIKE 'J%';
-- Null Value Query
SELECT * FROM employees WHERE manager_id IS NULL;
Saída:
+-------------+-----------+--------+-------------+
| first_name | last_name | salary | department |
+-------------+-----------+--------+-------------+
| John | Smith | 5000.00| Engineering |
| Jane | Doe | 6000.00| Engineering |
+-------------+-----------+--------+-------------+
5. Comentários em SQL
(1) Comentários de uma linha
-- This is a single-line comment (Standard Format)
SELECT * FROM users; -- Query All Users
# This is also a single-line comment (MySQL-specific)
SELECT * FROM users;
(2) Comentários em várias linhas
/*
This is a multi-line comment
Can span multiple lines
Commonly used to illustrate complex queries
*/
SELECT * FROM users
WHERE status = 'active';
▶ Exemplo: Aplicações práticas dos comentários
/*
Features: Query statistics on active users
Author: Alice
Date: 2026-07-03
Revision History:
- 2026-07-02 Add email_verified condition
- 2026-07-03 Add a filter for registration date
*/
SELECT
COUNT(*) AS total_users, -- Total Number of Users
AVG(age) AS avg_age, -- Average Age
MIN(created_at) AS earliest_reg -- Earliest registration date
FROM users
WHERE status = 'active' -- Count only active users
AND email_verified = TRUE -- Email verified
AND created_at >= '2025-01-01'; -- Registered after 2025
6. Palavras-chave e palavras reservadas
(1) O que é uma palavra-chave?
Palavras-chave são palavras que têm significados especiais no SQL, como SELECT, FROM e WHERE.
| Tipo | Descrição | Exemplo |
|---|---|---|
| Palavra-chave | Tem um significado especial, mas pode ser usada como identificador (deve estar entre crases) | order, group |
| Palavras reservadas | Não podem ser usadas como identificadores (não recomendadas, mesmo entre crases) | SELECT, TABLE |
▶ Exemplo: Como lidar com conflitos de palavras-chave
-- Error: order is a keyword
CREATE TABLE order (id INT);
-- Correct: Enclose in backticks
CREATE TABLE `order` (id INT);
-- Better: Avoid using keywords as table names
CREATE TABLE orders (id INT);
7. Convenções de nomenclatura de identificadores
(1) Convenções de nomenclatura
| Regra | Descrição | Exemplo |
|---|---|---|
| Conjunto de caracteres | Letras, números, sublinhados | user_name ✅ |
| Primeiro caractere | Deve ser uma letra ou um sublinhado | 1user ❌ |
| Limite de comprimento | Máximo de 64 caracteres | — |
| Distinção entre maiúsculas e minúsculas | O Windows não faz distinção entre maiúsculas e minúsculas, enquanto o Linux faz | Users ≠ users (Linux) |
| Palavra reservada | Evite usar | order ❌ → orders ✅ |
(2) Convenções de nomenclatura recomendadas
| Estilo | Exemplo | Recomendação |
|---|---|---|
| snake_case | user_name, order_id |
⭐⭐⭐ |
| camelCase | userName, orderId |
⭐⭐ |
| PascalCase | UserName, OrderId |
⭐ |
snake_case, o que está de acordo com o estilo da documentação oficial.
▶ Exemplo: Boas práticas de nomenclatura
-- Good Naming Practices
CREATE TABLE user_orders (
id INT PRIMARY KEY,
user_id INT,
order_number VARCHAR(20),
total_amount DECIMAL(10,2),
created_at TIMESTAMP
);
-- Poor Naming
CREATE TABLE t1 (
c1 INT,
c2 VARCHAR(20),
c3 DECIMAL(10,2)
);
8. Diretrizes para a redação de instruções SQL
(1) Diretrizes de formatação
-- Recommended Format: Capitalize keywords, one field per line
SELECT
first_name,
last_name,
salary
FROM employees
WHERE department = 'Engineering'
ORDER BY salary DESC
LIMIT 10;
(2) A importância dos pontos-e-vírgulas
-- A semicolon is a statement terminator.
SELECT * FROM users; -- Statement 1
SELECT * FROM orders; -- Statement 2
-- Multiple statements must be separated by semicolons when executed.
❓ Perguntas Frequentes
P: As instruções SQL precisam estar em maiúsculas? R: Não, não precisam, mas recomenda-se colocar as palavras-chave (SELECT/FROM/WHERE) em maiúsculas para melhorar a legibilidade. O MySQL não diferencia maiúsculas de minúsculas.
P: O que é melhor,
*ou um campo específico? R: Recomendamos o uso de um campo específico em ambientes de produção (melhor desempenho, semântica mais clara). Você pode usar*durante a fase de aprendizado.
P: Os comentários em SQL afetam o desempenho? R: Não. O analisador do MySQL ignora os comentários, e eles não são executados.
P: É possível usar caracteres chineses em nomes de tabelas ou campos? R: Tecnicamente, sim (é necessário usar crases), mas isso é fortemente desaconselhado. Use o inglês
user_nameem vez de用户名.
P: O que é mais perigoso, DDL ou DML? R: O DDL (DROP/ALTER) é mais perigoso — excluir uma tabela apaga todos os seus dados, e alterar a estrutura da tabela pode afetar o aplicativo. Certifique-se de fazer backup dos seus dados antes de realizar essas operações.
📖 Resumo
- SQL é a linguagem padrão para a manipulação de bancos de dados relacionais e se divide em cinco categorias: DDL, DML, DQL, DCL e TCL.
- DDL define estruturas (CREATE/ALTER/DROP), DML manipula dados (INSERT/UPDATE/DELETE)
- O DQL consulta dados (SELECT), o DCL gerencia permissões (GRANT/REVOKE) e o TCL controla transações (COMMIT/ROLLBACK)
- Existem dois tipos de comentários em SQL:
--comentários de uma linha e/* */comentários de várias linhas - Recomendamos usar
snake_casecomo identificador; evite usar palavras-chave. - As instruções SQL terminam com um ponto-e-vírgula
;
📝 Exercícios
-
Questão básica (Dificuldade ⭐): Escreva a instrução DDL para criar a tabela
students, que inclui os campos id (chave primária), nome (não nulo), idade e série. -
Questão avançada (Dificuldade ⭐⭐): Escreva uma instrução SELECT para recuperar os funcionários da tabela
employeescujo salário seja maior que 5.000 e cujo departamento seja “Vendas”, ordenados em ordem decrescente por salário, e exiba apenas as primeiras 5 linhas. -
Desafio (Dificuldade: ⭐⭐⭐): Escreva uma transação completa que transfira 100 yuan da Conta A para a Conta B, incluindo o início da transação, duas instruções UPDATE e um commit ou rollback.