Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03345.jsonl.gz/965

Der CREATE Befehl ist besonders wichtig, da ohne eine solide Datenbankstruktur nichts korrekt läuft. Man sollte sich gut überlegen, welche Typen und Attribute man verwendet, sowie man die Datenbank am geschicktesten anlegt.
- Wird eineSpalte ohne NULL oder NOT NULL definiert,wird diese automatisch als NULL definiert.
- Eine Spaltevom Typ INTEGER kann zusätzlich das Attribut AUTO_INCREMENTerhalten. Wodurch automatisch nach dem Einfügen einesneuen Datensatzes dieses Feld einen um 1 höheren Werterhält als der höchste in dieser Spalte vorhandene Wert.Wird die Spalte wieder gelöscht, so steht dieser Feldwertbei dem nächsten Datensatz wieder zur Verfügung. Anmerkung:Pro Tabelle kann immer nur 1 Feld das AUTO_INCREMENTAttribut erhalten.
- NULL-Wertewerden bei Feldern vom Typ TIMESTAMP ignoriert.In diesen Feldern kann nicht der Wert NULL abgelegt werden.In diesem Fall wird immer das aktuelle Datum abgelegt.Hierbei ist zu beachten, daß der Wert 0 nicht demWert NULL entspricht. Der Wert 0 ist wiederum einzulässiger Wert, welcher in solch einem Feld abgelegtwerden kann.
- Wird für eine
Spalte kein DEFAULT vorgegeben und wird diese als
NOT NULL definiert, wird der Wert NULL als
DEFAULT verwendet.
- Wird eine
Spalte ohne DEFAULT-Wert angelegt und als NOT
NULL definiert, legt MySQL, abhängig vom Datentyp
einen Defaultwert automatisch fest.
- Bei nummerischen
Datentypen ist dies 0.
- Bei DATE
und TIME Typen ist dies der Startwert dieses
Typs.
- Bei String-Typen
ist dies ein leerer String.
- KEY ist ein Synonym
für INDEX
- Ein UNIQUE
KEY kann nur eindeutige Werte besitzen. Wird mehrmals
versucht den gleichen Wert zu verwenden, kommt es zu einer
Fehlermeldung
- Ein PRIMARY
KEY stellt einen eindeutigen Key dar. Jede Tabelle
kann maximal einen PRIMARY KEY besitzen. MySQL
legt den ersten UNIQUE KEY als PRIMARY KEY
fest, sofern kein PRIMARY KEY definiert wurde
- Ein PRIMARY
KEY kann aus mehreren Spalten zusammengesetzt sein
(bis zu 16 bzw. 32 (3.23.x). Allerdings darf ein mehrspaltiger
Index keine PRIMARY KEY Spalte enthalten. Dies
führt zu einer Fehlermeldung.
- Wird beim
Definieren eines INDEX kein Name für diesen INDEX
angegeben, so wird der Name des ersten Feldes, daß im
Index enthalten ist, mit einem Suffix z.B. _2, _3, ...
verwendet.
- Spalten, welche
indiziert oder Teil eines INDEX sind, können keine
NULL Werte enthalten. Diese Spalten müssen als
NOT NULL deklariert werden.
- Mit der col_name(länge)-Syntaxe
kann der Teil eines CHAR oder VARCHAR feldes
festgelegt werden, der in den Index einfließt.
- TEXT und BLOB
Felder können nicht iniziert sein.
- Die FOREIGN
KEY, CHECK und REFERENCES Klausen haben
zur Zeit keinerlei Auswirkung. Diese Syntax wird nur zur
Verfügung gestellt um kompatibel zu anderen SQL-Servern
zu sein.
- In manchen
Fällen ändert MySQL automatisch die Felddefinitionen,
welche in der CREATE-Anweisung enhalten sind um:
- VARCHAR Felder mit
einer Länge kleiner 4 werden in CHAR umgewandelt
- TIMESTAMP Felder müssen
eine Länge von mindesten 2 und maximal 14 haben. Wird
ein Wert auserhalb dieser Range angegeben, wird er auf
14 gesetzt.
Die Optionen table_options
und einige SELECT Optionen gibt es erst ab der MySQL Version
3.23. Hier wurden folgende Typen hinzugefügt:
- ISAM Der originale
Tabellen Handler (default Einstellung)
- MyISAM Ist die neue,
für SQL optimierte MyISAM Datenbankstruktur. Diese ist
nicht zum Vorgänger kompatibel. Falls Sie also updaten
möchten, müssen Sie alle Daten zwischen zwei MySQL Datenbanken
kopieren. (Setzen Sie einfach hierzu eine neue MySQL Datenbank
auf einem anderen Port auf)
- HEAP Ist die Datenstruktur
für eine Tabelle, die nur im RAM abgelegt wird. Entsprechend
sind die Zugriffe darauf ca. 5-30x schneller, als auf
die normale Datenbank. Dies kann VIEWS vollständig ersetzen.
Hier gibt es noch ein paar
Optionen, die nur in Tabellen mit der neuen, MyISAM Struktur
funktionieren:
- checksum ist ganz
nützlich, wenn man eine Korruption in der Datenstruktur
feststellen können muß. (Wert auf 1 setzen)
- max_rows ist der Wert
der maximalen Spalten in einer Tabelle und wichtig für
ISP´s, die die Auswirkungen von unsinnigen CREATE Statements
klein halten möchten.
- min_rows ist der entsprechende
Minimalwert
- pack_keys sollte auf
1 gesetzt werden, damit der INDEX kleiner wird. Bei Updates
ist MySQL etwas langsamer, beim Lesen viel schneller.
- password verschlüsselt
die .frm Datei mit einem Passwort