• CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [select_statement]
    Or:
    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(] LIKE old_tbl_name [)];
    create_definition:
    column_definition
    | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)
    | KEY [index_name] [index_type] (index_col_name,...)
    | INDEX [index_name] [index_type] (index_col_name,...)
    | [CONSTRAINT [symbol]] UNIQUE [INDEX] [index_name] [index_type] (index_col_name,...)
    | [FULLTEXT|SPATIAL] [INDEX] [index_name] (index_col_name,...)
    | [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition]
    | CHECK (expr)
    column_definition:
    col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string'] [reference_definition]
    type:
    TINYINT[(length)] [UNSIGNED] [ZEROFILL]
    | SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
    | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
    | INT[(length)] [UNSIGNED] [ZEROFILL]
    | INTEGER[(length)] [UNSIGNED] [ZEROFILL]
    | BIGINT[(length)] [UNSIGNED] [ZEROFILL]
    | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
    | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
    | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
    | DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]
    | NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]
    | DATE
    | TIME
    | TIMESTAMP
    | DATETIME
    | YEAR
    | CHAR(length) [BINARY | ASCII | UNICODE]
    | VARCHAR(length) [BINARY] | BINARY(length)
    | VARBINARY(length)
    | TINYBLOB
    | BLOB
    | MEDIUMBLOB
    | LONGBLOB
    | TINYTEXT [BINARY]
    | TEXT [BINARY]
    | MEDIUMTEXT [BINARY]
    | LONGTEXT [BINARY]
    | ENUM(value1,value2,value3,...)
    | SET(value1,value2,value3,...)
    | spatial_type
    index_col_name:
    col_name [(length)] [ASC | DESC]
    reference_definition:
    REFERENCES tbl_name [(index_col_name,...)]
    [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
    [ON DELETE reference_option]
    [ON UPDATE reference_option]
    reference_option:
    RESTRICT | CASCADE | SET NULL | NO ACTION
    table_options: table_option [table_option] ...
    table_option:
    {ENGINE|TYPE} [=] engine_name
    | AUTO_INCREMENT [=] value
    | AVG_ROW_LENGTH [=] value
    | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]
    | CHECKSUM [=] {0 | 1}
    | COMMENT [=] 'string'
    | CONNECTION [=] 'connect_string'
    | MAX_ROWS [=] value
    | MIN_ROWS [=] value
    | PACK_KEYS [=] {0 | 1 | DEFAULT}
    | PASSWORD [=] 'string'
    | DELAY_KEY_WRITE [=] {0 | 1}
    | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}
    | UNION [=] (tbl_name[,tbl_name]...)
    | INSERT_METHOD [=] { NO | FIRST | LAST }
    | DATA DIRECTORY [=] 'absolute path to directory'
    | INDEX DIRECTORY [=] 'absolute path to directory'
    select_statement:
    [IGNORE | REPLACE] [AS] SELECT ... (Some legal select statement)

    以上摘自MySQL5.0参考手册13.1.5节创建表语法
    下面属于原创,转载请著名出处:http://pctech.blogbus.com

    `db_name`.`tbl_name`合法
    TEMPORARY用于创建临时表
    IF NOT EXISTS参数不考虑是否存在一个同名表
    默认NULL
    整型值有一个附加属性“自增加”,添加一个NULL(推荐)或者0时,就会添加下一个序列值。当前表中的最大值加一,默认“自增加”从1开始。在插入新行后重新得到“自增加”值,可以使用LAST_INSERT_ID()函数或者mysql_insert_id()这个C API函数。如果NO_AUTO_VALUE_ON_ZERO激活的话,你可以存储0到你的“自增加”字段。
    一个表只能有一个“自增加”字段,并且不能有默认值。“自增加”字段能很好的运行在正值下,如果插入一个负值,负值被认为是很大很大的正值。