MYSQL – การเปลี่ยนแปลง, DROP, RENAME, MODIFY
คำสั่ง ALTER คืออะไร?
ดังคำกล่าวที่ว่า การเปลี่ยนแปลงเป็นสิ่งเดียวที่คงที่
เมื่อเวลาผ่านไปความต้องการทางธุรกิจก็เปลี่ยนไปเช่นกัน เมื่อความต้องการทางธุรกิจเปลี่ยนไป การออกแบบฐานข้อมูลก็ต้องเปลี่ยนแปลงเช่นกัน
MySQL ให้ แก้ไข ฟังก์ชั่นที่ช่วยเรา รวมการเปลี่ยนแปลงการออกแบบฐานข้อมูลที่มีอยู่แล้ว.
คำสั่ง alter ใช้เพื่อแก้ไขฐานข้อมูล ตาราง มุมมอง หรืออ็อบเจ็กต์ฐานข้อมูลอื่นๆ ที่มีอยู่ซึ่งอาจจำเป็นต้องเปลี่ยนแปลงในระหว่างวงจรชีวิตของฐานข้อมูล
สมมติว่าเราได้ออกแบบฐานข้อมูลของเราเสร็จแล้วและได้นำไปใช้งานแล้ว ผู้ใช้ฐานข้อมูลของเราใช้งานอยู่ จากนั้นพวกเขาก็พบว่าข้อมูลสำคัญบางส่วนถูกละเลยในขั้นตอนการออกแบบ พวกเขาไม่ต้องการสูญเสียข้อมูลที่มีอยู่ แต่เพียงต้องการรวมข้อมูลใหม่เข้าด้วยกัน คำสั่ง alter มีประโยชน์ในสถานการณ์เช่นนี้ เราสามารถใช้คำสั่ง alter เพื่อเปลี่ยนประเภทข้อมูลของฟิลด์จากสตริงเป็นตัวเลข เปลี่ยนชื่อฟิลด์เป็นชื่อใหม่ หรือแม้แต่เพิ่มคอลัมน์ใหม่ในตาราง
แก้ไข – ไวยากรณ์
ไวยากรณ์พื้นฐานที่ใช้ในการเพิ่มคอลัมน์ลงในตารางที่มีอยู่แล้วแสดงไว้ด้านล่าง
ALTER TABLE `table_name` ADD COLUMN `column_name` `data_type`;
ที่นี่
- “แก้ไขตาราง `table_name`” เป็นคำสั่งที่บอก MySQL เซิร์ฟเวอร์เพื่อแก้ไขตารางชื่อ `table_name`
- “เพิ่มคอลัมน์ `column_name` `data_type`” เป็นคำสั่งที่บอก MySQL เซิร์ฟเวอร์เพื่อเพิ่มคอลัมน์ใหม่ชื่อ `column_name` พร้อมประเภทข้อมูล `data_type'
ลองสมมติว่า Myflix ได้เปิดตัวการเรียกเก็บเงินและการชำระเงินออนไลน์ เพื่อจุดประสงค์ดังกล่าว เราได้รับการขอให้เพิ่มช่องสำหรับหมายเลขบัตรเครดิตในตารางสมาชิก เราสามารถใช้คำสั่ง ALTER เพื่อดำเนินการดังกล่าว มาดูโครงสร้างของตารางสมาชิกก่อนจะแก้ไขอะไร สคริปต์ที่แสดงด้านล่างนี้ช่วยให้เราดำเนินการดังกล่าวได้
SHOW COLUMNS FROM `members`;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
เราสามารถใช้สคริปต์ที่แสดงด้านล่างเพื่อเพิ่มฟิลด์ใหม่ให้กับตารางสมาชิก
ALTER TABLE `members` ADD COLUMN `credit_card_number` VARCHAR(25);
ดำเนินการสคริปต์ข้างต้นใน MySQL Myflixdb เพิ่มคอลัมน์ใหม่ชื่อหมายเลขบัตรเครดิตลงในตารางสมาชิกโดยใช้ VARCHAR เป็นประเภทข้อมูล เมื่อดำเนินการสคริปต์แสดงคอลัมน์แล้ว จะได้ผลลัพธ์ดังต่อไปนี้
SHOW COLUMNS FROM `members`;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL | |||
credit_card_number | varchar(25) | YES |
ดังที่คุณเห็นจากผลลัพธ์ที่ส่งคืน หมายเลขบัตรเครดิตได้ถูกเพิ่มลงในตารางสมาชิกแล้ว ข้อมูลที่มีอยู่ในข้อมูลของสมาชิกจะไม่ได้รับผลกระทบจากการเพิ่มคอลัมน์ใหม่
คำสั่ง DROP คืออะไร?
คำสั่ง DROP ถูกใช้เพื่อ
- ลบฐานข้อมูลออกจาก MySQL เซิร์ฟเวอร์
- ลบวัตถุ (เช่น Table , Column) ออกจากฐานข้อมูล
ตอนนี้เรามาดูตัวอย่างการใช้งานจริงที่ใช้คำสั่ง DROP กัน
ในตัวอย่างก่อนหน้าของเราใน Alter Command เราได้เพิ่มคอลัมน์ชื่อหมายเลขบัตรเครดิตลงในตารางสมาชิก
สมมติว่าฟังก์ชันการเรียกเก็บเงินออนไลน์จะใช้เวลาสักพักและเราต้องการลบคอลัมน์บัตรเครดิต
เราสามารถใช้สคริปต์ต่อไปนี้ได้
ALTER TABLE `members` DROP COLUMN `credit_card_number`;
การดำเนินการตามสคริปต์ด้านบนจะปล่อยคอลัมน์ credit_card_number ออกจากตารางสมาชิก
ตอนนี้เรามาดูคอลัมน์ในตารางสมาชิกเพื่อยืนยันว่าคอลัมน์ของเราถูกละทิ้งหรือไม่
SHOW COLUMNS FROM `members`;
ดำเนินการสคริปต์ข้างต้นใน MySQL การใช้งาน workbench กับ myflixdb จะให้ผลลัพธ์ดังต่อไปนี้
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
โปรดสังเกตว่าหมายเลขบัตรเครดิตหลุดออกจากรายการฟิลด์
วางตาราง
ไวยากรณ์ในการวางตารางจากฐานข้อมูลมีดังนี้ -
DROP TABLE `sample_table`;
ลองดูตัวอย่าง
DROP TABLE `categories_archive`;
การรันสคริปต์ด้านบนจะลบตารางชื่อ ` categories_archive ` ออกจากฐานข้อมูลของเรา
คำสั่งเปลี่ยนชื่อคืออะไร?
คำสั่งเปลี่ยนชื่อถูกใช้เพื่อ เปลี่ยนชื่อของวัตถุฐานข้อมูลที่มีอยู่ (เช่นตาราง,คอลัมน์) เป็นชื่อใหม่.
การเปลี่ยนชื่อตารางไม่ได้ทำให้ข้อมูลใดๆ ที่อยู่ภายในตารางสูญหาย
ไวยากรณ์:-
คำสั่งเปลี่ยนชื่อมีรูปแบบพื้นฐานดังต่อไปนี้
RENAME TABLE `current_table_name` TO `new_table_name`;
สมมติว่าเราต้องการเปลี่ยนชื่อตาราง movierentals เป็น movie_rentals เราสามารถใช้สคริปต์ที่แสดงด้านล่างเพื่อให้บรรลุเป้าหมายนั้น
RENAME TABLE `movierentals` TO `movie_rentals`;
การดำเนินการสคริปต์ด้านบนจะเปลี่ยนชื่อตาราง `movierentals` เป็น `movie_rentals`
ตอนนี้เราจะเปลี่ยนชื่อตาราง movie_rentals กลับเป็นชื่อเดิม
RENAME TABLE `movie_rentals` TO `movierentals`;
เปลี่ยนคำหลัก
เปลี่ยนคำหลักช่วยให้คุณสามารถ
- เปลี่ยนชื่อคอลัมน์
- เปลี่ยนชนิดข้อมูลคอลัมน์
- เปลี่ยนข้อจำกัดของคอลัมน์
ลองดูตัวอย่าง ฟิลด์ชื่อเต็มในตารางสมาชิกเป็นประเภทข้อมูล varchar และมีความกว้าง 150
SHOW COLUMNS FROM `members`;
ดำเนินการสคริปต์ข้างต้นใน MySQL การใช้งาน workbench กับ myflixdb จะให้ผลลัพธ์ดังต่อไปนี้
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(150) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
สมมติว่าเราต้องการ
- เปลี่ยนชื่อฟิลด์จาก "full_names" เป็น "fullname
- เปลี่ยนเป็นชนิดข้อมูลถ่านที่มีความกว้าง 250
- เพิ่มข้อจำกัด NOT NULL
เราสามารถทำได้โดยใช้คำสั่ง change ดังนี้ -
ALTER TABLE `members` CHANGE COLUMN `full_names` `fullname` char(250) NOT NULL;
ดำเนินการสคริปต์ข้างต้นใน MySQL workbench กับ myflixdb แล้วรันสคริปต์แสดงคอลัมน์ที่กำหนดไว้ข้างต้นให้ผลลัพธ์ดังต่อไปนี้
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(250) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
แก้ไขคำหลัก
คำหลัก MODIFY ช่วยให้คุณสามารถ
- แก้ไขชนิดข้อมูลคอลัมน์
- แก้ไขข้อจำกัดของคอลัมน์
ในตัวอย่าง CHANGE ข้างต้น เราต้องเปลี่ยนชื่อฟิลด์และรายละเอียดอื่นๆ ด้วย การละเว้นชื่อฟิลด์จากคำสั่ง CHANGE จะทำให้เกิดข้อผิดพลาด สมมติว่าเราสนใจเพียงการเปลี่ยนประเภทข้อมูลและข้อจำกัดของฟิลด์โดยไม่กระทบต่อชื่อฟิลด์ เราสามารถใช้คีย์เวิร์ด MODIFY เพื่อดำเนินการดังกล่าวได้
สคริปต์ด้านล่างเปลี่ยนความกว้างของฟิลด์ "ชื่อเต็ม" จาก 250 เป็น 50
ALTER TABLE `members`MODIFY `fullname` char(50) NOT NULL;
ดำเนินการสคริปต์ข้างต้นใน MySQL workbench กับ myflixdb แล้วรันสคริปต์แสดงคอลัมน์ที่กำหนดไว้ด้านบน ซึ่งจะให้ผลลัพธ์ดังแสดงด้านล่าง
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(50) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
หลังจากคำหลัก
สมมติว่าเราต้องการเพิ่มคอลัมน์ใหม่ในตำแหน่งเฉพาะในตาราง
เราสามารถใช้คำสั่ง alter ร่วมกับคีย์เวิร์ด AFTER ได้
สคริปต์ด้านล่างเพิ่ม “date_of_registration” หลังวันเกิดในตารางสมาชิก
ALTER TABLE `members` ADD `date_of_registration` date NULL AFTER `date_of_birth`;
ดำเนินการสคริปต์ข้างต้นใน MySQL workbench กับ myflixdb แล้วรันสคริปต์แสดงคอลัมน์ที่กำหนดไว้ด้านบน ซึ่งจะให้ผลลัพธ์ดังแสดงด้านล่าง
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(50) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
date_of_registration | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
สรุป
- คำสั่ง alter ถูกใช้เมื่อเราต้องการแก้ไขฐานข้อมูลหรือวัตถุใด ๆ ที่มีอยู่ในฐานข้อมูล
- คำสั่ง drop ใช้สำหรับลบฐานข้อมูล MySQL เซิร์ฟเวอร์ หรือวัตถุภายในฐานข้อมูล
- คำสั่งเปลี่ยนชื่อใช้เพื่อเปลี่ยนชื่อตารางเป็นชื่อตารางใหม่
- คีย์เวิร์ด Change ช่วยให้คุณสามารถเปลี่ยนชื่อคอลัมน์ ประเภทข้อมูล และข้อจำกัดได้
- แก้ไขคำสำคัญช่วยให้คุณสามารถแก้ไขชนิดข้อมูลคอลัมน์และข้อจำกัดได้
- คำสำคัญ After ใช้เพื่อระบุตำแหน่งของคอลัมน์ในตาราง