6.1 Mengubah struktur pangkalan data

Dan akhirnya, bahagian paling lazat bekerja dengan pangkalan data ialah menukar pangkalan data. Jika anda berpendapat bahawa ini adalah sesuatu yang sangat mudah, maka berikut ialah anekdot untuk anda mengenai perkara 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!

Keadaannya betul-betul sama dengan pangkalan data. Anda mahu mengeluarkan sebahagian daripada data dalam jadual berasingan? Okay, anda perlukan:

  • buat jadual baru
  • salin data ke dalam jadual baharu ini
  • alih keluar lajur daripada jadual lama
  • tukar semua pertanyaan SQL yang merujuk kepada jadual lama
  • tambah pertanyaan SQL yang akan mengakses jadual baharu
  • tukar kod Java yang berfungsi dengan jadual dengan cara lama
  • tukar skrip sandaran dan pulihkan, kerana sekarang struktur jadual tidak sepadan
  • jika anda mempunyai data ujian untuk pembangun, anda perlu menukarnya juga

Walaupun pada hakikatnya ia lebih teruk:

Struktur pangkalan data baharu:

  • mula-mula anda menukar struktur jadual pada mesin pembangun
  • maka anda yakin bahawa struktur sedemikian adalah benar-benar lebih baik
  • meluluskan struktur pangkalan data baharu

Skrip migrasi:

  • anda menulis skrip yang akan menukar data jadual, dsb. pada pangkalan data sebenar
  • jalankan skrip ini pada mesin dengan struktur pangkalan data lama dan lihat bagaimana ia berubah
  • sahkan semua tempat kritikal pangkalan baharu

Kemas kini jualan

  • hentikan pangkalan data pengeluaran
  • buat sandaran penuh
  • melaksanakan skrip
  • kerana biasanya terdapat banyak di pasaran, skrip ini boleh berfungsi selama berjam-jam

Anda melancarkan prod dan berharap anda tidak perlu mengembalikan semuanya.

6.2 penyataan ALTER JADUAL

Sebaliknya, skrip itu sendiri, yang mengubah struktur jadual, adalah sangat mudah. Dalam beberapa cara, ia serupa dengan skrip penciptaan jadual. Paparan umum permintaan perubahan jadual:

ALTER TABLE table
team 1,
team 2,
Team N

Perintah sangat berbeza, tetapi tiga kumpulan utama boleh dibezakan:

  • ADD- menambah sesuatu pada meja
  • MODIFY- menukar sesuatu dalam jadual
  • DROP- memadam sesuatu dalam jadual

Dan apabila saya mengatakan sesuatu, ia bukan mengenai data, tetapi mengenai struktur jadual.

Sebagai contoh, anda memutuskan untuk menambah lajur baharu pada jadual, maka anda perlu melaksanakan pertanyaan berikut:

ALTER TABLE table
	ADD COLUMN Name type

Mari tulis pertanyaan yang akan menambah lajur e-mel pada jadual pekerja kami :

ALTER TABLE employee
	ADD COLUMN email  VARCHAR(10)

Sekarang mari kita ubah panjang rentetan e-mel daripada 10 kepada 100: untuk ini kita memerlukan skrip baharu:

ALTER TABLE employee
	MODIFY COLUMN email VARCHAR(100)

Jika anda ingin menukar beberapa atribut lajur, tetapi bukan jenisnya, maka anda memerlukan arahan ALTER COLUM . Mari kita tetapkan nilai e-mel lalai :

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

Dan akhirnya, lajur boleh dialih keluar jika anda tidak memerlukannya:

ALTER TABLE employee
	DROP COLUMN email 

6.3 Menambah dan mengalih keluar kunci utama

Dan beberapa contoh yang lebih berguna.

Katakan kita terlupa mengisytiharkan lajur id sebagai kunci utama. Anda sentiasa boleh melakukannya secara berasingan melalui ALTER TABLE:

ALTER TABLE employee
	ADD PRIMARY KEY (email);

Mengalih keluarnya lebih mudah:

ALTER TABLE employee
	DELETE PRIMARY KEY;