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 cột, 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ự trên một cột khi tạo bảng:
CREATE TABLE Events (
EventId INT AUTO_INCREMENT NOT NULL,
EventName VARCHAR(255)
CHARACTER SET utf8
COLLATE utf8_spanish_ci,
PRIMARY KEY (EventId)
);
Ở đây, tôi đã chỉ định bộ ký tự và đối chiếu ở cấp cột. Cũng có thể đặt chúng ở cấp bảng.
Thay đổi một cột 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 một cột hiện có:
ALTER TABLE Events
MODIFY EventName VARCHAR(255)
CHARACTER SET latin5 COLLATE latin5_turkish_ci;
EventName
cột hiện sử dụng đối chiếu và bộ ký tự mới.
Kiểm tra cột
Có một số cách để kiểm tra đối chiếu và bộ ký tự của một cột. Đây là một:
SELECT
column_name,
character_set_name,
collation_name
FROM information_schema.columns
WHERE table_name = 'Events'
AND column_name = 'EventName';
Kết quả:
+-------------+--------------------+-------------------+ | column_name | character_set_name | collation_name | +-------------+--------------------+-------------------+ | EventName | latin5 | latin5_turkish_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 Events
MODIFY EventName VARCHAR(255)
CHARACTER SET utf16 COLLATE latin5_turkish_ci;
Kết quả:
ERROR 1253 (42000): COLLATION 'latin5_turkish_ci' is not valid for CHARACTER SET 'utf16'
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ỉ 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
Cũng có thể chuyển đổi bộ ký tự ở cấp bảng. Khi chuyển đổi bộ ký tự ở cấp bảng, có khả năng MariaDB có thể tự động chuyển đổi loại dữ liệu thành loại dữ liệu có khả năng xử lý bộ ký tự mới tốt hơn.
Tuy nhiên, khi chúng tôi sử dụng MODIFY
trên các cột riêng lẻ và chỉ định rõ ràng kiểu dữ liệu (giống như chúng tôi đã làm trong các ví dụ trước), chúng tôi ngăn MariaDB chuyển đổi kiểu dữ liệu.
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ụ.