Tabellen anlegen

Tabellen anlegen

Um eine Tabelle anzulegen wird der CREATE TABLE-Befehl benötigt und der Tabellenname. Dabei müssen in runden Klammern gleichzeitig die Spalten (Kommagetrennt) der Tabelle mit einem Datentyp sowie der Primärschlüssel bestimmt werden. Optionale Regeln werden hinter dem Datentyp eingefügt. Der ganze Befehl wird mit einem ; (Semikolon) abgeschlossen

create table [TabellenName] (
	Spalte Datentyp [Regeln],
	Spalte Datentyp [Regeln]
);
MYSQL
create table personal (
	pers_id integer primary key auto_increment,
	pers_vorname varchar(30)
);
SQLite
create table personal (
	pers_id integer primary key autoincrement,
	pers_vorname text
);

Datentypen

Jede Spalte in einer Tabelle speichert spezifische Daten wie Namen, IDS, Zahlen oder andere Werte. Damit die Datenbank weiß, welche Daten in der Spalte gespeichert werden können, muss ein Datentyp angegeben werden.

SQLite Datentypen

Ganzzahlen

Der Datentyp INTEGER in SQLite wird verwendet, um ganze Zahlen zu speichern. Der INTEGER-Datentyp wird für die Speicherung von ganzen Zahlen ohne Dezimalstellen verwendet. Dies können positive oder negative Zahlen sein, einschließlich des Werts 0.

Ganzzahlen sind Zahlen wie zum Beispiel: 5, 78, 345, 23409.

Die Größe des INTEGER-Datentyps in SQLite hängt von der gespeicherten Zahl ab. SQLite verwendet variable Längen für INTEGER-Werte, was bedeutet, dass die Größe je nach Größe der gespeicherten Zahl angepasst wird.

SQLite
create table person (
	pers_id integer primary key autoincrement,
	pers_sekunden integer
);

Kommazahlen

Der Datentyp REAL in SQLite wird verwendet, um Gleitkommazahlen mit Dezimalstellen zu speichern.

Der REAL-Datentyp ist besonders nützlich, wenn man Zahlen mit Dezimalstellen speichern möchtest, wie z.B. Preise, Gewicht oder andere präzise Messungen.

SQLite
create table person (
	pers_id integer primary key autoincrement,
	pers_sekunden integer,
	pers_groesse real
);

Zeichenketten (Strings)

Der Datentyp TEXT in SQLite wird verwendet, um Zeichenketten oder Textdaten zu speichern. Zeichenketten können Buchstaben, Zahlen, Sonderzeichen und Leerzeichen sein.

Der Datentype hat eine variable Länge, was bedeutet, dass man Zeichenketten unterschiedlicher Länge speichern kannst. Die Größe wird dynamisch an die Länge der gespeicherten Daten angepasst.

Der TEXT-Datentyp ist äußerst vielseitig und wird in SQLite häufig für Spalten verwendet, in denen Zeichenketten oder Textinformationen gespeichert werden sollen, wie zum Beispiel für Namen, Adressen oder Beschreibungen.

SQLite
create table person (
	pers_id integer primary key autoincrement,
	pers_sekunden integer,
	pers_groesse real,
	pers_vorname text
);

Hinweis

SQLite kennt keinen Datentyp für Datumsangaben wie MYSQL. Es wird in der Regel dann der Datentyp TEXT verwendet. In SQLite gibt es spezielle Funktionen um mit Datumsangaben zu arbeiten.

MYSQL Datentypen

Diese Übersicht zeigt die wichtigsten Datentypen von MySQL. Es gibt noch weitere und auf dem folgenden Link werden diese dargestellt.

MySQL Datatypes

Numerische Datentypen

Ganzzahlen

Numerische Datentypen speichern Zahlen in unterschiedlichen Wertebereiche,

Datentyp

Min. mit Vorzeichen

Min. ohne Vorzeichen

Max. mit Vorzeichen

Max ohne Vorzeichen

tinyint

-128

0

127

255

smallint

-32768

0

32767

65535

mediumint

-8388608

0

8388607

16777215

integer

-2147483648

0

2147483647

4294967295

Ohne Vorzeichen bedeuted, dass es nur positive Werte gibt. Dies wird durch den Befehl unsigned erreicht.

MYSQL
create table person (
	pers_id integer primary key auto_increment,
	pers_sekunden integer,
	pers_alter tinyint unsigned
);

