Skip to content

MariaDB und MySQL

MariaDB und MySQL sind sich sehr ähnlich, wenn es um Datentypen geht. Es gibt jedoch einige kleine Unterschiede. Wenn es diese gibt, werde ich das erwähnen.

Numerische Typen

Numerische Typen haben manchmal eine "Größe". Diese Größe ist nicht direkt eine Validierung. Sie ist meistens die Größe der Zahl und legt fest, wie viel von dieser Größe zum Speichern der Dezimalzahl verwendet wird. Sized haben nie eine Größe, die die Eingabe validiert. Es geht immer um die Genauigkeit.

INTEGER

Java: Integer, Long

Die Ganzzahlen in MariaDB sind in verschiedene Größen unterteilt. Je nachdem, welche Größe du wählst, benötigen sie unterschiedlich viel Speicherplatz. Wähle deinen Integer-Typ anhand der maximalen und minimalen Größe, die du für die Werte erwartest.

DECIMAL

Java: Double | MariaDB | MySQL

Eine Zahl mit einem "exakten" Fixpunkt.

DOUBLE

Java: Double | MariaDB | MySQL

Gleitkommazahl mit doppelter Präzision

FLOAT

Java: Float | MariaDB | MySQL

Gleitkommazahl mit einfacher Präzision

BOOLEAN

Java: Boolean | MariaDB | MySQL

Boolesche Werte werden intern als TINYINT gespeichert.

Texttypen

Es gibt verschiedene Texttypen, die wir je nach der erwarteten Größe des Wertes auswählen müssen.

CHAR

Java: String | MariaDB | MySQL

CHAR wird für Strings mit der gleichen Größe verwendet. z.B. Länder-Codes. Er hat eine maximale Länge von 255. Die Länge muss bei der Erstellung festgelegt werden. Die verbleibenden Zeichen werden mit Leerzeichen aufgefüllt, um die angegebene Länge zu erreichen.

CHAR(Länge)

TEXT

Java: String

Der Texttyp ist in verschiedene Größen unterteilt. Sie lassen keine Werte zu, die größer als die maximale Größe sind.

VARCHAR

Java: String | MariaDB | MySQL

VARCHAR ist ein String mit einer variablen Maximalgröße. Die maximale Größe ist hier etwas komplexer, da sie von der Kodierung der Datenbank abhängt. Im Gegensatz zu CHAR wird hier kein Padding hinzugefügt.

Theoretisch beträgt die maximale Größe 65.532 Zeichen. Wenn du utf8 verwendest, das bis zu 4 Byte pro Zeichen benötigt, kommst du im schlimmsten Fall auf 21.844 Zeichen.

Ein Vorteil gegenüber TEXT ist, dass VARCHAR-Spalten vollständig indiziert werden können, während TEXT-Spalten auf eine bestimmte Länge gekürzt werden. Wenn du also deine Werte indizieren musst, solltest du VARCHAR nehmen. Solltest du einfach nur große Mengen Text speichern wollen, ist ein TEXT Typ die beste Wahl.

Enum

Java: String oder Enum name | MariaDB | MySQL

Der Enum-Typ ist ein spezieller String, der der Spalte eine Eingabevalidierung hinzufügt. Es können nur Werte hinzugefügt werden, die bei Erstellung der Spalte definiert sind.

ENUM('Wert1','Wert2',...)

JSON

Java: String | MariaDB | MySQL

MySQL JSON wird als LONGTEXT-Spalte gespeichert, aber für einen besseren Zugriff in ein internes Format umgewandelt.

MariaDB

JSON ist ein Alias für LONGTEXT und fügt eine Prüfung hinzu, die beim Einfügen eine gültige JSON-Syntax sicherstellt. JSON ist ein normaler String in MariaDB.

SET

Java: String MariaDB | MySQL

Ähnlich wie ein Enum kann ein Set nur vordefinierte Eingaben enthalten, die durch , getrennt sind.

Bei einem Set wie diesem:

SET ('a', 'b', 'c', 'd')

können mehrere Werte haben wie:

  • ''
  • 'a'
  • 'a,b'
  • 'a,c'
  • ...

Binäre Typen

BLOB

Java: Alles

Der BLOB-Typ ist in mehrere Größen unterteilt. Er wird verwendet, um beliebige Binärdaten zu speichern.

BINARY

Java: Beliebig | MariaDB | MySQL

Speichert einen binären Wert mit fester Länge.

BINARY(length)

Datum und Uhrzeit

DATE

Java: LocalDate | MariaDB | MySQL

ZEIT

Java: LocalTime | MariaDB | MySQL

DATETIME

Java: LocalDateTime | MariaDB | MySQL

Kombination aus DATE und TIME. Sie werden in der aktuellen Zeitzone gespeichert. Sie überprüfen auch, ob die Uhrzeit in der aktuellen Zeitzone gültig ist. Einige Zeiten können aufgrund der Sommerzeit ungültig sein, die auch als Winter- und Sommerzeit bezeichnet wird.

TIMESTAMP

Java: LocalDateTime | MariaDB | MySQL

Ein Zeitstempel wird beim Einfügen in UTC umgewandelt und beim gegenseitigen Lesen in die Zeitzone der Session geändert.

YEAR

Java: Integer oder String | MariaDB | MySQL

Ein Jahr steht für eine Jahreszahl im zwei- oder vierstelligen Format. Ihr Bereich ist begrenzt.

  • Vier Ziffern (YEAR(4)): 1901 -> 2155 und 0000
  • Zwei Ziffern (JAHR(2)): 70 -> 69 für 1970 -> 2069