Douglas Legramante

Douglas Legramante

Informática

Técnico em Informática · Banco de Dados

17-INSERT: Suas Tabelas Ganham Vida

INSERT: Suas Tabelas Ganham Vida

1. O momento que estávamos esperando

O 3º bimestre inteiro foi sobre estrutura: modelar entidades, desenhar relacionamentos, escrever CREATE TABLE. Mas até agora, todas as tabelas de vocês estão vazias. Hoje isso muda — vamos colocar dados de verdade dentro delas, usando o comando INSERT.

2. Antes de inserir: colocando o Model no servidor de verdade

Desde o Encontro 5, vocês modelaram a biblioteca inteira dentro de um Model (arquivo .mwb) — que nunca foi conectado a um servidor de verdade. Hoje, pela primeira vez, vamos usar o Forward Engineer para um servidor ao vivo, que pega o Model e cria o banco de dados de verdade no MySQL.

Isso é diferente do que fizemos no Encontro 11 (File → Export → Forward Engineer SQL CREATE Script), que só gerava um arquivo .sql para vocês lerem. Hoje o Workbench vai se conectar ao servidor e executar a criação de verdade.

Passo a passo

  1. Abra o Model da biblioteca (Encontros 5-9).
  2. Menu Database → Forward Engineer...
  3. Escolha a conexão do laboratório e clique em Next.
  4. Nas opções, mantenha os padrões e clique em Next.
  5. Na tela de seleção de objetos, confirme que as tabelas estão marcadas.
  6. Revise o script gerado (é o mesmo tipo de SQL que vocês já sabem ler) e clique em Next.
  7. Clique em Execute — o Workbench cria o banco de dados de verdade no servidor.
  8. Confira: no Navigator, conectado ao servidor, o schema da biblioteca deve aparecer, com todas as tabelas.

3. INSERT INTO — sintaxe básica

Com o schema criado no servidor (seção anterior), a estrutura já existe — mas está vazia. Agora vamos colocar dados dentro dela.

INSERT INTO tabela (coluna1, coluna2, coluna3)
VALUES (valor1, valor2, valor3);

Exemplo:

INSERT INTO aluno (matricula, nome, turma)
VALUES (1, 'Ana Silva', '1A');

4. Inserindo várias linhas de uma vez

INSERT INTO aluno (matricula, nome, turma) VALUES
(1, 'Ana Silva', '1A'),
(2, 'Bruno Costa', '1B'),
(3, 'Carla Dias', '1A');

Popular (verbo): preencher uma tabela com dados. "Popular o banco" significa inserir muitos registros nele — não tem relação com "popular" no sentido de fama. É assim que, na prática, bancos de dados costumam ser preenchidos: em lote, não linha por linha.

5. Por que sempre listar as colunas explicitamente

Dá pra escrever um INSERT sem listar as colunas (INSERT INTO aluno VALUES (1, 'Ana Silva', '1A')), mas isso exige um valor para cada coluna da tabela, exatamente na ordem em que foram criadas — um erro fácil de cometer, principalmente depois de um ALTER TABLE ADD COLUMN que muda a estrutura. Sempre liste as colunas explicitamente — é mais seguro e mais legível.

6. NULL e DEFAULT

  • Se uma coluna não tem NOT NULL e você não incluir ela na lista, o MySQL guarda NULL (sem valor) ali.
  • Se a coluna tiver um valor padrão definido, você pode escrever a palavra DEFAULT no lugar do valor.

7. FK e ordem de inserção: a integridade referencial na prática

Aqui está o motivo de tanto falarmos de chave estrangeira o bimestre inteiro: o MySQL não deixa você inserir um Empréstimo apontando para um Aluno que não existe. Se tentar, ele recusa com um erro de "foreign key constraint fails".

Isso significa que a ordem de inserção importa, exatamente como a ordem de CREATE TABLE importava (Encontro 15): primeiro insira nas tabelas "pai" (sem FK pendente), só depois nas tabelas "filhas" que dependem delas.

Exemplo concreto, na nossa biblioteca:

  1. Tabelas "pai" primeiro — aluno, livro, editora, funcionario: não têm FK pendente de nenhuma outra tabela ainda vazia, então podem ser inseridas em qualquer ordem entre si.
  2. Tabelas "filha" depois — emprestimo (precisa de aluno e livro já inseridos), cartao_biblioteca e telefone_aluno (precisam de aluno já inserido).

Regra geral: se a tabela X tem uma coluna FOREIGN KEY apontando para a tabela Y, a linha em Y precisa existir antes de você conseguir inserir a linha em X que a referencia.

8. Prévia do próximo encontro

No Encontro 18, vamos aprender a alterar (UPDATE) e apagar (DELETE) dados já inseridos — com um cuidado especial na cláusula WHERE.


Vídeos sobre o assunto

Para se aprofundar