6.1 Mudando a estrutura do banco de dados

E, finalmente, a parte mais deliciosa de trabalhar com bancos de dados é alterar o banco de dados. Se você acha que isso é algo muito simples, aqui está uma anedota para você sobre o assunto:


The service station master, wiping his hands, hands over the car to the client and chats along the way:
- But who do you work for?
- I am a cardiac surgeon, I perform heart operations.
- And they pay a lot?
- $20,000 per operation.
- Nothing for myself ... But we, in fact, are doing the same thing, sorting out the engines, and they pay me only $ 300 ...
- Do you want to earn as much as I do?
- Want...
The surgeon starts the engine in the car and turns to the master:
- Move over!

A situação é exatamente a mesma com bancos de dados. Você quer tirar uma parte dos dados na tabela separada? Ok, você precisa:

  • criar uma nova tabela
  • copie os dados para esta nova tabela
  • remover colunas da tabela antiga
  • alterar todas as consultas SQL que se referiam à tabela antiga
  • adicionar consultas SQL que acessarão a nova tabela
  • altere o código Java que funcionava com tabelas da maneira antiga
  • altere os scripts de backup e restauração, pois agora as estruturas da tabela não correspondem
  • se você tiver dados de teste para desenvolvedores, precisará alterá-los também

Embora na realidade seja ainda pior:

Nova estrutura do banco de dados:

  • primeiro você altera a estrutura da tabela na máquina do desenvolvedor
  • então você está convencido de que tal estrutura é realmente melhor
  • aprovar a nova estrutura do banco de dados

Scripts de migração:

  • você escreve scripts que irão alterar os dados da tabela, etc. em um banco de dados real
  • execute esses scripts em uma máquina com a estrutura de banco de dados antiga e veja como ela muda
  • verificar todos os locais críticos da nova base

atualização na venda

  • parar o banco de dados de produção
  • faça um backup completo
  • executando scripts
  • como geralmente existem muitos no mercado, esses scripts podem funcionar por horas

Você inicia o prod e espera não ter que reverter tudo.

6.2 Instrução ALTER TABLE

Por outro lado, o próprio script, que altera a estrutura da tabela, é muito simples. De certa forma, é semelhante a um script de criação de tabela. Visão geral de uma solicitação de alteração de tabela:

ALTER TABLE table
team 1,
team 2,
Team N

Os comandos são muito diferentes, mas três grupos principais podem ser distinguidos:

  • ADD- acrescenta algo à mesa
  • MODIFY- muda algo na tabela
  • DROP- exclui algo na tabela

E quando digo algo, não é sobre os dados, mas sobre a estrutura da tabela.

Por exemplo, você decide adicionar uma nova coluna à tabela e precisa executar a seguinte consulta:

ALTER TABLE table
	ADD COLUMN Name type

Vamos escrever uma consulta que adicionará uma coluna de e-mail à nossa tabela de funcionários :

ALTER TABLE employee
	ADD COLUMN email  VARCHAR(10)

Agora vamos alterar o comprimento da string de e-mail de 10 para 100: para isso precisamos de um novo script:

ALTER TABLE employee
	MODIFY COLUMN email VARCHAR(100)

Se você quiser alterar alguns atributos de uma coluna, mas não seu tipo, precisará do comando ALTER COLUM . Vamos definir o valor de e-mail padrão :

ALTER TABLE employee
	ALTER COLUMN email VARCHAR(100)  DEFAULT 'test@test.com'

E, finalmente, a coluna pode ser removida se você não precisar dela:

ALTER TABLE employee
	DROP COLUMN email 

6.3 Adicionando e removendo uma chave primária

E alguns exemplos mais úteis.

Digamos que esquecemos de declarar a coluna id como a chave primária. Você sempre pode fazê-lo separadamente via ALTER TABLE:

ALTER TABLE employee
	ADD PRIMARY KEY (email);

Removê-lo é ainda mais fácil:

ALTER TABLE employee
	DELETE PRIMARY KEY;