Datenbank

Aus Stradinger - IT Wissenssammlung
Zur Navigation springen Zur Suche springen

Verschiedene Arten von Datenbanken

Relationale 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.