Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

การขยายขนาด VARCHAR ใน MySQL ส่งผลต่อข้อมูลภายในหรือไม่?

ผลกระทบจากการเพิ่มขนาด 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
  • ควรสำรองข้อมูลก่อนลดขนาดคอลัมน์