6.1 Modifica della struttura del database

E infine, la parte più piacevole del lavoro con i database è la modifica del database. Se pensi che questo sia qualcosa di molto semplice, allora ecco un aneddoto per te sull'argomento:


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!

La situazione è esattamente la stessa con i database. Vuoi eliminare una parte dei dati nella tabella separata? Ok, hai bisogno di:

  • creare una nuova tabella
  • copiare i dati in questa nuova tabella
  • rimuovere le colonne dalla vecchia tabella
  • modificare tutte le query SQL che facevano riferimento alla vecchia tabella
  • aggiungere query SQL che accederanno alla nuova tabella
  • cambia il codice Java che funzionava con le tabelle alla vecchia maniera
  • modificare gli script di backup e ripristino, poiché ora le strutture delle tabelle non corrispondono
  • se disponi di dati di test per gli sviluppatori, devi modificarli anche tu

Anche se in realtà è anche peggio:

Nuova struttura del database:

  • per prima cosa cambi la struttura della tabella sulla macchina dello sviluppatore
  • allora sei convinto che una tale struttura sia davvero migliore
  • approvare la nuova struttura del database

Script di migrazione:

  • scrivi script che cambieranno i dati della tabella, ecc. Su un vero database
  • eseguire questi script su una macchina con la vecchia struttura del database e vedere come cambia
  • verificare tutti i punti critici della nuova base

Aggiornamento in vendita

  • arrestare il database di produzione
  • fare un backup completo
  • esecuzione di script
  • poiché di solito ce ne sono molti sul mercato, questi script possono funzionare per ore

Lanci il prod e speri di non dover ripristinare tutto.

6.2 Istruzione ALTER TABLE

Lo script stesso, invece, che modifica la struttura della tabella, è molto semplice. In un certo senso, è simile a uno script per la creazione di tabelle. Vista generale di una richiesta di modifica della tabella:

ALTER TABLE table
team 1,
team 2,
Team N

I comandi sono molto diversi, ma si possono distinguere tre gruppi principali:

  • ADD- aggiunge qualcosa al tavolo
  • MODIFY- cambia qualcosa nella tabella
  • DROP- cancella qualcosa nella tabella

E quando dico qualcosa, non riguarda i dati, ma la struttura della tabella.

Ad esempio, decidi di aggiungere una nuova colonna alla tabella, quindi devi eseguire la seguente query:

ALTER TABLE table
	ADD COLUMN Name type

Scriviamo una query che aggiungerà una colonna email alla nostra tabella dei dipendenti :

ALTER TABLE employee
	ADD COLUMN email  VARCHAR(10)

Ora cambiamo la lunghezza della stringa email da 10 a 100: per questo abbiamo bisogno di un nuovo script:

ALTER TABLE employee
	MODIFY COLUMN email VARCHAR(100)

Se vuoi cambiare alcuni attributi di una colonna, ma non il suo tipo, allora hai bisogno del comando ALTER COLUM . Impostiamo il valore email predefinito :

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

E infine, la colonna può essere rimossa se non ne hai bisogno:

ALTER TABLE employee
	DROP COLUMN email 

6.3 Aggiunta e rimozione di una chiave primaria

E alcuni esempi più utili.

Supponiamo di aver dimenticato di dichiarare la colonna id come chiave primaria. Puoi sempre farlo separatamente tramite ALTER TABLE:

ALTER TABLE employee
	ADD PRIMARY KEY (email);

Rimuoverlo è ancora più semplice:

ALTER TABLE employee
	DELETE PRIMARY KEY;