Kommazahlen

Datentyp

Beschreibung

decimal(X,Y)

Kommazahlen werden gespeichert. Kommazeichen ist der Punkt (.). X gibt die gesamte Anzahl der Zahlen (links und rechts vom Dezimalpunkt) an (max. 65) an und Y die Nachkommastellen (max. 30). Hinweis: X muss >= Y sein

MYSQL
create table person (
	pers_id integer primary key auto_increment,
	pers_sekunden integer,
	pers_alter tinyint unsigned,
	pers_wert decimal(7,2)
);

Zeichenketten (Strings)

Zeichenketten sind eine endliche Folge von Zeichen (z. B. Buchstaben, Ziffern, Sonderzeichen und Steuerzeichen) aus einem definierten Zeichensatz. Zeichen können sich in einer Zeichenkette wiederholen und eine Zeichenkette kann auch leer sein, also kein Zeichen enthalten und die Länge 0 haben.

Datentyp

Beschreibung

char(X)

Datentyp zur Speicherung von Zeichen. X gibt an, wie viel Zeichen gespeichert werden sollen. Unabhängig davon, wie lan die Zeichenkette ist, werden immer X Stellen reserviert. X kann von 1 bis 255 angegeben werden.

varchar(X)

X = 255 Zeichen. Das Speichern der Zeichenkette erfolgt dynamisch. Es werden nur so viele Stellen reserviert, wie benötigt.

text

Dieser Datentyp dient zur Speicherung von großen Mengen an Zeichen. Es können max. 65535 Zeichen gespeichert werden.

MYSQL
create table person (
	pers_id integer primary key auto_increment,
	pers_sekunden integer,
	pers_alter tinyint unsigned,
	pers_wert decimal(7,2),
	pers_vorname varchar(255)
);

Datums- und Zeitangaben

Datentype

Beschreibung

date

Datentyp zur Speicherung von Datumswerten. Muss folgendermaßen angegeben werden: YYYY-MM-DD (z.B. 2022-07-18)

datetime

Datentyp zur Speicherung von Datums- und Zeitwerten. Muss folgendermaßen angegeben werden: YYYY-MM-DD hh:mm:ss (z.B. 2021-03-08 10:22:31)

time

Datentyp zur Speicherung von Zeitwerten.Muss folgendermaßen angegeben werden: hh:mm:ss (z.B. 12:45:31)

year

Datentyp zur Speicherung einer Jahrezahl. Format: YYYY (z.B. 2022)

MYSQL
create table person (
	pers_id integer primary key auto_increment,
	pers_sekunden integer,
	pers_alter tinyint unsigned,
	pers_wert decimal(7,2),
	pers_vorname varchar(255),
	pers_geburtsdatum date
);

NULL

In SQL repräsentiert der Wert NULL das Fehlen oder Unbekanntsein eines Werts in einer Datenbankspalte. Es ist wichtig zu verstehen, dass NULL nicht dasselbe ist wie der leere String (‚‘), die Zahl Null (0) oder ein Platzhalterwert. NULL bedeutet, dass für die betreffende Datenbankspalte kein Wert angegeben wurde oder dass der Wert unbekannt ist.

Bei der Definition einer Datenbanktabelle mit CREATE TABLE kann man mithilfe der Klauseln NULL (muss nicht explizit angegeben werden) und NOT NULL festlegen, ob eine Spalte NULL-Werte zulassen soll oder nicht.

MYSQL
create table person (
	pers_id integer primary key auto_increment,
	pers_sekunden integer not null,
	pers_alter tinyint unsigned, /* NULL Werte werden zugelassen */
	pers_wert decimal(7,2), /* NULL Werte werden zugelassen */
	pers_vorname varchar(255) /* NULL Werte werden zugelassen */
);
SQLite
create table person (
	pers_id integer primary key autoincrement,
	pers_sekunden integer not null,
	pers_groesse real, /* NULL Werte werden zugelassen */
	pers_vorname text /* NULL Werte werden zugelassen */
);

Der Vergleich von Werten mit NULL erfolgt in SQL mit den speziellen Operatoren IS NULL und IS NOT NULL. Der normale Vergleichsoperator (=) funktioniert nicht wie erwartet, da NULL nicht als gleich oder ungleich zu einem bestimmten Wert betrachtet wird.

Regeln

