MySQL - แก้ไขคำสั่ง
MySQL ALTER คำสั่งมีประโยชน์มากเมื่อคุณต้องการเปลี่ยนชื่อตารางฟิลด์ตารางใด ๆ หรือถ้าคุณต้องการเพิ่มหรือลบคอลัมน์ที่มีอยู่ในตาราง
เริ่มต้นด้วยการสร้างตารางที่เรียกว่า testalter_tbl.
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> create table testalter_tbl
-> (
-> i INT,
-> c CHAR(1)
-> );
Query OK, 0 rows affected (0.05 sec)
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| i | int(11) | YES | | NULL | |
| c | char(1) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
การวางการเพิ่มหรือการเปลี่ยนตำแหน่งคอลัมน์
หากคุณต้องการวางคอลัมน์ที่มีอยู่ i จากตาราง MySQL ด้านบนคุณจะใช้ไฟล์ DROP อนุประโยคพร้อมกับ ALTER คำสั่งดังแสดงด้านล่าง -
mysql> ALTER TABLE testalter_tbl DROP i;
ก DROP อนุประโยคจะไม่ทำงานหากคอลัมน์นั้นเหลือเพียงคอลัมน์เดียวในตาราง
ในการเพิ่มคอลัมน์ให้ใช้ ADD และระบุนิยามคอลัมน์ คำสั่งต่อไปนี้เรียกคืนไฟล์i คอลัมน์ไปที่ testalter_tbl -
mysql> ALTER TABLE testalter_tbl ADD i INT;
หลังจากออกคำสั่งนี้ testalter จะมีคอลัมน์สองคอลัมน์ที่เหมือนกันเมื่อคุณสร้างตารางครั้งแรก แต่จะไม่มีโครงสร้างเหมือนกัน เนื่องจากมีคอลัมน์ใหม่ที่ถูกเพิ่มที่ส่วนท้ายของตารางโดยค่าเริ่มต้น ดังนั้นแม้ว่าi เดิมเป็นคอลัมน์แรกใน mytbl ตอนนี้เป็นคอลัมน์สุดท้าย
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c | char(1) | YES | | NULL | |
| i | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
ในการระบุว่าคุณต้องการให้คอลัมน์อยู่ในตำแหน่งใดตำแหน่งหนึ่งภายในตารางให้ใช้ FIRST เพื่อกำหนดให้เป็นคอลัมน์แรกหรือ AFTER col_name เพื่อระบุว่าควรวางคอลัมน์ใหม่หลัง col_name
ลองทำดังต่อไปนี้ ALTER TABLE งบใช้ SHOW COLUMNS หลังจากแต่ละคนเพื่อดูว่าแต่ละคนมีผลอย่างไร -
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT FIRST;
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT AFTER c;
ตัวระบุ FIRST และ AFTER ทำงานเฉพาะกับส่วนคำสั่ง ADD ซึ่งหมายความว่าหากคุณต้องการเปลี่ยนตำแหน่งคอลัมน์ที่มีอยู่ภายในตารางก่อนอื่นคุณต้องDROP มันแล้ว ADD ที่ตำแหน่งใหม่
การแก้ไข (การเปลี่ยน) คำจำกัดความของคอลัมน์หรือชื่อ
หากต้องการเปลี่ยนคำจำกัดความของคอลัมน์ให้ใช้ MODIFY หรือ CHANGE อนุประโยคพร้อมกับคำสั่ง ALTER
ตัวอย่างเช่นการเปลี่ยนคอลัมน์ c จาก CHAR (1) ถึง CHAR (10) คุณสามารถใช้คำสั่งต่อไปนี้ -
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
ด้วย CHANGEไวยากรณ์แตกต่างกันเล็กน้อย หลังจากคำหลัก CHANGE คุณตั้งชื่อคอลัมน์ที่คุณต้องการเปลี่ยนจากนั้นระบุคำจำกัดความใหม่ซึ่งรวมถึงชื่อใหม่
ลองใช้ตัวอย่างต่อไปนี้ -
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
หากตอนนี้คุณใช้ CHANGE เพื่อแปลงไฟล์ j จาก BIGINT กลับไปยัง INT โดยไม่ต้องเปลี่ยนชื่อคอลัมน์คำสั่งจะเป็นดังที่แสดงด้านล่าง -
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
The Effect of ALTER TABLE on Null and Default Value Attributes- เมื่อคุณแก้ไขหรือเปลี่ยนคอลัมน์คุณยังสามารถระบุได้ว่าคอลัมน์นั้นสามารถมีค่า NULL ได้หรือไม่และค่าเริ่มต้นคืออะไร ในความเป็นจริงถ้าคุณไม่ทำเช่นนี้ MySQL จะกำหนดค่าสำหรับแอตทริบิวต์เหล่านี้โดยอัตโนมัติ
บล็อกโค้ดต่อไปนี้เป็นตัวอย่างโดยที่ไฟล์ NOT NULL คอลัมน์จะมีค่าเป็น 100 โดยค่าเริ่มต้น
mysql> ALTER TABLE testalter_tbl
-> MODIFY j BIGINT NOT NULL DEFAULT 100;
หากคุณไม่ได้ใช้คำสั่งด้านบน MySQL จะเติมค่า NULL ในคอลัมน์ทั้งหมด
การแก้ไข (เปลี่ยนแปลง) ค่าเริ่มต้นของคอลัมน์
คุณสามารถเปลี่ยนค่าเริ่มต้นสำหรับคอลัมน์ใดก็ได้โดยใช้ไฟล์ ALTER คำสั่ง
ลองดูตัวอย่างต่อไปนี้
mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c | char(1) | YES | | NULL | |
| i | int(11) | YES | | 1000 | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
คุณสามารถลบข้อ จำกัด เริ่มต้นจากคอลัมน์ใดก็ได้โดยใช้คำสั่ง DROP พร้อมกับ ALTER คำสั่ง
mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c | char(1) | YES | | NULL | |
| i | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
การแก้ไข (การเปลี่ยนแปลง) ประเภทตาราง
คุณสามารถใช้ประเภทตารางได้โดยใช้ไฟล์ TYPEอนุประโยคพร้อมกับคำสั่ง ALTER ลองใช้ตัวอย่างต่อไปนี้เพื่อเปลี่ยนไฟล์testalter_tbl ถึง MYISAM ประเภทตาราง
หากต้องการทราบประเภทของตารางปัจจุบันให้ใช้ SHOW TABLE STATUS คำให้การ.
mysql> ALTER TABLE testalter_tbl TYPE = MYISAM;
mysql> SHOW TABLE STATUS LIKE 'testalter_tbl'\G
*************************** 1. row ****************
Name: testalter_tbl
Type: MyISAM
Row_format: Fixed
Rows: 0
Avg_row_length: 0
Data_length: 0
Max_data_length: 25769803775
Index_length: 1024
Data_free: 0
Auto_increment: NULL
Create_time: 2007-06-03 08:04:36
Update_time: 2007-06-03 08:04:36
Check_time: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
การเปลี่ยนชื่อ (การแก้ไข) ตาราง
ในการเปลี่ยนชื่อตารางให้ใช้ไฟล์ RENAME ตัวเลือกของ ALTER TABLE คำให้การ.
ลองใช้ตัวอย่างต่อไปนี้เพื่อเปลี่ยนชื่อ testalter_tbl ถึง alter_tbl.
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
คุณสามารถใช้คำสั่ง ALTER เพื่อสร้างและวางคำสั่ง INDEX ในไฟล์ MySQL เราจะพูดถึงรายละเอียดเกี่ยวกับคำสั่งนี้ในบทถัดไป