Tabellen anlegen (Datentypen)

Die Daten, die in einer Tabelle stehen, sind ja auch irgendwie dahin gekommen.

Mit "CREATE TABLE" können neue Tabellen angelegt werden. Aber vorher gibt es wieder ein paar Kleinigkeiten, die man wissen sollte und die beim Anlegen beachtet werden müssen.


Vorwissen

Eine Datenbank kann mehrere Tabellen beinhalten. Diese Tabellen müssen wieder eindeutig gekennzeichnet werden, das wird durch die verschiedenen Namen der Tabellen gewährleistet. Innerhalb der Tabellen befinden sich mehrere Spalten, die Werte von verschiedenen Datentypen aufnehmen können. Die Datentypen unterscheiden sich in "ganze Zahlen", "rationale Zahlen", "Text" oder "Datumsangaben".


Datentypen

Datentypen sind Elemente, die einen bestimmten Wertbereich haben und über verschiedene Operatoren wie zum Beispiel +,-, * oder /, bei numerischen Datentypen verfügen.

Jede Spalte in einer Tabelle bekommt einen Datentyp zugewiesen, damit die Datenbank erkennt welche, Elemente die Spalte speichern kann. Allein für Ganzzahlen kennt MySQL insgesamt 5 verschiedene Datentypen, die alle unterschiedlich viel Speicher benötigen.


Datentypen für Ganzzahlen

Je größer der Datentyp ist, der gespeichert werden soll, umso mehr Speicherplatz wird dafür benötigt. Die Wahl der Datentypen sollte gut bedacht sein. Ist der Datentyp zu großzügig gewählt, wird wertvoller Speicherplatz verschenkt. Ist der Datentyp zu knapp gewählt, kann womöglich nicht jede Zahl gespeichert werden.

Datentypen Speicherbedarf Minimaler Wert bis maximaler Wert
TINYINT mit Vorzeichen 1 Byte -128 bis 127
TINYINT ohne Vorzeichen 1 Byte 0 bis 255
SMALLINT mit Vorzeichen 2 Byte -32.768 bis 32.767
SMALLINT ohne Vorzeichen 2 Byte 0 bis 65.535
MEDIUMINT mit Vorzeichen 3 Byte -8.388.608 bis 8.388.607
MEDIUMINT ohne Vorzeichen 3 Byte 0 bis 16.777.215
INT mit Vorzeichen 4 Byte -2.147.483.648 bis 2.147.483.647
INT ohne Vorzeichen 4 Byte 0 bis 4.294.967.295
BIGINT mit Vorzeichen 8 Byte -9.223.372.036.854.775.808 bis 9.223.172.036.854.775.807
BIGINT ohne Vorzeichen 8 Byte 0 bis 18.446.744.073.709.551.615

Info!

Nicht alle Datenbanksysteme verwenden die gleichen Datentypen für Ganzzahlen.

MySQL unterscheidet durch die zusätzlichen Schlüsselwörter "SIGNED" (mit Vorzeichen) oder "UNSIGNED" (ohne Vorzeichen), die einzelnen Datentypen. PostgreSQL kennt zum Beispiel nur die 3 Datentypen "SMALLINT", "INTEGER" und "BIGINT". Daher ist es wichtig, die Dokumentation seines Datenbanksystems zu beachten.


Datentypen für rationale Zahlen

Unter rationale Zahlen verstehen wir die Zahlen, die durch ein Komma dargestellt werden können. Das bekannteste Beispiel ist wohl der Preis eines Artikels. In SQL gibt es die beiden Datentypen "DECIMAL" und "NUMERIC", die beide funktional gleichwertig sind.

Datentypen für rationale Zahlen

DECIMAL (7,2) -- DECIMAL (precision,scale)
NUMERIC (7,2) -- DECIMAL (precision,scale)

Hinter der Datentypbezeichnung stehen die zahlen 7 und 2 mit einem Komma getrennt. Die 7 steht anstelle von der "precision", die für die Gesamtzahl der Ziffern steht. Die 2 steht anstelle von "scale" und bezeichnet, wie viel Stellen von rechts die Trennung durchgeführt wird. In diesem Beispiel steht die 7 für 7 Ziffern und die 2 für 2 Stellen von rechts versetzt. Wodurch der Kaufpreis eines Autos dargestellt werden kann (49999,99).


Datentypen für Datum und Zeit

Datumstypen sind oft verwendete Vertreter für Datenbankaufgaben. Egal ob Geburtsdatum oder ein Zeitstempel, der die aktuelle Zeit festhält, dies Informationen werden in folgenden Datentypen gespeichert:

Datentypen Wertbereich von Wertbereich bis
DATE 1000-01-01 9999-12-31
DATETIME 1000-01-01 00:00:00.000000 999-12-31 23:59:59.999999
TIMESTAMP 1970-01-01 00:00:01.000000 2038-01-19 03:14:07.999999
TIME -838:59:59.000000 838:59:59.000000
YEAR 1901 2155

Info!

Auch bei den Datumswerten gibt es Unterschiede zwischen den einzelnen Datenbanksystemen.

Hier ist es wieder ratsam, zuerst zu prüfen, welche Formate die gewählte Datenbank unterstützt.

Die Schreibweise für Zeit und Datum entspricht dem Standard: ISO 8601. Bei diesem Standard sind die Zeitangaben folgendermaßen: yyyy-mm-dd (Jahr-Monat-Tag) und hh:mm:ss.f (Stunden:Minuten:Sekunden.gebrochene Sekunde).


Datentypen für Zeichenketten

Jede Textausgabe, die Namen, Orte oder andere Begrifflichkeiten beschreibt, wird in Zeichenketten dargestellt. Die beiden Datentypen "CHAR" und "VARCHAR" nutzen den Speicherplatz unterschiedlich. Der Begriff Länge beschreibt, wie viel Zeichen in der Spalte gespeichert werden sollen.

Datentypen Maximale Länge der Zeichenkette
CHAR (Länge) 255
VARCHAR (Länge) 65.535 (seit MySQL 5.0.3)

Info!

Auch bei den Zeichenketten gibt es Unterschiede zwischen den einzelnen Datenbanksystemen.

Hier ist es wieder ratsam, zuerst zu prüfen, welche Formate die gewählte Datenbank unterstützt und wie viel Speicherplatz im jeweiligen System verwendet wird.

Wenn wir eine Spalte anlegen, die den Datentyp "CHAR(50)" hat und darin den Namen "FRANK" speichern, dann wird bei dem Datentyp der restliche Freiraum (45 Zeichen) mit Leerzeichen aufgefüllt.

Wenn wir eine Spalte anlegen, die den Datentyp "VARCHAR(50)" hat und darin den Namen "FRANK" speichern, dann wird bei dem Datentyp der restliche Freiraum (45 Zeichen) nicht mit Leerzeichen aufgefüllt.


Zusammenfassung

Datentypen werden verwendet, um den Spalten unterschiedliche Wertbereiche zuzuordnen. Diese Werte bestehen aus Ganzzahlen, rationalen Zahlen, Datums- und Zeitangaben oder Zeichenketten. Weil die Daten im Binärsystem gespeichert werden, ist die Verwendung des richtigen Zeichensatzes unumgänglich. Beim Anlegen der Spalten sollte mit Bedacht der richtige Datentyp gewählt werden, um alle nötigen Informationen abbilden zu können, aber auch um Speicherplatz zu sparen und die Performance zu gewährleisten.


Weiter mit Tabellen anlegen (CREATE TABLE)