ไดเรกทอรีบทความ
MySQL แก้ไขเพิ่มเพื่อเพิ่มตำแหน่งสนามหลายตำแหน่ง? คำอธิบายโดยละเอียดของการใช้คำสั่งคอลัมน์แก้ไข
MySQL เปลี่ยนแปลงคำสั่ง
เมื่อเราต้องการแก้ไขชื่อตารางข้อมูลหรือแก้ไขเขตข้อมูลตารางข้อมูล เราจำเป็นต้องใช้คำสั่ง MySQL ALTER
ก่อนเริ่มบทช่วยสอนนี้ ให้สร้างตารางชื่อ: testalter_tbl
root@host# mysql -u root -p password; Enter password:******* mysql> use chenweiliang; 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)
ลบ เพิ่ม หรือแก้ไขเขตข้อมูลตาราง
คำสั่งต่อไปนี้ใช้คำสั่ง ALTER พร้อมคำสั่ง DROP เพื่อวางคอลัมน์ i ของตารางที่สร้างด้านบน:
mysql> ALTER TABLE testalter_tbl DROP i;
คุณไม่สามารถใช้ DROP เพื่อลบเขตข้อมูลได้หากมีเพียงหนึ่งเขตข้อมูลที่เหลืออยู่ในตารางข้อมูล
ส่วนคำสั่ง ADD ใช้ใน MySQL เพื่อเพิ่มคอลัมน์ลงในตารางข้อมูล ตัวอย่างต่อไปนี้ เพิ่มฟิลด์ i ลงในตาราง testalter_tbl และกำหนดประเภทข้อมูล:
mysql> ALTER TABLE testalter_tbl ADD i INT;
หลังจากดำเนินการคำสั่งข้างต้น ฟิลด์ i จะถูกเพิ่มโดยอัตโนมัติที่ส่วนท้ายของฟิลด์ตารางข้อมูล
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 ที่ MySQL จัดหาให้ (setการวางตำแหน่งคอลัมน์แรก) หลังชื่อฟิลด์ (ตั้งค่าหลังฟิลด์)
ลองใช้คำสั่ง 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;
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
ผลกระทบของ ALTER TABLE ต่อค่า Null และค่าเริ่มต้น
เมื่อคุณแก้ไขฟิลด์ คุณสามารถระบุว่าจะรวมเท่านั้นหรือว่าจะตั้งค่าเริ่มต้นหรือไม่
ตัวอย่างต่อไปนี้ระบุว่าฟิลด์ j ไม่ใช่ 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)
คุณยังสามารถใช้คำสั่ง ALTER กับส่วนคำสั่ง DROP เพื่อลบค่าเริ่มต้นของฟิลด์ ดังตัวอย่างต่อไปนี้:
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:
การปรับเปลี่ยนประเภทตารางข้อมูลสามารถทำได้โดยใช้คำสั่ง ALTER และคำสั่งย่อย TYPEลองตัวอย่างต่อไปนี้ ซึ่งเราเปลี่ยนประเภทของตาราง testalter_tbl เป็น MYISAM:
หมายเหตุ:หากต้องการดูประเภทตารางข้อมูล คุณสามารถใช้คำสั่ง SHOW TABLE STATUS
mysql> ALTER TABLE testalter_tbl ENGINE = 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 สามารถใช้เพื่อสร้างและลบดัชนีในตาราง MySQL ซึ่งเราจะกล่าวถึงในบทต่อไป
ปรับเปลี่ยนการใช้งานอื่นๆ
แก้ไขเอ็นจิ้นการจัดเก็บ: ปรับเปลี่ยนเป็น myisam
alter table tableName engine=myisam;
ลบข้อ จำกัด ของคีย์ต่างประเทศ: keyName เป็นนามแฝงของคีย์ต่างประเทศ
alter table tableName drop foreign key keyName;
ตำแหน่งสัมพัทธ์ของฟิลด์ที่แก้ไข: ที่นี่ name1 เป็นฟิลด์ที่จะแก้ไข type1 เป็นประเภทดั้งเดิมของฟิลด์ ก่อน และ หลัง สามารถเลือกได้ ซึ่งควรจะชัดเจน อันดับแรก จะถูกวางไว้ก่อน และ หลัง จะถูกวางไว้หลังชื่อ2 สนาม
alter table tableName modify name1 type1 first|after name2;
หวัง Chen Weiliang บล็อก ( https://www.chenweiliang.com/ ) แชร์ "MySQL แก้ไขเพิ่มเพื่อเพิ่มตำแหน่งฟิลด์หลายตำแหน่ง? คำอธิบายโดยละเอียดเกี่ยวกับการใช้คำชี้แจงคอลัมน์แก้ไข" มีประโยชน์สำหรับคุณ
ยินดีต้อนรับสู่การแบ่งปันลิงค์ของบทความนี้:https://www.chenweiliang.com/cwl-495.html
ยินดีต้อนรับสู่ช่อง Telegram ของบล็อกของ Chen Weiliang เพื่อรับข่าวสารล่าสุด!
📚 คู่มือนี้มีคุณค่ามหาศาล 🌟 นี่เป็นโอกาสที่หายาก อย่าพลาด! ⏰⌛💨
แชร์และชอบถ้าคุณชอบ!
การแบ่งปันและไลค์ของคุณเป็นแรงจูงใจอย่างต่อเนื่องของเรา!