Estrutura e Palavras-chave do SQL no MySQL

Estrutura e Palarvas-chave do SQL no MySQL

SQL (Structured Query Language) é a linguagem padrão para interagir com bancos de dados relacionais no MySQL. Sua sintaxe, embora aparentemente simples, envolve componentes e termos que são cruciais para consultas eficientes e corretas.

  1. Composição Básica do SQL

Uma instrução SQL típica pode ser dividida em cláusulas que definem a ação a ser realizada. A estrutura fundamental segue este padrão:

SELECT coluna1, coluna2 FROM tabela WHERE condicao;
  • SELECT: Especifica as colunas a serem retornadas.
  • FROM: Indica a tabela de origem dos dados.
  • WHERE: Filtra linhas com base em critérios.

Em consultas mais complexas, isso pode incluir junções, subconsultas ou funções de janela.

  1. Categorias Principais de Instruções SQL

2.1 Linguagem de Definição de Dados (DDL)

Utilizada para definir e modificar a estrutura do banco de dados, como tabelas.

CREATE TABLE funcionarios (
    id_func INT PRIMARY KEY,
    nome VARCHAR(60),
    idade INT
);

ALTER TABLE funcionarios ADD COLUMN email VARCHAR(120);

DROP TABLE funcionarios;

2.2 Linguagem de Manipulação de Dados (DML)

Gerencia os dados dentro das tabelas, permitindo inserção, atualização e remoção.

-- Inserir dados
INSERT INTO funcionarios (id_func, nome, idade) VALUES (1, 'Maria', 28);

-- Atualizar dados
UPDATE funcionarios SET idade = 29 WHERE id_func = 1;

-- Remover dados
DELETE FROM funcionarios WHERE id_func = 1;

2.3 Linguagem de Consulta de Dados (DQL)

Focada na recuperação de dados.

SELECT nome, idade FROM funcionarios WHERE idade > 25;

2.4 Linguagem de Controle de Transações (TCL)

Administra transações para garantir a integridade dos dados.

START TRANSACTION;

-- Operações diversas

COMMIT;
ROLLBACK;
  1. Palavras-chave Comuns no SQL

3.1 Consulta de Dados

SELECT

Define as colunas a serem consultadas. Use * para todas as colunas ou apelidos com AS.

SELECT * FROM funcionarios;
SELECT id_func AS identificador, nome AS nome_completo FROM funcionarios;

FROM

Esepcifica a tabela de origem.

SELECT nome FROM funcionarios WHERE idade > 30;

WHERE

Filtra linhas usando operadores lógicos como AND, OR e NOT.

SELECT nome FROM funcionarios WHERE idade > 30 AND genero = 'F';

ORDER BY

Ordena o conjunto de resultados. O padrão é ascendente; use DESC para descendente.

SELECT nome, idade FROM funcionarios ORDER BY idade DESC;

3.2 Manipulação de Dados

INSERT INTO

Insere novas linhas, incluindo suporte para inserção em massa.

INSERT INTO funcionarios (id_func, nome, idade) VALUES (2, 'João', 35);
INSERT INTO funcionarios (id_func, nome, idade) VALUES 
(3, 'Ana', 27),
(4, 'Carlos', 40);

UPDATE

Modifica dados existentes, permitindo atualizar múltiplas colunas.

UPDATE funcionarios SET nome = 'Maria Clara', idade = 30 WHERE id_func = 1;

DELETE

Remove linhas com base em condições.

DELETE FROM funcionarios WHERE id_func = 1;

3.3 Funcionalidades Avançadas

GROUP BY

Agrupa linhas, frequentemente usado com funções de agregação como SUM, AVG, COUNT. Use HAVING para filtrar grupos.

SELECT genero, COUNT(*) AS total FROM funcionarios GROUP BY genero;
SELECT genero, COUNT(*) AS total FROM funcionarios GROUP BY genero HAVING total > 5;

JOIN

Combina dados de múltiplas tabelas, como junções internas (INNER JOIN) e externas (LEFT JOIN).

SELECT f.nome, p.numero_pedido 
FROM funcionarios f 
INNER JOIN pedidos p ON f.id_func = p.id_func;

SELECT f.nome, p.numero_pedido 
FROM funcionarios f 
LEFT JOIN pedidos p ON f.id_func = p.id_func;

UNION

Mescla resultados de consultas SELECT distintas.

SELECT nome FROM funcionarios WHERE idade > 30
UNION
SELECT nome FROM funcionarios WHERE idade < 20;
  1. Palavras-chave para Otimização de Desempenho

4.1 EXPLAIN

Analisa o plano de execução de consultas para identificar problemas como varreduras de tabela completas.

EXPLAIN SELECT * FROM funcionarios WHERE id_func = 1;

4.2 LIMIT

Restringe o número de linhas retornadas, com suporte para deslocamentos.

SELECT nome, idade FROM funcionarios LIMIT 5;
SELECT nome, idade FROM funcionarios LIMIT 5 OFFSET 10;

4.3 Gerenciamento de Índices

Índices aceleram consultas, mas devem ser usados com cautela.

CREATE INDEX idx_nome ON funcionarios(nome);
DROP INDEX idx_nome ON funcionarios;
  1. Erros Comuns e Boas Práticas

5.1 Uso Excessivo de SELECT *

Selecionar todas as colunas pode reduzir a performance. Especifique apenas as colunas necessárias.

-- Preferível
SELECT nome, idade FROM funcionarios WHERE id_func = 1;

-- Evitar
SELECT * FROM funcionarios WHERE id_func = 1;

5.2 Negligenciar Índices

Consultas sem índices podem realizar varreduras completas, prejudicando a velocidade. Planeje índices em colunas frequentemente filtradas.

CREATE INDEX idx_nome ON funcionarios(nome);
SELECT * FROM funcionarios WHERE nome = 'Maria';

5.3 Condições de Filtro Complexas

Simplifique condições ou utilize visões para cnosultas recorrentes.

-- Condição simplificada
SELECT * FROM funcionarios WHERE idade > 25 AND genero = 'F';

-- Usar visão para reutilização
CREATE VIEW funcionarias_ativas AS 
SELECT * FROM funcionarios WHERE genero = 'F' AND status = 'ativo';

Tags: MySQL SQL DDL DML DQL

Publicado em 5-31 17:29 por Thomas