Bạn có thể chỉ định bộ ký tự và đối chiếu ở nhiều cấp độ khác nhau trong MariaDB. Bạn có thể chỉ định chúng ở cấp độ kết nối, cấp độ máy chủ, cấp độ cơ sở dữ liệu, cấp độ bảng và thậm chí cả cấp độ cột.
Bạn cũng có thể chỉ định một đối chiếu trong các truy vấn của mình để nó ghi đè bất kỳ đối chiếu nào đã được chỉ định trước đó ở các cấp nói trên.
Để đặt bộ ký tự và đối chiếu ở cấp bảng, hãy sử dụng CREATE TABLE
câu lệnh hoặc ALTER TABLE
câu lệnh (tùy thuộc vào việc bạn đang tạo bảng hay sửa đổi nó).
Khi tạo bảng
Dưới đây là một ví dụ về cách đặt đối chiếu và bộ ký tự khi tạo bảng:
CREATE TABLE Products (
ProductId CHAR(10),
ProductName VARCHAR(255) NOT NULL,
PRIMARY KEY (ProductId))
CHARACTER SET latin1
COLLATE latin1_general_ci;
Điều đó tạo ra một bảng có tên là Products
với latin1
bộ ký tự và đối chiếu của latin1_general_ci
.
Thay đổi một bảng hiện có
Dưới đây là một ví dụ về việc thay đổi đối chiếu và bộ ký tự trên bảng hiện có:
ALTER TABLE Products
CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;
Bây giờ nó sử dụng đối chiếu và bộ ký tự mới.
Cũng có thể bỏ qua CONVERT TO
phần:
ALTER TABLE Products
CHARACTER SET utf8
COLLATE utf8_spanish_ci;
Đối chiếu phải hợp lệ cho bộ ký tự
Khi đặt cả đối chiếu và bộ ký tự, bạn cần đảm bảo rằng đối chiếu hợp lệ cho bộ ký tự đã chọn và ngược lại. Nếu không, lỗi sẽ được trả về.
Dưới đây là một ví dụ về việc chỉ định bằng cách sử dụng đối chiếu không hợp lệ cho bộ ký tự được chỉ định:
ALTER TABLE Products
CHARACTER SET latin1
COLLATE utf8_spanish_ci;
Kết quả:
ERROR 1253 (42000): COLLATION 'utf8_spanish_ci' is not valid for CHARACTER SET 'latin1'
Nó cho chúng ta biết rằng đối chiếu đã chọn của chúng ta không hợp lệ cho bộ ký tự được chỉ định đã chọn của chúng ta.
Xem Danh sách đầy đủ các ảnh ghép được MariaDB hỗ trợ hoặc Danh sách đầy đủ các bộ ký tự được MariaDB hỗ trợ để biết danh sách các ảnh ghép và bộ ký tự phù hợp.
Chỉ chỉ định đối chiếu hoặc bộ ký tự
Bạn có thể chỉ định đối chiếu hoặc chỉ bộ ký tự (hoặc không):
- Nếu chỉ có bộ ký tự được cung cấp, đối chiếu mặc định cho bộ ký tự đó sẽ được sử dụng.
- Nếu chỉ cung cấp đối chiếu, bộ ký tự được liên kết sẽ được sử dụng.
- Nếu cả đối chiếu và bộ ký tự đều không được cung cấp, bảng mặc định sẽ được sử dụng.
Chuyển đổi sang Bộ ký tự yêu cầu nhiều byte hơn
Đối với VARCHAR
hoặc TEXT
cột, CONVERT TO CHARACTER SET
thay đổi kiểu dữ liệu nếu được yêu cầu để đảm bảo rằng cột mới đủ dài để lưu trữ nhiều ký tự như cột ban đầu.
Ví dụ, một ascii TEXT
cột yêu cầu một byte cho mỗi ký tự, vì vậy cột có thể chứa tối đa 65.535 ký tự. Nếu cột được chuyển đổi thành utf8, có thể yêu cầu tối đa 3 byte cho mỗi ký tự, vì vậy cột sẽ được chuyển đổi thành MEDIUMTEXT
(có độ dài tối đa là 16,777,215) để có thể chứa cùng một số ký tự.
Nếu bạn không muốn những thay đổi kiểu dữ liệu như vậy diễn ra, hãy sử dụng MODIFY
trên các cột riêng lẻ thay vào đó.
Ví dụ:
ALTER TABLE Products
MODIFY ProductName VARCHAR(255)
CHARACTER SET utf8;
Chuyển đổi sang Binary
CONVERT TO CHARACTER SET binary
sẽ chuyển đổi CHAR
, VARCHAR
và TEXT
cột thành BINARY
, VARBINARY
và BLOB
tương ứng.
Khi điều này đã được thực hiện, các cột như vậy sẽ không còn bộ ký tự nữa. Ngoài ra, chúng sẽ không còn bị ảnh hưởng bởi CONVERT TO CHARACTER SET
trong tương lai tuyên bố.
Kiểm tra đối chiếu và bộ ký tự trong MariaDB
Có nhiều cách khác nhau để kiểm tra đối chiếu và bộ ký tự trong MariaDB, tùy thuộc vào cấp độ mà bạn đang kiểm tra (máy chủ, cơ sở dữ liệu, bảng, cột, kết nối, v.v.). Xem Hiển thị đối chiếu trong MariaDB để biết các ví dụ.