Tabellen anlegen
Tabellen legt man mit
create table Tabellenname( Spalte1 Typ, Spalte2 Typ, ... , Constraints ); an.
Als Typ kann verwendet werden:
- int für ganze Zahlen
- float für Kommazahlen
- varchar(anzahl) für Text mit maximal Anzahl vielen Buchstaben. Die maximale Anzahl ist meist auf 216
beschränkt (also 65536)
- Date für ein Datum
- DateTime für eine Kombination aus Datum und Uhrzeit
- Time für eine Uhrzeit mit Stunden, Minuten und Sekunden
- weitere wie Blob, Clob, Bit, Bool, Decimal, Binary, ... die wir nicht brauchen
Bsp.: Eine Tabelle mit 3 Spalten: id als ganze Zahl und vorname, nachname als Text mit maximal 255 Buchstaben.
create table Person( id int, vorname varchar(255), name varchar(255) );
Primärschlüssel
Um Spalten als Primär- bzw. Fremdschlüssel anzugeben verwendet man sogenannte Constraints (Festlegungen/Vereinbarungen).
Mit
primary key(spalten) gibt man den Primärschlüssel an. Diese Spalten müssen dann eindeutige (unterschiedliche)
Daten beinhalten.
Bsp. 1: Die Spalte
id wird als Primärschlüssel festgelegt.
create table Person( id int, vorname varchar(255), name varchar(255),
primary key(id)
);
Bsp. 2: Die beiden Spalte
pid und
tid bilden zusammen den Primärschlüssel.
create table Person( pid int, tid int, primary key(pid, tid) );
Fremdschlüssel
Fremdschlüssel-Constraints haben die Form:
foreign key(Spalten) references AndereTabelle(Spalten)
Hinter
foreign key werden die Spalten in der aktuellen Tabelle aufgelistet.
Hinter
references wird die Tabelle angegeben auf die verwiesen wird und in Klammern die Spalten dieser Tabelle.
Die Anzahl der Spalten im Fremdschlüssel und der referenzierten Tabelle müssen übereinstimmen.
Bsp. 1: Bei einer 1:n-Beziehung zwischen Klasse und Schüler sieht die Tabellenerzeugung so aus:
create table Klasse( id int, name varchar(255),
primary key(id)
);
create table Schüler( id int, vorname varchar(255), ..., kid int,
primary key(id),
foreign key(kid) references Klasse(id)
)
Bsp. 2: Die beiden Spalte
pid und
tid bilden zusammen den Primärschlüssel.
create table Person( pid int, tid int,
primary key(pid, tid),
foreign key(pid) references Person(id),
foreign key(tid) references Telefon(id)
);
Diese Tabelle ist eine typische Zwischentabelle wie sie bei einer n:m-Relation verwendet wird.
Der Primärschlüssel besteht aus den zwei Spalten, wobei jede Spalte als Fremdschlüssel auf eine andere Tabelle verweißt.
Hier verweißt die Spalte pid auf die Spalte id der Tabelle Person und
die Spalte tid auf die Spalte id der Tabelle Telefon.
Weitere Constraints
Manche Constraints kann man direkt bei der Spaltendefinition angeben.
Ein häufig verwendetes Constraint ist
not null, welches
festlegt, dass die Spalte einen Wert haben muss, also nicht null sein darf.
Bsp.: Der Name und Vorname dürfen hier nicht leer gelassen werden.
create table Person( id int,
name varchar(255) not null,
vorname varchar(255) not null,
geb date
);
Das Constraint
unique legt fest, dass jeder Wert in dieser Spalte
nur einmal vorkommen darf.
Dies gilt über alle Datensätze der Tabelle hinweg.
Primärschlüssel sind automatisch
not null und
unique.
Bsp.: Bücher haben eine unterschiedliche ISBN. Daher ist sie nicht null und eindeutig.
create table Buch( id int,
isbn varchar(13) not null unique,
titel varchar(255) not null,
primary key(id)
);
Mit
default=Wert kann ein Standartwert für die Spalte
festgelegt werden. Wird ein Datensatz eingefügt ohne einen Wert
für diese Spalte anzugeben, so erhält sie diesen Default-Wert.
Bsp.: Wenn kein Land angegeben wird ist es Deutschland.
create table Person( id int,
name varchar(255) not null,
land varchar(255) default='Deutschland', ...,
primary key(id)
);