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


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:

SQL
-- 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

100%
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).

SQL
-- 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).

SQL
-- 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.

SQL
-- 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.

SQL
-- 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.

SQL
-- 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

SQL
SELECT [DISTINCT] column1, column2, ...
FROM table_name
[WHERE condition]
[ORDER BY column [ASC|DESC]]
[LIMIT offset, count];

▶ Exemplo: Consulta básica

SQL
-- 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;
▶ Experimente

Saída:

TEXT 📖 Somente leitura
+------+--------+---------+
| first_name | last_name | salary  |
+------+--------+---------+
| John | Smith  | 5000.00 |
| Jane | Doe    | 6000.00 |
+------+--------+---------+

▶ Exemplo: Consulta condicional

SQL
-- 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;
▶ Experimente

Saída:

TEXT 📖 Somente leitura
+-------------+-----------+--------+-------------+
| 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

SQL
-- 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

SQL
/*
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

SQL
/*
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
▶ Experimente

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

SQL
-- 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);
▶ Experimente

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 Usersusers (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
💡 Dica: A comunidade do MySQL recomenda o uso de snake_case, o que está de acordo com o estilo da documentação oficial.

▶ Exemplo: Boas práticas de nomenclatura

SQL
-- 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)
);
▶ Experimente

8. Diretrizes para a redação de instruções SQL

(1) Diretrizes de formatação

SQL
-- 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

SQL
-- 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_name em 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


📝 Exercícios

  1. 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.

  2. Questão avançada (Dificuldade ⭐⭐): Escreva uma instrução SELECT para recuperar os funcionários da tabela employees cujo 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.

  3. 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.

Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%