Trong MySQL, đối chiếu có thể được áp dụng ở nhiều cấp độ. Nó có thể được áp dụng ở cấp độ máy chủ, cấp độ kết nối, cấp độ cơ sở dữ liệu, cấp độ bảng và thậm chí ở 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 sẽ ghi đè bất kỳ đối chiếu nào đã được áp dụng ở cấp độ cơ sở dữ liệu, bảng hoặc cột
Dưới đây là cách tìm hiểu đối chiếu nào đang được áp dụng ở mỗi cấp độ này
Phím tắt cho kết nối, máy chủ và đối chiếu cơ sở dữ liệu
Cách nhanh nhất để lấy thông tin đối chiếu cho kết nối, máy chủ và cơ sở dữ liệu là sử dụng câu lệnh sau. Câu lệnh này trả về tất cả các biến hệ thống bắt đầu bằng
SELECT @@collation_server;0
SHOW VARIABLES LIKE 'collation%';
Điều này trả về đối chiếu cho máy chủ, kết nối và cơ sở dữ liệu. Như thế này
+----------------------+--------------------+ | Variable_name | Value | +----------------------+--------------------+ | collation_connection | utf8mb4_0900_ai_ci | | collation_database | utf8_general_ci | | collation_server | utf8mb4_0900_ai_ci | +----------------------+--------------------+
Bạn cũng có thể trả về từng biến hệ thống này một cách riêng biệt nếu cần. Xem bên dưới để được hướng dẫn về cách làm điều đó
Đối chiếu cấp máy chủ
Chạy lệnh sau sẽ trả về đối chiếu mặc định của máy chủ
SELECT @@collation_server;
kết quả ví dụ
+--------------------+ | @@collation_server | +--------------------+ | utf8mb4_0900_ai_ci | +--------------------+
Đối chiếu mức kết nối
Khi bạn chạy truy vấn đối với cơ sở dữ liệu MySQL, MySQL sẽ sử dụng một loạt các biến hệ thống để xác định bộ ký tự và đối chiếu nào sẽ sử dụng bất cứ khi nào truy vấn được chạy. Nếu máy khách sử dụng một bộ ký tự khác với máy chủ, thì MySQL có thể dịch nó thành một bộ ký tự và đối chiếu thích hợp
Khi gửi kết quả truy vấn trở lại máy khách, MySQL có thể dịch các kết quả này trở lại thành một bộ ký tự khác hoàn toàn nếu được yêu cầu. MySQL sử dụng các biến hệ thống để xác định bộ ký tự và đối chiếu nào sẽ được sử dụng ở mỗi bước này
Phần sau đây tách ra đối chiếu kết nối [bạn có thể sử dụng cùng một cú pháp cho bất kỳ biến hệ thống nào]
SELECT @@collation_connection;
kết quả ví dụ
+------------------------+ | @@collation_connection | +------------------------+ | utf8mb4_0900_ai_ci | +------------------------+
Bạn cũng có thể trả về tất cả các biến hệ thống của bộ ký tự bằng truy vấn sau
SHOW VARIABLES LIKE 'character_set%';
kết quả ví dụ
________số 8Đối chiếu cấp cơ sở dữ liệu
Câu lệnh sau đây có thể được sử dụng để kiểm tra đối chiếu của một cơ sở dữ liệu nhất định
USE Music; SELECT @@character_set_database, @@collation_database;
kết quả ví dụ
SHOW VARIABLES LIKE 'collation%';0
Ngoài ra, bạn có thể sử dụng câu lệnh sau [loại bỏ nhu cầu thay đổi cơ sở dữ liệu mặc định]
+----------------------+--------------------+ | Variable_name | Value | +----------------------+--------------------+ | collation_connection | utf8mb4_0900_ai_ci | | collation_database | utf8_general_ci | | collation_server | utf8mb4_0900_ai_ci | +----------------------+--------------------+0
kết quả ví dụ
+----------------------+--------------------+ | Variable_name | Value | +----------------------+--------------------+ | collation_connection | utf8mb4_0900_ai_ci | | collation_database | utf8_general_ci | | collation_server | utf8mb4_0900_ai_ci | +----------------------+--------------------+1
Đối chiếu cấp độ bảng
Chạy câu lệnh sau sẽ trả về một loạt các cột cung cấp thông tin về bất kỳ/các bảng phù hợp nào. Một trong những cột này được gọi là Đối chiếu và nó cung cấp đối chiếu của tất cả các bảng phù hợp
+----------------------+--------------------+ | Variable_name | Value | +----------------------+--------------------+ | collation_connection | utf8mb4_0900_ai_ci | | collation_database | utf8_general_ci | | collation_server | utf8mb4_0900_ai_ci | +----------------------+--------------------+2
Tất nhiên, bạn sẽ cần thay thế
SELECT @@collation_server;1 bằng tên bảng của riêng bạn. Và bạn có thể bỏ qua các dấu phần trăm nếu bạn không nghĩ rằng chúng cần thiết. Tuyên bố này cũng chấp nhận các mệnh đề khác, chẳng hạn như
SELECT @@collation_server;2,
SELECT @@collation_server;3 và
SELECT @@collation_server;4, vì vậy điều này cung cấp cho bạn một số tùy chọn khi xây dựng tuyên bố của mình
Một vấn đề với câu lệnh trước đó là nó trả về rất nhiều cột và bạn có thể buộc phải cuộn sang một bên để tìm cột đối chiếu. Nếu bạn chỉ quan tâm đến thông tin đối chiếu, bạn có thể truy vấn
SELECT @@collation_server;5. Bạn cũng có thể trả lại đối chiếu cho tất cả các bảng trong một cơ sở dữ liệu nhất định nếu được yêu cầu. Đây là cách để làm điều đó
+----------------------+--------------------+ | Variable_name | Value | +----------------------+--------------------+ | collation_connection | utf8mb4_0900_ai_ci | | collation_database | utf8_general_ci | | collation_server | utf8mb4_0900_ai_ci | +----------------------+--------------------+3
Kết quả ví dụ
+----------------------+--------------------+ | Variable_name | Value | +----------------------+--------------------+ | collation_connection | utf8mb4_0900_ai_ci | | collation_database | utf8_general_ci | | collation_server | utf8mb4_0900_ai_ci | +----------------------+--------------------+4
Đối chiếu cấp độ cột
Chạy truy vấn sau đây trả về thông tin về từng cột trong một bảng nhất định. Điều này bao gồm các thông tin đối chiếu
+----------------------+--------------------+ | Variable_name | Value | +----------------------+--------------------+ | collation_connection | utf8mb4_0900_ai_ci | | collation_database | utf8_general_ci | | collation_server | utf8mb4_0900_ai_ci | +----------------------+--------------------+5
Điều đó dẫn đến rất nhiều cột được trả về với tất cả các loại thông tin về cột, bao gồm cả đối chiếu
Bạn có thể giảm số lượng cột được trả về bằng cách này
+----------------------+--------------------+ | Variable_name | Value | +----------------------+--------------------+ | collation_connection | utf8mb4_0900_ai_ci | | collation_database | utf8_general_ci | | collation_server | utf8mb4_0900_ai_ci | +----------------------+--------------------+6
kết quả ví dụ
+----------------------+--------------------+ | Variable_name | Value | +----------------------+--------------------+ | collation_connection | utf8mb4_0900_ai_ci | | collation_database | utf8_general_ci | | collation_server | utf8mb4_0900_ai_ci | +----------------------+--------------------+7
Bạn cũng có thể chạy câu lệnh
SELECT @@collation_server;6 để hiển thị định nghĩa của bảng [bao gồm các cột của nó]
+----------------------+--------------------+ | Variable_name | Value | +----------------------+--------------------+ | collation_connection | utf8mb4_0900_ai_ci | | collation_database | utf8_general_ci | | collation_server | utf8mb4_0900_ai_ci | +----------------------+--------------------+8
Điều này trả về một cái gì đó như thế này
+----------------------+--------------------+ | Variable_name | Value | +----------------------+--------------------+ | collation_connection | utf8mb4_0900_ai_ci | | collation_database | utf8_general_ci | | collation_server | utf8mb4_0900_ai_ci | +----------------------+--------------------+9
Tuy nhiên, thông tin về bộ ký tự và đối chiếu chỉ được trả về nếu chúng khác với đối chiếu mặc định của bảng. Trong ví dụ này, tôi đặt rõ ràng cột
SELECT @@collation_server;7 thành một đối chiếu khác chỉ nhằm mục đích trình diễn [nếu không thì thông tin đối chiếu sẽ không được trả về]