Nie ma różnicy.
Istnieje jednak zastrzeżenie, jeśli przechowujesz ciąg.
Jeśli chcesz przechowywać tylko tablicę bajtów lub inne dane binarne, takie jak strumień lub plik, użyj typu binarnego, ponieważ do tego są przeznaczone.
Cytat z podręcznika MySQL :
Więc technicznie nie ma różnicy.
Jednak podczas przechowywania ciągu należy go przekonwertować z ciągu na wartości bajtowe przy użyciu zestawu znaków. Decyzja jest taka, aby zrobić to samemu przed serwerem MySQL lub pozostawić to MySQL, aby zrobił to za Ciebie. MySQL wykona zadanie, rzutując łańcuch na BINARY
za pomocą zestawów znaków BIN.
Jeśli chcesz przechowywać kodowanie w innym formacie, powiedzmy, że masz wymaganie biznesowe, które mówi, że musisz użyć 4 bajtów na znak (MySQL nie robi tego domyślnie), możesz wtedy użyć ZESTAW ZNAKÓW BINARNYCH do kolumny tekstowej i samodzielnie wykonaj kodowanie zestawu znaków.
Warto też przeczytać BINARY
i VARBINARY
Rodzaje
z podręcznika MySQL, ponieważ zawiera szczegółowe informacje, takie jak dopełnienie.
Podsumowanie: Nie ma różnicy technicznej, ponieważ jedno jest synonimem drugiego. Moim zdaniem logiczne jest przechowywanie ciągów binarnych w typach danych, które normalnie zawierałyby ciąg za pomocą Zestawu znaków binarnych
i przechowywać tablice bajtów / strumienie itp. w BINARY
pola, które nie mogą być reprezentowane przez przekształcenie danych za pomocą zestawu znaków.