sql >> Databáze >  >> RDS >> Mysql

Binární MySQL vs znaková sada znaků binární

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.




  1. 15 užitečných tipů pro ladění a optimalizaci výkonu MySQL/MariaDB

  2. Mysql nekonzistentní počet řádků count(*) vs. table.table_rows v information_schema

  3. Příklad hromadného shromažďování Oracle pomocí objektu typu typ řádku kurzoru

  4. Spouštěč MySQL, pokud existuje podmínka