O MySQL é um sistema de gerenciamento de banco de dados relacional de código aberto, amplamente utilizado no desenvolvimento de aplicações web. Seu percurso de desenvolvimento inclui a superação de limitações iniciais em relação a concorrentes como o Oracle e o SQL Server.
Obtendo e Instalando o MySQL
Recomenda-se baixar o software diretamente do site oficial. Para instalação em ambientes Windows, utilizar o pacote comprimido de código-fonte (ZIP) é preferível, pois evita alterações complexas no registro do sistema.
Após extrair o arquivo, é necessário configurar as variáveis de ambiente do sistema, adicionando o diretório \bin da instalação ao PATH. A instalação do serviço e a configuração inicial são realizadas através do prompt de comando com privilégios de administrador.
-- Exemplo de configuração inicial no arquivo my.ini
[mysqld]
basedir=C:\caminho\para\mysql
datadir=C:\caminho\para\mysql\data
port=3306
É comum encontrar problemas de autenticação na primeira conexão. Após iniciar o serviço, acessar sem senha e definir uma nova credencial para o usuário root geralmente resolve a questão.
Tipos de Dados Essenciais
Escolher o tipo de dados adequado para cada coluna é crucial para a performance e a integridade dos dados.
- Cadeias de Caracteres:
CHARpara comprimento fixo,VARCHARpara comprimento variável, eTEXTpara grandes volumes de texto. - Datas e Horas:
DATE,TIMEeDATETIMEpara armazenar informações tepmorais de diferentes granularidades. - Numéricos:
INTeTINYINTpara inteiros,FLOATeDOUBLEpara ponto flutuante.
Manipulação de Tabelas e Estruturas
A Linguagem de Definição de Dados (DDL) permite criar e modificar a estrutuar do banco.
Gerenciamento de Colunas
-- Adicionar uma nova coluna
ALTER TABLE cliente ADD COLUMN data_cadastro DATE;
-- Remover uma coluna
ALTER TABLE cliente DROP COLUMN apelido;
-- Alterar o tipo de dados de uma coluna
ALTER TABLE cliente MODIFY COLUMN nome VARCHAR(100);
Tipos de Restrições (Constraints)
As restrições garantem a integridade dos dados.
- Chave Primária (
PRIMARY KEY): Identifica unicamente cada registro. Pode ser simples ou composta. - Chave Estrangeira (
FOREIGN KEY): Cria um vínculo entre duas tabelas, garantindo a referencialidade. - Verificação (
CHECK): Limita os valores que podem ser inseridos em uma coluna. - Único (
UNIQUE): Garante que todos os valores em uma coluna sejam diferentes. - Não Nulo (
NOT NULL): Impede que valores nulos sejam inseridos. - Padrão (
DEFAULT): Fornece um valer padrão quando nenhum é especificado.
Motores de Armazenamento: InnoDB vs. MyISAM
A escolha do motor de armazenamento impacta diretamente a funcionalidade.
| Característica | MyISAM | InnoDB |
|---|---|---|
| Suporte a Transações | Não | Sim |
| Bloqueio de Linha | Não | Sim |
| Chaves Estrangeiras | Não | Sim |
| Espaço em Disco | Menor | Maior |
Manipulação de Dados (DML)
A Linguagem de Manipulação de Dados (DML) é usada para consultar e modificar os dados.
Consultas Básicas
-- Seleção com filtros e ordenação
SELECT primeiro_nome, sobrenome FROM funcionarios WHERE departamento = 'TI' ORDER BY sobrenome;
-- Paginação de resultados
SELECT * FROM produtos LIMIT 10, 20; -- Pula 10 registros e retorna os próximos 20.
Junções (JOINs)
As junções combinam linhas de duas ou mais tabelas com base em uma coluna relacionada.
-- Exemplo de INNER JOIN
SELECT pedidos.id, clientes.nome
FROM pedidos
INNER JOIN clientes ON pedidos.cliente_id = clientes.id;
-- Exemplo de LEFT JOIN
SELECT clientes.nome, pedidos.id
FROM clientes
LEFT JOIN pedidos ON clientes.id = pedidos.cliente_id;
Subconsultas e Filtragem Avançada
-- Encontrar clientes que fizeram pedidos acima da média
SELECT nome FROM clientes WHERE id IN (
SELECT cliente_id FROM pedidos WHERE valor > (SELECT AVG(valor) FROM pedidos)
);
-- Usar GROUP BY e HAVING para filtrar grupos
SELECT departamento, COUNT(*) AS total_funcionarios
FROM funcionarios
GROUP BY departamento
HAVING COUNT(*) > 5;
Funções de Agregação e Outras Úteis
Funções como COUNT(), SUM(), AVG(), MAX() e MIN() são frequentemente usadas com GROUP BY. Funções de data, como NOW() e CURDATE(), e funções de string, como CONCAT(), também são ferramentas essenciais no dia a dia.