ผลกระทบจากการเพิ่มขนาด VARCHAR ใน MySQL
การเพิ่มขนาดของคอลัมน์ VARCHAR (เช่น จาก VARCHAR(8) เป็น VARCHAR(100)) ไม่ส่งผลกระทบต่อข้อมูลที่มีอยู่แล้ว ข้อมูลเดิมจะคงอยู่สมบูรณ์
สร้างตาราง VARCHAR(8) และเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (Name VARCHAR(8));
Query OK, 0 rows affected (1.11 sec)
mysql> INSERT INTO DemoTable VALUES('John');
mysql> INSERT INTO DemoTable VALUES('Robert');
mysql> INSERT INTO DemoTable VALUES('Mike');
mysql> INSERT INTO DemoTable VALUES('Sam');
ตรวจสอบโครงสร้างตารางก่อนเปลี่ยน
mysql> DESC DemoTable;
ผลลัพธ์:
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| Name | varchar(8) | YES | | NULL | |
+-------+------------+------+-----+---------+-------+
1 row in set (0.04 sec)
ขยายขนาดเป็น VARCHAR(100)
mysql> ALTER TABLE DemoTable CHANGE Name Name VARCHAR(100);
Query OK, 4 rows affected (1.96 sec)
ตรวจสอบโครงสร้างหลังเปลี่ยน
mysql> DESC DemoTable;
ผลลัพธ์:
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| Name | varchar(100) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
1 row in set (0.01 sec)
คำอธิบาย
- การ เพิ่ม ขนาด VARCHAR เป็นการดำเนินการที่ปลอดภัย (metadata-only change ในหลายกรณี) ไม่ต้องเขียนทับข้อมูลเดิม
- ข้อมูล 'John', 'Robert', 'Mike', 'Sam' ยังคงอยู่สมบูรณ์
- แต่การ ลด ขนาด VARCHAR (เช่น 100 → 8) อาจทำให้ข้อมูลที่ยาวกว่าขนาดใหม่ถูกตัดทิ้ง (Truncated) และเกิด Warning/Error
- ควรสำรองข้อมูลก่อนลดขนาดคอลัมน์