6.1 การเปลี่ยนแปลงโครงสร้างของฐานข้อมูล

และสุดท้าย ส่วนที่อร่อยที่สุดของการทำงานกับฐานข้อมูลคือการเปลี่ยนแปลงฐานข้อมูล หากคุณคิดว่านี่เป็นเรื่องง่ายมาก นี่คือเกร็ดเล็กเกร็ดน้อยสำหรับคุณในหัวข้อ:


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!

สถานการณ์เหมือนกันทุกประการกับฐานข้อมูล คุณต้องการนำข้อมูลส่วนหนึ่งออกจากตารางแยกหรือไม่ โอเค คุณต้อง:

  • สร้างตารางใหม่
  • คัดลอกข้อมูลลงในตารางใหม่นี้
  • ลบคอลัมน์ออกจากตารางเก่า
  • เปลี่ยนแบบสอบถาม SQL ทั้งหมดที่อ้างถึงตารางเก่า
  • เพิ่มแบบสอบถาม SQL ที่จะเข้าถึงตารางใหม่
  • เปลี่ยนโค้ด Java ที่ทำงานกับตารางด้วยวิธีเก่า
  • เปลี่ยนสคริปต์การสำรองและกู้คืนเนื่องจากตอนนี้โครงสร้างตารางไม่ตรงกัน
  • หากคุณมีข้อมูลทดสอบสำหรับนักพัฒนา คุณต้องเปลี่ยนข้อมูลเหล่านั้นด้วย

แม้ว่าในความเป็นจริงจะเลวร้ายยิ่งกว่า:

โครงสร้างฐานข้อมูลใหม่:

  • ก่อนอื่น คุณเปลี่ยนโครงสร้างตารางในเครื่องของผู้พัฒนา
  • ถ้าอย่างนั้นคุณก็มั่นใจว่าโครงสร้างดังกล่าวดีกว่าจริงๆ
  • อนุมัติโครงสร้างฐานข้อมูลใหม่

สคริปต์การโยกย้าย:

  • คุณเขียนสคริปต์ที่จะเปลี่ยนข้อมูลตาราง ฯลฯ บนฐานข้อมูลจริง
  • เรียกใช้สคริปต์เหล่านี้บนเครื่องที่มีโครงสร้างฐานข้อมูลเก่า และดูว่ามีการเปลี่ยนแปลงอย่างไร
  • ตรวจสอบสถานที่สำคัญทั้งหมดของฐานใหม่

อัพเดทลดราคา

  • หยุดฐานข้อมูลการผลิต
  • ทำการสำรองข้อมูลทั้งหมด
  • เรียกใช้สคริปต์
  • เนื่องจากมักจะมีจำนวนมากในท้องตลาด สคริปต์เหล่านี้สามารถทำงานได้หลายชั่วโมง

คุณเปิดตัวผลิตภัณฑ์และหวังว่าคุณจะไม่ต้องย้อนกลับทุกอย่าง

6.2 คำสั่ง ALTER TABLE

ในทางกลับกัน สคริปต์เองซึ่งเปลี่ยนโครงสร้างตารางนั้นง่ายมาก ในบางวิธี จะคล้ายกับสคริปต์สร้างตาราง มุมมองทั่วไปของคำขอเปลี่ยนตาราง:

ALTER TABLE table
team 1,
team 2,
Team N

คำสั่งนั้นแตกต่างกันมาก แต่สามารถแยกความแตกต่างได้สามกลุ่มหลัก:

  • ADD- เพิ่มบางอย่างลงในตาราง
  • MODIFY- เปลี่ยนบางอย่างในตาราง
  • DROP- ลบบางอย่างในตาราง

และเมื่อฉันพูดอะไร มันไม่ได้เกี่ยวกับข้อมูล แต่เกี่ยวกับโครงสร้างของตาราง

ตัวอย่างเช่น คุณตัดสินใจที่จะเพิ่มคอลัมน์ใหม่ในตาราง จากนั้นคุณต้องดำเนินการค้นหาต่อไปนี้:

ALTER TABLE table
	ADD COLUMN Name type

ลองเขียนแบบสอบถามที่จะเพิ่มคอลัมน์อีเมล ในตาราง พนักงาน ของเรา :

ALTER TABLE employee
	ADD COLUMN email  VARCHAR(10)

ตอนนี้เรามาเปลี่ยนความยาวของสตริงอีเมลจาก 10 เป็น 100: สำหรับสิ่งนี้เราต้องการสคริปต์ใหม่:

ALTER TABLE employee
	MODIFY COLUMN email VARCHAR(100)

หากคุณต้องการเปลี่ยนแอตทริบิวต์บางคอลัมน์แต่เปลี่ยนประเภทไม่ได้ คุณต้องใช้คำ ALTER COLUMสั่ง มาตั้ง ค่า อีเมลเริ่มต้นกัน :

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

และสุดท้าย คอลัมน์สามารถลบออกได้หากคุณไม่ต้องการ:

ALTER TABLE employee
	DROP COLUMN email 

6.3 การเพิ่มและลบคีย์หลัก

และตัวอย่างที่เป็นประโยชน์เพิ่มเติม

สมมติว่าเราลืมประกาศ คอลัมน์ idเป็นคีย์หลัก คุณสามารถทำแยกกันได้เสมอผ่านALTER TABLE:

ALTER TABLE employee
	ADD PRIMARY KEY (email);

การลบออกนั้นง่ายยิ่งขึ้น:

ALTER TABLE employee
	DELETE PRIMARY KEY;