Datenbank
Verschiedene Arten von Datenbanken
Relationale Datenbank
- MySQL wird viel eingesetzt.
- SQLite wird auf dem Smartphone meist genutzt.
- Microsoft SQL Server
- Oracle-Datenbank
Objektorientierte Datenbanken
NoSQL Datenbank
Objekt-Relationale Mapper (ORM) Datenbanken
SQL - Structured Query Language
Erstellen einer Datenbank
Bemerkung: Alle aufgeführten Befehle beziehen sich auf das Datenbanksystem MySQL SQL-Befehle sind in Grossbuchstaben geschrieben.
Das Erstellen einer neuen Datenbank erfolgt mit dem Befehl
CREATE DATABASE datenbankname;
Damit Tabellen in der neu erzeugten Datenbank angelegt werden können, muss diese ausgewählt werden.
USE datenbankname;
Erstellen einer Tabelle
Bemerkung: Um eine Tabellen erstellen zu können muss zuvor eine Datenbank ausgewählt worden sein.
Mit dem Befehl
CREATE TABLE tabellenname (
namespalte1 DATENTYP,
namespalte2 DATENTYP,
namespalte3 DATENTYP
);
wird eine neue Tabelle 'tabellenname' erstellt. Als Datentyp wird für gewöhnlich einer der folgenden Typen verwendet:
Datentyp | Bemerkungen |
---|---|
INT, INTEGER | Für Zahlen ohne Nachkommastelle |
BIGINT | Für sehr große Zahlen ohne Nachkommastelle |
FLOAT | Für Zahlen mit Nachkommastelle. In Klammer können die Anzahl Stellen der Zahl und die Anzahl Stellen nach dem Komma angegeben werden. Bsp.: FLOAT(5,3) speichert 2 Dezimalstellen vor dem Komma und 3 danach. |
DOUBLE | Für sehr große Zahlen mit Nachkommastelle. In Klammer können die Anzahl Stellen der Zahl und die Anzahl Stellen nach dem Komma angegeben werden. Bsp.: DOUBLE(5,3) speichert 2 Dezimalstellen vor dem Komma und 3 danach. |
REAL | Ist gleich wie DOUBLE. |
DEC, DECIMAL | Für Zahlen mit Nachkommastelle. In Klammer können die Anzahl Stellen vder Zahl und die Anzahl Stellen nach dem Komma angegeben werden. Bsp.: DECIMAL(5,3) speichert 2 Dezimalstellen vor dem Komma und 3 danach. |
NUMERIC, FIXED | Ist gleich wie DECIMAL |
CHAR (n) | Für einen Text fester Länge. n darf max. 255 sein. Ist der eingegebenen Text kürzer als n Zeichen, wird er mit Leerzeichen aufgefüllt. |
VARCHAR (n) | Für einen Text mit max. der Länge n (n darf max. 65.535 sein). |
TEXT | Für einen Text mit der max. Länge von 65.535 Zeichen. |
LONGTEXT | Für einen sehr langen Text mit der max. Länge von 4.294.967.295 Zeichen. |
DATE | Zum speichern eines Datums im Format 'YYYY-MM-DD' |
DATETIME | Zum speichern eines Datums mit Uhrzeit im Format 'YYYY-MM-DD HH:MM:SS' |
TIMESTAMP | Zum speichern eines Zeitstempels |
TIME | Zum speichern einer Uhrzeit im Format 'HH:MM:SS' |
YEAR | Zum speichern eines Jahrs' |
Der Befehl CREATE TABLE besitzt einige Optionen, so kann ein Primärschlüssel wie in dem folgenden Beispiel definiert werden.
CREATE TABLE kunde (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
vorname VARCHAR(30),
nachname VARCHAR(30)
);
Besteht ein Primärschlüssel aus mehreren Attributen, muss dieser im Anschluss an die Spaltendefinition definiert werden.
CREATE TABLE firma (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
groesse INT,
PRIMARY KEY(id, name)
);
Eine Spalte die sich als Fremdschlüssel auf eine weitere Tabelle bezieht, kann mit Angabe der Referenztabelle wie folgt angegeben werden.
CREATE TABLE bestellung (
id INT NOT NULL AUTO_INCREMENT,
bezeichnung VARCHAR(40) NOT NULL,
anzahl INT,
kundenId INT NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY (kundenId) REFERENCES kunde(id)
);
Möchte man beim löschen eines Datensatzes, dass alle damit verknüpften Einträge gelöscht werden muss der Fremdschlüssel
mit ON DELETE CASCADE definiert werden. Würde dann ein Kundendatensatz mit der id 3 gelöscht werden, würden auch alle
Einträge in Bestellung gelöscht werden, die sich auf die Kunden-Id 3 beziehen. Mit ON UPDATE CASCADE wird veranlasst, dass die referenzierte
Tabelle automatisch aktualisiert wird.
CREATE TABLE bestellung (
id INT NOT NULL AUTO_INCREMENT,
bezeichnung VARCHAR(40) NOT NULL,
anzahl INT,
kundenId INT NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY (kundenId) REFERENCES kunde(id)
ON DELETE CASCADE ON UPDATE CASCADE
);
Ändern einer Tabelle
Zum Einfügen einer neuen Spalte in eine bestehende Tabelle kann der Befehl ALTER TABLE verwendet werden. Nach dem Spaltenname folgt der Datentyp und zusätzlichen Optionen wie bei CREATE TABLE. Siehe dazu folgendes Beispiel das die Spalte preis in bestellungs einfügt.
ALTER TABLE bestellung ADD preis DECIMAL(10,2);
Soll eine Spalte gelöscht werden, erfolgt dies mit ALTER TABLE und der Option DROP. Die Spalte preis wird nun wieder gelöscht.
ALTER TABLE bestellung DROP preis;
Umbenennen der Tabelle kann mit ALTER TABLE und der Option RENAME erfolgen.
ALTER TABLE bestellung RENAME aufträge;
Spaltennamen können mit ALTER TABLE und der Option CHANGE geändert werden.
ALTER TABLE aufträge CHANGE bezeichnung name VARCHAR(40) NOT NULL;
Außerdem kann der Datentyp einer Spalte verändert werden mit ALTER TABLE und der Option MODIFY.
Aus den 40 Zeichen für den Namen kann man so 60 machen.
ALTER TABLE aufträge MODIFY name VARCHAR(60) NOT NULL;
Möchte man mehrere Optionen von ALTER TABLE gleichzeitig nutzen, trennt man diese mit Komma voneinander ab.