NVARCHAR trong MySQL: Chỉ là alias của VARCHAR
MySQL không có kiểu dữ liệu NVARCHAR thực sự như SQL Server. Khi khai báo NVARCHAR(n), MySQL tự động chuyển thành VARCHAR(n) và đưa ra cảnh báo (warning).
1. Tạo bảng với NVARCHAR
mysql> CREATE TABLE DemoTable (
StudentName NVARCHAR(40),
StudentCountryName VARCHAR(50)
);
Kết quả: Query OK, 0 rows affected, 1 warning
2. Kiểm tra cấu trúc bảng
mysql> DESC DemoTable;
Kết quả - Cả hai cột đều thành VARCHAR:
+--------------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+-------------+------+-----+---------+-------+ | StudentName | varchar(40) | YES | | NULL | | | StudentCountryName | varchar(50) | YES | | NULL | | +--------------------+-------------+------+-----+---------+-------+
3. Chèn và xem dữ liệu
mysql> INSERT INTO DemoTable VALUES ('Chris', 'US'), ('Tom', 'UK'), ('David', 'AUS');
mysql> SELECT * FROM DemoTable;
+-------------+--------------------+ | StudentName | StudentCountryName | +-------------+--------------------+ | Chris | US | | Tom | UK | | David | AUS | +-------------+--------------------+
Giải thích:
- MySQL lưu trữ Unicode bằng charset
utf8mb4(mặc định từ 8.0) VARCHARvới charset utf8mb4 đã hỗ trợ đầy đủ Unicode (kể cả emoji)- Không cần
NVARCHAR- chỉ dùngVARCHARvới charset phù hợp - Số trong ngoặc (40, 50) là số ký tự tối đa, không phải byte
Khuyến nghị: Luôn dùng VARCHAR(n) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci thay vì NVARCHAR.