คำสั่ง MySQL ALTER
เมื่อเราจำเป็นต้องปรับเปลี่ยนตารางข้อมูลหรือแก้ไขข้อมูลตารางข้อมูลคุณจะต้องใช้คำสั่ง MySQL ALTER
กวดวิชาก่อนการเริ่มต้นของบทนี้ให้เราสร้างตารางชื่อตาราง: testalter_tbl
root@host# mysql -u root -p password; Enter password:******* mysql> use w3big; 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)
ลบ, เพิ่มหรือแก้ไขเขตข้อมูลตาราง
ใช้คำสั่งต่อไปแก้ไขและข้อ DROP ลบคำสั่งที่สร้างขึ้นบนตารางฉันสาขา:
mysql> ALTER TABLE testalter_tbl DROP i;
ถ้าข้อมูลในตารางข้อมูลเดียวที่เหลืออยู่หนึ่งคนที่คุณไม่สามารถใช้ลดลงถึงลบฟิลด์
MySQL ใช้ประโยคเพิ่มเพิ่มคอลัมน์ต้องการแผ่นข้อมูลเป็นตัวอย่างของเขตข้อมูลในตารางเพิ่มฉัน testalter_tbl และกำหนดชนิดข้อมูล:
mysql> ALTER TABLE testalter_tbl ADD i INT;
หลังจากรันคำสั่งดังกล่าวเขตข้อมูลที่พวกเขาจะเพิ่มโดยอัตโนมัติไปยังจุดสิ้นสุดของเขตข้อมูลตารางข้อมูล
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)
หากคุณจำเป็นต้องระบุสถานที่ตั้งของสนามใหม่ (หลังจากตั้งอยู่ในเขต) คุณสามารถใช้ MySQL ให้ (ชุดบิตในคอลัมน์แรก) แรกของคำหลักตามชื่อฟิลด์
ลองคำสั่งเปลี่ยนแปลงตารางต่อไปนี้หลังจากการดำเนินงานที่ประสบความสำเร็จคอลัมน์ใช้ SHOW ดูโครงสร้างของตารางการเปลี่ยนแปลง:
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;
ครั้งแรกและหลังคำหลักเฉพาะสำหรับข้อเพิ่มดังนั้นหากคุณต้องการที่จะตั้งค่าตำแหน่งของฟิลด์ตารางข้อมูลเกี่ยวกับความจำเป็นที่จะใช้ DROP ลบข้อมูลแล้วใช้เพิ่มเพื่อเพิ่มข้อมูลและกำหนดตำแหน่ง
การปรับเปลี่ยนชื่อเขตข้อมูลและพิมพ์
หากคุณจำเป็นต้องปรับเปลี่ยนชนิดของฟิลด์และชื่อที่คุณสามารถใช้เปลี่ยนหรือแก้ไขข้อของคำสั่งแก้ไข
ยกตัวอย่างเช่นชนิดของฟิลด์ C จาก CHAR (1) ถ่าน (10) คุณสามารถรันคำสั่งต่อไปนี้:
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
การเปลี่ยนแปลงการใช้ประโยคไวยากรณ์แตกต่างกันมาก ภายหลังการเปลี่ยนแปลงคำหลักตามด้วยชื่อเขตข้อมูลที่คุณต้องการที่จะปรับเปลี่ยนแล้วระบุชื่อเขตข้อมูลใหม่และพิมพ์ ลองตัวอย่างต่อไปนี้:
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
ผลกระทบของการเปลี่ยนแปลงตารางค่าโมฆะและเริ่มต้น
เมื่อคุณปรับเปลี่ยนฟิลด์คุณสามารถระบุได้ว่าจะรวมหรือไม่ว่าจะเป็นเพียงการตั้งค่าเริ่มต้น
ตัวอย่างต่อไปนี้ฟิลด์ J ระบุไม่โมฆะและค่าเริ่มต้นเป็น 100
mysql> ALTER TABLE testalter_tbl -> MODIFY j BIGINT NOT NULL DEFAULT 100;
ถ้าคุณไม่ได้ตั้งค่าเริ่มต้น, MySQL โดยอัตโนมัติจะตั้งค่าเริ่มต้นสนามโมฆะ
ปรับเปลี่ยนค่าฟิลด์เริ่มต้น
คุณสามารถใช้แก้ไขปรับเปลี่ยนค่าเริ่มต้นของสนามลองตัวอย่างต่อไปนี้:
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)
นอกจากนี้คุณยังสามารถใช้คำสั่งเริ่มต้นที่มีการเปลี่ยนแปลงและวางคำสั่งลบข้อมูลที่เป็นตัวอย่าง:
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) Changing a Table Type:
ปรับเปลี่ยนรูปแบบตารางข้อมูลที่สามารถทำได้โดยใช้คำสั่งแก้ไขและข้อ TYPE ลองตัวอย่างต่อไปนี้เราจะปรับเปลี่ยนประเภทของตาราง testalter_tbl MyISAM นี้:
หมายเหตุ: ดูประเภทตารางข้อมูลสามารถใช้คำสั่งแสดงสถานะตาราง
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)
การปรับเปลี่ยนชื่อตาราง
หากคุณจำเป็นต้องปรับเปลี่ยนชื่อของตารางข้อมูลที่คุณสามารถใช้ประโยคเปลี่ยนชื่อในคำสั่งเปลี่ยนแปลงตารางเพื่อให้บรรลุ
ลองตัวอย่างต่อไปนี้ของตารางข้อมูล testalter_tbl เปลี่ยนชื่อ alter_tbl:
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
คำสั่งแก้ไขนอกจากนี้ยังสามารถใช้ในการสร้างและลบดัชนี MySQL ตารางข้อมูลคุณลักษณะนี้เราจะมาแนะนำในบทต่อไป