Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Binär vs. binärer Zeichensatz

Es gibt keinen Unterschied.

Es gibt jedoch einen Vorbehalt, wenn Sie eine Zeichenfolge speichern.

Wenn Sie nur ein Byte-Array oder andere Binärdaten wie einen Stream oder eine Datei speichern möchten, verwenden Sie den Binärtyp, da er dafür gedacht ist.

Zitat aus dem MySQL-Handbuch :

Technisch gesehen gibt es also keinen Unterschied.

Beim Speichern einer Zeichenfolge muss diese jedoch mithilfe eines Zeichensatzes von einer Zeichenfolge in Bytewerte konvertiert werden. Sie haben die Wahl, dies entweder selbst vor dem MySQL-Server zu tun, oder Sie überlassen es MySQL, dies für Sie zu tun. MySQL führt dies aus, indem es einen String in BINARY umwandelt unter Verwendung der BIN-Zeichensätze.

Wenn Sie die Codierung in einem anderen Format speichern möchten, sagen wir, Sie haben eine Geschäftsanforderung, die besagt, dass Sie 4 Bytes pro Zeichen verwenden müssen (MySQL tut dies standardmäßig nicht), könnten Sie dann den CHARACTER SET BINARY in eine Textspalte und führen Sie die Zeichensatzcodierung selbst durch.

Es lohnt sich auch, den BINARY und VARBINARY Typen aus dem MySQL-Handbuch, da hier wichtige Informationen wie Padding aufgeführt sind.

Zusammenfassung: Es gibt keinen technischen Unterschied, da das eine ein Synonym für das andere ist. Meiner Meinung nach ist es logisch, binäre Strings in Datentypen zu speichern, die normalerweise einen String enthalten würden, indem der CHARACTER SET BINARY verwendet wird und um Byte-Arrays / Streams usw. in BINARY zu speichern Felder, die nicht durch Transformation der Daten durch einen Zeichensatz dargestellt werden können.