booleans in MySQL?
Hey,
Ich bin Anfänger mit MySQL und habe scon Strings und integer genutzt.
Aber wie verwende ich booleans?
Main.mysql.update("INSERT INTO Boots(KILLS, DEATHS) VALUES (''0', '0');");
mysql.update("CREATE TABLE IF NOT EXISTS Boots(KILLS int, DEATHS int);");
Wie verwende ich hier booleans und wie frage ich sie dann ab, bzw setze sie(true/false)?
2 Antworten

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.

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

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
);

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)
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.
Vielen vielen Dank :)
Mir wurde vorher geantwortet es gebe keine booleans in MySQL...