|
Create Table - Statement
Bedeutung: Mit der CREATE TABLE-Anweisung lassen sich Tabellen in einer bereits existierenden(!) Datenbank anlegen. Hinweis: Wegen der Fülle von Optionen bei diesem Statement werde ich hier nur die grundlegensten (!) Möglichkeiten aufzeigen. Wichtig zum Verständnis von CREATE TABLE sind vor allem die Datentypen/Feldtypen von MySQL. Eine neue Tabelle per SQL-Statement erzeugen Allgemeine Form:
Der optionale Zusatz IF NOT EXISTS verhindert die Ausgabe einer Fehlermeldung falls die Tabelle tabellenname bereits besteht. Am Schluß des obigen Satements wird noch ein Primärschlüssel/Index angelegt. Alle Feldnamen sowie der jeweilige Feldtyp stehen zwischen den beiden Klammern. Hinter jedem Feldnamen steht die genauere Spezifizierung des Feldtyps. Hinter dem jeweiligen Feldtyp ist bei drei Feldern noch ein DEFAULT-Wert angegeben. Werden später Werte in die Tabelle eingefügt so brauchen diese Felder beim INSERT-Statement nicht mit angegeben werden - sofern der einzutragende Wert dem DEFAULT-Wert des Feldes entspricht. Das Feld feld1 ist als auto_increment spezifiziert. Dieses Feld wird bei späteren INSERT-Statements automatisch mit einem (eindeutigen) Zahlenwert von 1 bis X gefüllt. Dieses Feld braucht bei INSERT-Statements deshalb nicht mit angegeben werden. Hinweis: Ein AUTO_INCREMENT Feld sollte in jeder Tabelle vorhanden sein. In vielen Fällen kann man bei einem späteren UPDATE-Statement nur so jeden Datensatz wirklich eindeutig adressieren. Eine neue Tabelle aus einer bereits bestehenden Tabelle erzeugen Es ist auch möglich, aus einer bereits bestehenden Tabelle eine neue Tabelle zu erzeugen. Die Daten der bereits bestehenden Tabelle können wahlweise mit übernommen werden. Allgemeine Form: Ohne Datenübernahme
Da die WHERE-Bedingung niemals zutrifft wird auch kein Datensatz aus der bestehenden Tabelle ausgewählt. Deshalb wird nur die Struktur (alle Felder!) der alten Tabelle in die neue übernommen. Mit Datenübernahme
Hier werden sowohl die Struktur (alle Felder!) als auch die Daten der alten Tabelle übernommen. INDIZES werden nicht übernommen! Möchte man nur bestimmte Felder aus der bereits bestehenden Tabelle bzw. aus den bereits bestehenden Tabellen übernehmen so müssen diese wie in einem normalen SELECT-Statement mit angegeben werden. Beispiel:
Im obigen Beispiel werden nur die fünf angegebenen Felder in der neuen Tabelle angelegt. Es werden nur die Daten aus den beiden bestehenden Tabellen übernommen, die die WHERE-Bedingung erfüllen. Beispiele zum Erstellen von Tabellen Um den Einstieg in das Erstellen von Tabellen zu erleichtern sind unten beispielhaft drei CREATE-Statements wiedergegeben. Ich habe die Statements bewußt nach Numerischen-, String- und Datumstypen getrennt. Natürlich kann man die Feldtypen auch zusammen verwenden. Teilweise sind optionale Angaben zu den jeweiligen Feldtypen gemacht worden. Jedes Statement enthält einen PRIMARY KEY vom Hinter dem jeweiligen Feldnamen folgt der Feldtyp. Danach folgt entweder die maximale Länge, das Format oder die Liste der aufnehmbaren Werte. In vielen Fällen ist danach der DEFAULT-Wert angegeben. Am Schluß fast jeder Feld-Definition ist nochmal angegeben, ob das Feld den Wert 'NULL' (nicht zu verwechseln mit mit der Zahl '0', NULL bedeutet hier soviel wie 'Nichts') haben kann. Soweit möglich sollte man aus Performancegründen alle Felder als NOT NULL deklarieren. a) Erstellen einer Tabelle mit numerischen Feldtypen:
b) Erstellen einer Tabelle mit String-Feldtypen:
c) Erstellen einer Tabelle mit Datums-Feldtypen:
|
||||||||||||||
|
Letzte Änderung: 17. Mai 2002, 22:26 Uhr © 2002, Klaus Becker, becker-k@web.de |