MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Đặt Bộ ký tự và đối chiếu của một cột trong MariaDB

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 , VARCHARTEXT cột thành BINARY , VARBINARYBLOB 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ụ.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khắc phục “LỖI 1136 (21S01):Số lượng cột không khớp với số lượng giá trị ở hàng 1” khi Chèn Dữ liệu vào MariaDB

  2. Cách lấy tên tháng ngắn từ ngày trong MariaDB

  3. Cách cài đặt MariaDB trên Rocky Linux và AlmaLinux

  4. Cải thiện hiệu suất của Galera Cluster cho MySQL hoặc MariaDB

  5. Tổng quan về Phân cụm ProxySQL trong ClusterControl