Latest web development tutorials

คำสั่ง 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 ตารางข้อมูลคุณลักษณะนี้เราจะมาแนะนำในบทต่อไป