Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Ghép 2 cột và cập nhật cột thứ 3 trong MySQL với CONCAT và ALTER TABLE

Quy trình: 1. Thêm cột mới (ALTER TABLE ADD COLUMN), 2. Cập nhật cột mới bằng CONCAT 2 cột cũ.

Ví dụ minh họa

Tạo bảng tên/ho:

CREATE TABLE DemoTable1590 (FirstName VARCHAR(20), LastName VARCHAR(20));
INSERT INTO DemoTable1590 VALUES ('Adam','Smith'), ('John','Doe'), ('David','Miller');

Bước 1: Thêm cột FullName:

ALTER TABLE DemoTable1590 ADD COLUMN FullName VARCHAR(40);

Bước 2: Cập nhật ghép nối:

UPDATE DemoTable1590 SET FullName = CONCAT(FirstName, ' ', LastName);

Kết quả

FirstNameLastNameFullName
AdamSmithAdam Smith
JohnDoeJohn Doe
DavidMillerDavid Miller

Các cải tiến

1. Xử lý NULL

UPDATE DemoTable1590 
SET FullName = CONCAT_WS(' ', FirstName, LastName);

CONCAT_WS (With Separator) bỏ qua NULL tự động: CONCAT_WS(' ', 'John', NULL) → 'John' (không thành NULL).

2. Generated Column (MySQL 5.7+)

Không cần UPDATE, tự động tính:

ALTER TABLE DemoTable1590 
ADD COLUMN FullName VARCHAR(40) 
GENERATED ALWAYS AS (CONCAT_WS(' ', FirstName, LastName)) STORED;
  • STORED: Tính khi INSERT/UPDATE, lưu vật lý (có index được).
  • VIRTUAL: Tính khi SELECT, không lưu (mặc định).

3. Tạo index trên cột generated

ALTER TABLE DemoTable1590 ADD INDEX idx_fullname (FullName);

Chỉ hoạt động với STORED generated column.

Lưu ý ALTER TABLE

  • MySQL 5.6+ hỗ trợ ALGORITHM=INPLACE cho ADD COLUMN (không copy bảng, nhanh).
  • Bảng lớn: chạy ở giờ ít tải, hoặc dùng pt-online-schema-change (Percona Toolkit).