1.
Sublinguagens SQL
O SQL possui sublinguagens responsáveis por diferentes operações:
• DDL (Data Definition Language): definição da estrutura do banco (CREATE, ALTER,
DROP, TRUNCATE).
• DML (Data Manipulation Language): manipulação dos dados (SELECT, INSERT, UPDATE,
DELETE).
• DCL (Data Control Language): controle de permissões (GRANT, REVOKE).
• TCL (Transaction Control Language): controle de transações (COMMIT, ROLLBACK,
SAVEPOINT).
2. Manipulação de Dados com SQL (DML)
Principais comandos:
• SELECT: consulta dados.
• INSERT INTO: insere registros.
• UPDATE: atualiza registros.
• DELETE: remove registros.
• WHERE, ORDER BY, GROUP BY: filtragem, ordenação e agrupamento.
Exemplo de SELECT:
sql
SELECT nome, salario
FROM funcionarios
WHERE salario > 3000
ORDER BY salario DESC;
3. Rotinas Administrativas (Administração de Banco de Dados)
• Backup e Restore: proteção contra perda de dados.
• Controle de acessos: uso de GRANT e REVOKE para permissões.
• Monitoramento de desempenho: uso de CPU, memória, índices e planos de execução.
• Criação de usuários e permissões.
Exemplo de GRANT:
sql
GRANT SELECT, INSERT ON funcionarios TO usuarioX;
4. Programação Avançada em SQL
Procedures (Procedimentos Armazenados):
sql
CREATE PROCEDURE aumentarSalario()
BEGIN
UPDATE funcionarios SET salario = salario * 1.1;
END;
Triggers (Gatilhos):
sql
CREATE TRIGGER before_insert_cliente
BEFORE INSERT ON clientes
FOR EACH ROW
SET NEW.cadastro = NOW();
Functions (Funções Definidas pelo Usuário - UDF):
sql
CREATE FUNCTION calcular_bonus(salario DECIMAL(10,2)) RETURNS DECIMAL(10,2)
BEGIN
RETURN salario * 0.1;
END;
Views (Visões):
sql
CREATE VIEW vw_funcionarios_ativos AS
SELECT nome, salario
FROM funcionarios
WHERE ativo = 1;
Cursores:
sql
DECLARE cursor_func CURSOR FOR
SELECT nome FROM funcionarios;
5. Indexação e Hashing
Melhora a performance das consultas:
• Índices B-tree: ideal para consultas ordenadas e intervalares (ORDER BY, BETWEEN).
• Índices Hash: ideal para buscas exatas (WHERE id = 5).
Exemplo de índice B-tree:
sql
CREATE INDEX idx_nome ON clientes(nome);
6. Otimização de Consultas
• Utilizar índices adequados.
• Evitar SELECT *.
• Analisar o plano de execução com EXPLAIN.
Exemplo:
sql
EXPLAIN SELECT nome FROM funcionarios WHERE salario > 3000;
• Melhorar consultas usando JOIN, subconsultas e WITH.
7. Gerenciamento de Transações
Propriedades ACID:
• Atomicidade: tudo ou nada.
• Consistência: mantém integridade.
• Isolamento: não há interferência mútua.
• Durabilidade: permanência após falhas.
Exemplo:
sql
BEGIN;
UPDATE contas SET saldo = saldo - 100 WHERE id = 1;
COMMIT; -- ou ROLLBACK
8. Controle de Concorrência
• Locks (bloqueios): impede alterações simultâneas.
• Controle por Timestamp: ordena execuções.
• MVCC: cria versões dos dados.
Problemas evitados:
• Leitura suja (Dirty Read)
• Leitura fantasma (Phantom Read)
• Escrita perdida (Lost Update)