CREATE TABLE erstellt eine neue Tabelle in der aktuellen Datenbank (Datenbank kann mittels USE db_name ausgewählt werden). CREATE TABLE CREATE TABLE tbl_name (create_definition,...) create_definition: col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [PRIMARY KEY] [reference_definition] oder PRIMARY KEY (index_col_name,...) oder KEY [index_name] KEY(index_col_name,...)
oder INDEX [index_name] (index_col_name,...)
oder UNIQUE [index_name] (index_col_name,...)
oder [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,...)
[reference_definition]
oder CHECK (expr)
Typ:
TINYINT[(length)] [UNSIGNED] [ZEROFILL]
oder SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
oder MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
oder INT[(length)] [UNSIGNED] [ZEROFILL]
oder INTEGER[(length)] [UNSIGNED] [ZEROFILL]
oder BIGINT[(length)] [UNSIGNED] [ZEROFILL]
oder REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
oder DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
oder FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
oder DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]
oder NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]
oder CHAR(length) [BINARY]
oder VARCHAR(length) [BINARY]
oder DATE
oder TIME
oder TIMESTAMP
oder DATETIME
oder TINYBLOB
oder BLOB
oder MEDIUMBLOB
oder LONGBLOB
oder TINYTEXT
oder TEXT
oder MEDIUMTEXT
oder LONGTEXT
oder ENUM(value1,value2,value3...)
oder SET(value1,value2,value3...)
index_col_name:
col_name [(length)]
index_col_name:
col_name [(length)]
reference_definition:
REFERENCES tbl_name [(index_col_name,...)]
[MATCH FULL | MATCH PARTIAL]
[ON DELETE reference_option]
[ON UPDATE reference_option]
reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
table_options:
type = [ISAM | MYISAM | HEAP]
oder auto_increment = #
oder avg_row_length = #
oder checksum = [0 | 1]
oder comment = "string"
oder max_rows = #
oder min_rows = #
oder pack_keys = [0 | 1]
oder password= "string"
Jede Tabelle wird durch drei Dateien im Datenbankverzeichnis
dargestellt:
- tbl_name.frm - Tabellendefinition
- tbl_name.ISD - Datenfile
- tbl_name.ISM - Indexfile
Anmerkung: ab MySQL 3.22 kann der Tabellenname mittels db_name.tbl_name angegeben
werden. Was hat es mit den drei Dateien auf sich ? In der
Tabellendefinition befindet sich die Struktur der Datenbank,
die Angaben über die Größen der Felder u.s.w. Im Datenfile
befinden sich alle Daten, die dort so abgelegt sind, daß die
schnell wiedergefunden werden können. Im Indexfile ist die
Datenbank als HASH-Tabelle abgelegt, welches die Suche im
Datenfile drastisch beschleunigt.
|