Gerenciamento de Tabelas e Registros no MySQL

Tipos de Dados Essenciais

Para estruturar corretamente um banco de dados MySQL, é fundamental compreender as categorias de tipos de dados disponíveis:

  • Numéricos: TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE e DECIMAL (ideal para valores monetários).
  • Strings/Texto: CHAR (tamanho fixo), VARCHAR (tamanho variável), TINYTEXT, TEXT, LONGTEXT, além de tipos binários como BLOB e LONGBLOB.
  • Temporais: DATE (AAAA-MM-DD), TIME (HH:MM:SS), DATETIME, TIMESTAMP e YEAR.

Criação de Tabelas

A criação de uma tabela define a estrutura onde os dados serão armazenados. Abaixo, um exemplo de criação de uma tabela para gerenciar usuários:

CREATE TABLE usuarios (
    id_usuario INT PRIMARY KEY AUTO_INCREMENT,
    nome_completo VARCHAR(100) NOT NULL,
    registro_ativo BOOLEAN DEFAULT TRUE,
    idade TINYINT,
    setor_alocacao VARCHAR(50),
    remuneracao DECIMAL(10, 2)
);

Inspeção de Metadados

Existem diversos comandos para verificar a estrutura e as tabelas existentes no banco de dados:

  • Listar tabelas: SHOW TABLES;
  • Verificar estrutura da tabela: DESCRIBE usuarios; ou DESC usuarios;
  • Verificar script de criação: SHOW CREATE TABLE usuarios;
DESC usuarios;
/* Retorno esperado:
+-----------------+---------------+------+-----+---------+----------------+
| Field           | Type          | Null | Key | Default | Extra          |
+-----------------+---------------+------+-----+---------+----------------+
| id_usuario      | int           | NO   | PRI | NULL    | auto_increment |
| nome_completo   | varchar(100)  | NO   |     | NULL    |                |
| registro_ativo  | tinyint(1)    | YES  |     | 1       |                |
| idade           | tinyint       | YES  |     | NULL    |                |
| setor_alocacao  | varchar(50)   | YES  |     | NULL    |                |
| remuneracao     | decimal(10,2) | YES  |     | NULL    |                |
+-----------------+---------------+------+-----+---------+----------------+
*/

Modificando a Estrutura (DDL)

É possível alterar tabelas existentes sem a necessidade de removê-las e recriá-las:

Adicionar Colunas:

ALTER TABLE usuarios ADD COLUMN data_cadastro DATE NOT NULL;
ALTER TABLE usuarios ADD COLUMN cpf VARCHAR(14) AFTER nome_completo;

Modificar Atributos de uma Coluna:

ALTER TABLE usuarios MODIFY COLUMN idade INT DEFAULT 21;

Renomear Coluna:

ALTER TABLE usuarios CHANGE COLUMN setor_alocacao departamento VARCHAR(60);

Excluir Coluna:

ALTER TABLE usuarios DROP COLUMN registro_ativo;

Renomear a Tabela:

RENAME TABLE usuarios TO colaboradores;

Manipulação de Registros (DML)

Após definir a estrutura, utilizamos os comandos de menipulação para gerenciar o conteúdo.

Inserção de Dados:

-- Inserção simples
INSERT INTO colaboradores (nome_completo, idade, departamento, remuneracao) 
VALUES ('Ricardo Souza', 29, 'TI', 5500.00);

-- Inserção múltipla
INSERT INTO colaboradores (nome_completo, idade, departamento) 
VALUES ('Ana Costa', 24, 'RH'), 
       ('Marcos Lima', 35, 'Financeiro');

Atualização de Dados:

O uso da cláusula WHERE é crítico para evitar a alteração de todos os registros da tabela.

UPDATE colaboradores 
SET remuneracao = remuneracao * 1.1 
WHERE departamento = 'TI';

Exclusão de Dados:

Diferente do DROP (que remove a tabela) ou TRUNCATE (que reinicia a tabela), o DELETE remove linhas específicas.

DELETE FROM colaboradores WHERE id_usuario = 2;

Ao utilizar TRUNCATE TABLE colaboradores;, todos os dados são apagados e os contadores de AUTO_INCREMENT são resetados, operando de forma mais performática que um DELETE sem filtros.

Tags: MySQL SQL database-design DDL DML

Publicado em 7-25 08:29