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]
);
create table personal (
pers_id integer primary key auto_increment,
pers_vorname varchar(30)
);
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.
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.
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.
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.
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.
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 |
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. |
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) |
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.
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 */
);
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 |
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
);
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 |
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
);
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 |