6.1 Mengubah struktur basis data

Dan terakhir, bagian paling enak dari bekerja dengan database adalah mengubah database. Jika menurut Anda ini adalah sesuatu yang sangat sederhana, berikut adalah anekdot untuk Anda tentang masalah ini:


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!

Situasinya persis sama dengan database. Anda ingin mengambil sebagian data di tabel terpisah? Oke, Anda membutuhkan:

  • membuat tabel baru
  • salin data ke tabel baru ini
  • hapus kolom dari tabel lama
  • ubah semua kueri SQL yang merujuk ke tabel lama
  • tambahkan kueri SQL yang akan mengakses tabel baru
  • ubah kode Java yang berfungsi dengan tabel dengan cara lama
  • ubah skrip pencadangan dan pemulihan, karena sekarang struktur tabel tidak cocok
  • jika Anda memiliki data pengujian untuk pengembang, Anda juga perlu mengubahnya

Meskipun kenyataannya lebih buruk:

Struktur basis data baru:

  • pertama Anda mengubah struktur tabel di mesin pengembang
  • maka Anda yakin bahwa struktur seperti itu benar-benar lebih baik
  • menyetujui struktur database baru

Skrip migrasi:

  • Anda menulis skrip yang akan mengubah data tabel, dll. di database nyata
  • jalankan skrip ini di mesin dengan struktur database lama dan lihat bagaimana perubahannya
  • verifikasi semua tempat kritis dari pangkalan baru

Pembaruan dijual

  • hentikan basis data produksi
  • membuat cadangan penuh
  • mengeksekusi skrip
  • karena biasanya ada banyak di pasaran, skrip ini dapat bekerja berjam-jam

Anda meluncurkan prod dan berharap Anda tidak perlu mengembalikan semuanya.

6.2 pernyataan ALTER TABLE

Di sisi lain, skrip itu sendiri yang mengubah struktur tabel sangat sederhana. Dalam beberapa hal, ini mirip dengan skrip pembuatan tabel. Tampilan umum permintaan perubahan tabel:

ALTER TABLE table
team 1,
team 2,
Team N

Perintah sangat berbeda, tetapi tiga kelompok utama dapat dibedakan:

  • ADD- menambahkan sesuatu ke meja
  • MODIFY- mengubah sesuatu di tabel
  • DROP- menghapus sesuatu di tabel

Dan ketika saya mengatakan sesuatu, ini bukan tentang datanya, tetapi tentang struktur tabelnya.

Misalnya, Anda memutuskan untuk menambahkan kolom baru ke tabel, maka Anda perlu menjalankan kueri berikut:

ALTER TABLE table
	ADD COLUMN Name type

Mari tulis kueri yang akan menambahkan kolom email ke tabel karyawan kita :

ALTER TABLE employee
	ADD COLUMN email  VARCHAR(10)

Sekarang mari ubah panjang string email dari 10 menjadi 100: untuk ini kita memerlukan skrip baru:

ALTER TABLE employee
	MODIFY COLUMN email VARCHAR(100)

Jika Anda ingin mengubah beberapa atribut kolom, tetapi bukan tipenya, maka Anda memerlukan perintah ALTER COLUM . Mari kita tetapkan nilai email default :

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

Dan terakhir, kolom tersebut dapat dihapus jika Anda tidak membutuhkannya:

ALTER TABLE employee
	DROP COLUMN email 

6.3 Menambahkan dan menghapus kunci utama

Dan beberapa contoh yang lebih bermanfaat.

Katakanlah kita lupa mendeklarasikan kolom id sebagai primary key. Anda selalu dapat melakukannya secara terpisah melalui ALTER TABLE:

ALTER TABLE employee
	ADD PRIMARY KEY (email);

Menghapusnya bahkan lebih mudah:

ALTER TABLE employee
	DELETE PRIMARY KEY;