O MySQL é um dos sistemas de gerenciamento de banco de dados mais usados no mundo, sendo essencial para desenvolvedores, administradores de sistemas e analistas de dados. Este guia cobre tudo o que você precisa para começar, com explicações detalhadas e exemplos que você pode testar imediatamente.
Nota: Atualmente, o MariaDB é amplamente utilizado como uma alternativa e evolução do MySQL. Ele mantém compatibilidade com os comandos do MySQL, oferecendo melhorias de desempenho e recursos adicionais. A maioria dos conceitos discutidos aqui aplica-se igualmente ao MariaDB.
1. O que é MySQL (e MariaDB)?
O MySQL é um sistema de gerenciamento de banco de dados relacional (RDBMS) de código aberto. Ele utiliza a linguagem SQL (Structured Query Language) para realizar operações como inserção, consulta, atualização e exclusão de dados.
E o MariaDB?
O MariaDB foi criado como um fork do MySQL, após a aquisição do MySQL pela Oracle. Ele é mantido por uma comunidade independente e oferece:
- Compatibilidade: Todos os comandos SQL do MySQL funcionam no MariaDB.
- Desempenho melhorado: Otimizações significativas em consultas e armazenamento.
- Funcionalidades extras: Recursos como novas engines de armazenamento e suporte a colunas virtuais.
Por que usar MySQL ou MariaDB?
- Popularidade: Amplamente utilizado em pequenos projetos até grandes corporações.
- Velocidade: Ambos são otimizados para consultas rápidas.
- Escalabilidade: Suportam desde aplicações simples até grandes volumes de dados.
- Gratuito: As versões Community Edition são totalmente gratuitas.
- Compatibilidade: Integram-se facilmente com PHP, Python, Java, e várias outras linguagens.
2. Estrutura de Banco de Dados
No MySQL e MariaDB, um banco de dados é composto por tabelas, que organizam os dados em linhas e colunas.
Conceitos fundamentais
- Banco de dados: Contém todas as tabelas relacionadas ao sistema.
- Tabela: Armazena os dados em linhas (registros) e colunas (atributos).
- Coluna: Define o tipo de dado (exemplo: nome, idade, e-mail).
- Linha: Cada registro individual na tabela.
Tipos de Dados
- INT: Números inteiros.
- VARCHAR(size): Texto com tamanho máximo especificado.
- TEXT: Texto longo.
- DATE: Datas no formato
YYYY-MM-DD
. - FLOAT: Números decimais.
Criando um banco e uma tabela
CREATE DATABASE escola;
USE escola;
CREATE TABLE alunos (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(50),
idade INT,
curso VARCHAR(100),
data_matricula DATE
);
3. Comandos Básicos de SQL
Criar um banco de dados
CREATE DATABASE nome_banco;
USE nome_banco;
Inserir registros em uma tabela
INSERT INTO alunos (nome, idade, curso, data_matricula)
VALUES ('João Silva', 20, 'Engenharia', '2024-11-25');
Consultar registros
SELECT * FROM alunos;
SELECT nome, curso FROM alunos WHERE idade > 18;
Atualizar registros
UPDATE alunos SET curso = 'Medicina' WHERE nome = 'João Silva';
Excluir registros
DELETE FROM alunos WHERE idade < 18;
4. Relacionamentos entre Tabelas
Tabelas podem ser relacionadas por meio de chaves primárias (PK) e chaves estrangeiras (FK).
Exemplo: Relacionando Alunos e Notas
CREATE TABLE notas (
id INT AUTO_INCREMENT PRIMARY KEY,
id_aluno INT,
disciplina VARCHAR(50),
nota FLOAT,
FOREIGN KEY (id_aluno) REFERENCES alunos(id)
);
Consultar informações relacionadas
SELECT alunos.nome, notas.disciplina, notas.nota
FROM alunos
INNER JOIN notas ON alunos.id = notas.id_aluno;
5. Funções Agregadas
Funções agregadas permitem realizar cálculos em conjuntos de dados.
Exemplos práticos
- Contar registros:
SELECT COUNT(*) AS total_alunos FROM alunos;
- Média de notas:
SELECT AVG(nota) AS media_notas FROM notas;
- Maior e menor nota:
SELECT MAX(nota) AS maior_nota, MIN(nota) AS menor_nota FROM notas;
6. Backups e Restauração
Manter backups do banco de dados é essencial para evitar perda de dados.
Criar um backup
mysqldump -u root -p escola > backup_escola.sql
Restaurar um backup
mysql -u root -p escola < backup_escola.sql
7. Dicas e Boas Práticas
- Nomeação clara: Use nomes descritivos para tabelas e colunas, como
usuarios
,data_cadastro
, etc. - Índices: Crie índices em colunas frequentemente consultadas para melhorar o desempenho.
CREATE INDEX idx_nome ON alunos(nome);
- Segurança: Limite privilégios de usuários do banco para evitar alterações indesejadas.
GRANT SELECT, INSERT ON escola.* TO 'usuario_leitura'@'localhost';
Conclusão
Agora que você conhece os fundamentos do MySQL e do MariaDB, está pronto para criar e gerenciar bancos de dados para suas aplicações. Experimente os exemplos fornecidos e continue explorando conceitos mais avançados, como triggers, stored procedures e otimização de consultas.