====== Tabellen erstellen ======
===== Syntax =====
CREATE Table Tabellenname
(
--Folgende Constraintart nennt man "Spaltenconstraints"
Spaltenname1 Spaltentyp [[Constraintname1] Constrainttyp [ON DELETE | ON UPDATE],
Spaltenname2 Spaltentyp [Constraintname2] Constrainttyp [ON DELETE | ON UPDATE],
...]
--Diese Constraints nennt man Tabellenconstraints
[CONSTRAINT Constraintname Constrainttyp (Spaltenname) [ON DELETE | ON UPDATE]
); --Strichpunkt zum Schluss ist wichtig,
--da oft mehrere Tabellen hintereinander gleichzeitig erzeugt werden
Beim Anlegen einer Tabelle können optional Constraints (Bedingungen) angegeben werden. Diese werden beim Erzeugen/Ändern/Löschen von Tabelleneinträgen überprüft. Bei Verletzungen der Constraintbedingung wird die Operation nicht durchgeführt.
===== Spaltentypen/Datentypen =====
{{:dbs:sql:datentypen.png?direct&|}}
===== Constrainttypen =====
{{:dbs:sql:constraint.png?direct&|}}
===== Beispiele =====
In den folgenden Beispielen erzeugen wir unsere Mitgliedertabelle.
{{:dbs:sql:mitarbeitertabelle_violett.png?direct&|}}
==== Beispiel Spaltenconstraints ====
CREATE TABLE Mitarbeiter (
Mitarbeiternummer INTEGER PRIMARY KEY,
Name VARCHAR2(30) NOT NULL,
Vorgesetzter INTEGER NOT NULL,
Gehalt NUMBER(10,2) NOT NULL, --NUMBER weil wir ja 2 Nachkommastellen beim Gehalt haben können
Abteilungsnummer INTEGER REFERENCES Abteilung(Abteilungsnummer)
);
==== Beispiel Tabellenconstraints ====
CREATE TABLE Mitarbeiter (
Mitarbeiternummer INTEGER,
Name VARCHAR2(30) NOT NULL,
Vorgesetzter INTEGER NOT NULL,
Gehalt NUMBER(10,2), --NUMBER weil wir ja 2 Nachkommastellen beim Gehalt haben können
Abteilungsnummer INTEGER,
CONSTRAINT pk_mitarbeiter_mitarbeiternummer PRIMARY KEY (Mitarbeiternummer),
CONSTRAINT fk_mitarbeiter_abteilungsnummer FOREIGN KEY Abteilungsnummer REFERENCES Abteilung(Abteilungsnummer)
);