Für jede Spalte in einer Tabelle können Regeln (contraints) erstellt werden. Soll beispielsweise ein Spalte keine Nullwerte (Null) enhalten dürfen, so kann das mittels der NOT NULL-Regel festgelegt werden. Die Regeln werden nach der Spaltendeklaration angegeben.

Vorsicht

Wenn bei einem insert into für eine Spalte keine Werte angegeben wurden, wird der Wert NULL gespeichert.

Regel (constraint)

Beschreibung

check (…)

Mit check werden Spaltewerte auf bestimmte Bedingungen geprüft. Wenn die Bedingung wahr (true) ist, wird der Wert in die Spalte geschrieben. Wenn die Bedingung zu falsch (false) ausgewertet wird, wird eine Fehlermeldung angezeit. Beispiel: EinWert integer check (Ein Wert > 10 AND EinWert < 100)

not null

Die Spalte mit dieser Regel muss einen Wert enthalten. Darf also nicht leer sein. Beispiel: EinWert integer not null

unique

Die Spalte mit dieser Regel darf nur eindeutige Werte enthalten. Der Wert darf also nicht nochmal vorkommen. Ähnlich des Primary Keys. Der Primary beinhaltet die unique und die not null Regel. Beispiel: EinWert integer unique

primary key

Mit dieser Regel wird der Primary Key bestimmt. Beispiel: EineID primary key

auto_increment (autoincrement)

Diese Regel sorgt dafür, dass der Spaltenwert automatisch einen Wert bekommt, der um 1 höher ist als der vorherige. Der erste Wert ist automatisch die 1. Diese Regel ist nur in Verbindng mit einem Schlüssel oder der unique-Regel möglich. Beispiel: EineID integer primary key auto_increment

default

Wenn beim insert into für die Spalte kein Wert angegeben wird, wird der Standardwert eingefügt. Beispiel: EinWert integer default 100

MYSQL
create table person (
	pers_id integer primary key auto_increment,
	pers_sekunden integer check (pers_sekunden > 120),
	pers_alter tinyint unsigned not null,
	pers_wert decimal(7,2) unique,
	pers_vorname varchar(255) default 'Mike',
	pers_geburtsdatum date
);
SQLite
create table person (
	pers_id integer primary key autoincrement,
	pers_sekunden integer check (pers_sekunden > 120),
	pers_alter integer not null,
	pers_wert real unique,
	pers_vorname text default 'Mike',
	pers_geburtsdatum text
);

Vergleichsoperatoren

Die Vergleichsoperatoren werden z.B. bei der check-Regel angewendet. Die Vergleichsoperatoren werden zu true oder false ausgewertet. Die Vergleichoperatoren sind:

Operator

Beschreibung

Beispiel

=

gleich

Jahresbonus = 1000

>

größer als

Jahresbonus > 1000

<

kleiner als

Jahrebonus < 1000

>=

größer gleich

Jahresbonus >= 1000

<=

kleiner gleich

Jahresbonus <= 1000

<>

ungleich

Jahresbonus <> 1000

Logische Operatoren

Regeln können z.B. in einer check-Regel auch mittels logischer Operatoren miteinander verknüpft werden. So können mehrere Bedingungen angegeben und überprüft werden.

Operator

Beschreibung

Beispiel

and

Dieser Operator verknüft zwei logische Zustände, die entweder true (wahr) oder false (falsch) sind.

Jahresbonus > 100 and Jahresbonus < 1000.

or

Dieser Operator verknüft zwei logische Zustände, die entweder true (wahr) oder false (falsch) sind.

Jahresbonus < 100 or Jahresbonus > 1000

MYSQL
create table person (
	pers_id integer primary key auto_increment,
	pers_sekunden integer check (pers_sekunden > 120 and pers_sekunden < 241),
	pers_alter tinyint unsigned not null,
	pers_wert decimal(7,2) unique,
	pers_vorname varchar(255) default 'Mike',
	pers_geburtsdatum date
);
SQLite
create table person (
	pers_id integer primary key autoincrement,
	pers_sekunden integer check (pers_sekunden > 120 and pers_sekunden < 241),
	pers_alter integer not null,
	pers_wert real unique,
	pers_vorname text default 'Mike',
	pers_geburtsdatum text
);

Wahrheitstabelle

Die Wahrheitstabelle gibt an, ob zwei oder mehrere Bedingungen wahr oder falsch sind.

Erster Wert

Zweiter Wert

and

or

True

True

True

True

True

False

False

True

False

True

False

True

False

False

False

False