booleans in MySQL?

2 Antworten

In MySQL können Sie BOOL und BOOLEAN verwenden. Diese Typen sind Synonyme für TINYINT(1). Ein Wert von Null wird als "falsch" betrachtet. Werte ungleich Null werden als "wahr" betrachtet.

Die Werte TRUE und FALSE sind jedoch lediglich Aliase für 1 bzw. 0.

https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html

BOOL, BOOLEAN
These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true
However, the values TRUE  and  FALSE  are merely aliases for  1  and  0, respectively

Zum Beispiel:

create table mytable (
     mybool boolean not null default 0
);

Thefaces 
Beitragsersteller
 31.05.2020, 20:49

Vielen vielen Dank :)

Mir wurde vorher geantwortet es gebe keine booleans in MySQL...

0
glebkema  31.05.2020, 20:57
@Thefaces

Dies ist kein unabhängiger Datentyp, sondern eine Simulation basierend auf dem TINYINT(1). Daher stellt sich heraus, dass es zwar keine solche Art von Daten gibt, diese jedoch verwendet werden können :)

0
glebkema  31.05.2020, 21:10
@Thefaces

Hier ist ein interessanter Artikel auf Deutsch. Der Autor vergleicht den Komfort und die Leistung verschiedener Methoden zur Simulation eines logischen Datentyps in MySQL:

  • TINYINT(1)
  • ENUM(‚0′,’1‘)
  • CHAR(1)

Boolesche Werte in MySQL

MySQL-Kenner und PHPMyAdmin-Anwender werden im ersten Moment jetzt natürlich sagen, dass es doch sehr wohl einen Datentyp namens BOOL bzw. BOOLEAN gibt. Allerdings stimmt das nicht ganz, denn beides sind lediglich Synonyme für UNSIGNED TINYINT(1). Sie haben also nicht nur einen Wertebereich von [0;1] sondern von [0;255].
Es gibt also 2 Sichtweisen bei der Wahl des optimalen Datentyps für eine Wahrheitswert-Spalte: Für die Performance ist UNSIGNED TINYINT(1) die erste Wahl. Soll der Wertebereich aber bewusst auf ‚0‘ und ‚1‘ (und nur auf diese Werte, keine zusätzlichen) beschränkt werden, ist ENUM vorzuziehen. Auch wenn sich aus „sprechenden“ Werten an anderer Stelle Vorteile ergeben, kann der Einsatz von ENUM sinnvoll sein.
0

in MySQL kann man keine Booleans abspeichern. Ich hab mir sonst immer nen Varchar entweder true oder false abgespeichert. Gibt aber bestimmt auch bessere Methoden.

Woher ich das weiß:Hobby

Thefaces 
Beitragsersteller
 31.05.2020, 20:39

Ok danke.

Hatte das zwar wo gesehen, aber scheinbar haben die es dann auch mit Varchar geschrieben

0