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 เราจะพูดถึงรายละเอียดเกี่ยวกับคำสั่งนี้ในบทถัดไป