Není v tom žádný rozdíl.
Existuje však upozornění, pokud ukládáte řetězec.
Pokud chcete uložit pouze bajtové pole nebo jiná binární data, jako je proud nebo soubor, použijte binární typ, protože k tomu jsou určeny.
Citace z příručky MySQL :
Takže technicky v tom není žádný rozdíl.
Při ukládání řetězce však musí být převeden z řetězce na bajtové hodnoty pomocí znakové sady. Rozhodnutí je buď to udělat sami před serverem MySQL, nebo to nechat na MySQL, aby to udělal za vás. MySQL bude fungovat s přetypováním řetězce do BINARY
pomocí znakových sad BIN.
Pokud chcete uložit kódování v jiném formátu, řekněme, že máte obchodní požadavek, který říká, že musíte použít 4 bajty na znak (MySQL to ve výchozím nastavení nedělá), můžete použít CHARACTER SET BINARY do textového sloupce a sami proveďte kódování znakové sady.
Také stojí za to si přečíst The BINARY
a VARBINARY
Typy
z manuálu MySQL, protože to podrobně popisuje důležité informace, jako je výplň.
Shrnutí: Neexistuje žádný technický rozdíl, protože jedno je synonymem pro druhé. Podle mého názoru má logický smysl ukládat binární řetězce do datových typů, které by normálně obsahovaly řetězec pomocí CHARACTER SET BINARY
a pro ukládání bajtových polí / streamů atd. v BINARY
pole, která nelze reprezentovat transformací dat pomocí znakové sady.