col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [ UNIQUE [ KEY ] | [ PRIMARY ] KEY ]
创建表时,要设置表中每列的属性,常规属性有一下值:
AUTO_INCREMENT:设置自增属性,只有整型列才能设置此属性。 AUTO_INCREMENT顺序从1开始,每个表只能有一个AUTO_INCREMENT列,并且必须被索引。
NOT NULL | NULL :指定改列是否允许为空。如果不指定,则默认为NULL。
DEFAULT value:为列指定默认值,如果没有为列指定默认值,mysql自动地分配一个。如果列可以取NULL值,默认值就是NULL,如果列被声明为NOT NULL,默认值取决于列类型:
(1)对于没有声明AUTO_INCREMENT属性的数字类型,默认值是0,对一个AUTO_INCREMENT列,默认值是在顺序中的下一个值。
(2)对于除TIMESTAMP列以外的日期和时间类型,默认值是改类型适当的“零”值。对于表中的第一个TIMESTAMP列,默认值是当前的日期和时间。
(3)对于除ENUM的字符串类型,默认值是空字符串。对于ENUM,默认值是第一个枚举值。
UNIQUE KEY | PRIMARY KEY :PRIMARY KEY 和UNIQUE KEY都表示字符端中的值是唯一的。PRIMARY KEY 表示设置为主键,一个表只能有一个主键,主键一定要为NOT NULL。
复制现成的表
CREATE [ TEMPORARY ] TABLE [ IF NOT EXISTS ] tbl_name [ LIKE old_tbl_name ] | [ AS (select_statement) ]
说明:
(1)使用like关键字创建一个与old_table_name表相同结构的新表,列名、数据类型、空指定和索引也将复制,但是表的内容不会复制,因此创建的新表是一个空表。
(2)使用AS关键字可以复制表的内容,但是索引和完整性约束是不会复制的。select_statement是一个表达式,例如可以使一条SELECT语句。
create table user_copy1 like user (复制user的表数据结构到user_copy1)
create table user_copy2 as (select * from user) 复制表user_copy2,其中结构和内容都取自user表。