Không có sự khác biệt.
Tuy nhiên, có một lưu ý nếu bạn đang lưu trữ một chuỗi.
Nếu bạn chỉ muốn lưu trữ một mảng byte hoặc dữ liệu nhị phân khác, chẳng hạn như một luồng hoặc tệp, hãy sử dụng kiểu nhị phân vì đó là những gì chúng có ý nghĩa.
Trích dẫn từ hướng dẫn sử dụng MySQL :
Vì vậy, về mặt kỹ thuật không có sự khác biệt.
Tuy nhiên, khi lưu trữ một chuỗi, nó phải được chuyển đổi từ một chuỗi thành các giá trị byte bằng cách sử dụng một bộ ký tự. Quyết định là tự mình thực hiện việc này trước máy chủ MySQL hoặc bạn giao việc này cho MySQL làm cho bạn. MySQL sẽ thực hiện với bằng cách truyền một chuỗi tới BINARY
sử dụng bộ ký tự BIN.
Nếu bạn muốn lưu trữ mã hóa ở định dạng khác, giả sử bạn có yêu cầu kinh doanh nói rằng bạn phải sử dụng 4 byte cho mỗi ký tự (MySQL không làm điều này theo mặc định) thì bạn có thể sử dụng CHARACTER SET BINARY vào cột văn bản và tự thực hiện mã hóa bộ ký tự.
Nó cũng đáng đọc BINARY
và VARBINARY
Các loại
từ hướng dẫn sử dụng MySQL vì phần này trình bày chi tiết thông tin quan trọng như padding.
Tóm tắt: Không có sự khác biệt về kỹ thuật vì cái này đồng nghĩa với cái kia. Theo ý kiến của tôi, việc lưu trữ các chuỗi nhị phân trong các kiểu dữ liệu thường chứa một chuỗi sẽ có ý nghĩa hợp lý bằng cách sử dụng CHARACTER SET BINARY
và để lưu trữ mảng / luồng byte, v.v. trong BINARY
các trường không thể được biểu diễn bằng cách chuyển đổi dữ liệu thông qua một bộ ký tự.