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

เปลี่ยนขนาดคอลัมน์ VARCHAR ใน MySQL: ALTER TABLE MODIFY

ใช้ ALTER TABLE ... MODIFY COLUMN เพื่อเปลี่ยนขนาด VARCHAR

ไวยากรณ์

ALTER TABLE yourTableName MODIFY COLUMN yourColumnName VARCHAR(100) NOT NULL;

สร้างตารางตัวอย่าง

mysql> CREATE TABLE syntaxOfAlterCommandDemo (
    -> UserId INT,
    -> UserName VARCHAR(30),
    -> UserAge INT,
    -> UserCityName VARCHAR(50)
    -> );

ตรวจสอบโครงสร้างก่อน (UserName = VARCHAR(30))

mysql> DESC syntaxOfAlterCommandDemo;

ผลลัพธ์:

+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| UserId       | int(11)     | YES  |     | NULL    |       |
| UserName     | varchar(30) | YES  |     | NULL    |       |
| UserAge      | int(11)     | YES  |     | NULL    |       |
| UserCityName | varchar(50) | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+

เปลี่ยน UserName เป็น VARCHAR(100) NOT NULL

mysql> ALTER TABLE syntaxOfAlterCommandDemo
    -> MODIFY COLUMN UserName VARCHAR(100) NOT NULL;
Query OK, 0 rows affected (1.36 sec)

ตรวจสอบโครงสร้างหลังเปลี่ยน (UserName = VARCHAR(100) NOT NULL)

mysql> DESC syntaxOfAlterCommandDemo;

ผลลัพธ์:

+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| UserId       | int(11)      | YES  |     | NULL    |       |
| UserName     | varchar(100) | NO   |     | NULL    |       |
| UserAge      | int(11)      | YES  |     | NULL    |       |
| UserCityName | varchar(50)  | YES  |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+

ข้อสังเกตสำคัญ

  • MODIFY COLUMN ใช้เปลี่ยนชนิดข้อมูล ขนาด DEFAULT NOT NULL เป็นต้น
  • CHANGE COLUMN ใช้เปลี่ยนชื่อคอลัมน์ (และชนิดข้อมูลได้ด้วย)
  • การขยายขนาด (30 -> 100) ปลอดภัย ไม่สูญเสียข้อมูล
  • การลดขนาด (100 -> 30) อาจตัดข้อมูลที่ยาวเกินไป (Data Truncation)
  • เพิ่ม NOT NULL ต้องแน่ใจว่าไม่มีค่า NULL อยู่ในคอลัมน์นั้น

คำสั่ง ALTER อื่นๆ ที่น่าสนใจ

  • ADD COLUMN เพิ่มคอลัมน์
  • DROP COLUMN ลบคอลัมน์
  • RENAME COLUMN old_name TO new_name (MySQL 8.0+)
  • ALTER TABLE ... RENAME TO new_table_name เปลี่ยนชื่อตาราง