MySQL中create table语句的基本语法是
程序员文章站
2022-06-07 20:02:42
mysql中create table语句的基本语法是: create [temporary] table [if&nbs...
mysql中create table语句的基本语法是:
create [temporary] table [if not exists] tbl_name [(create_definition,...)]
[table_options] [select_statement]
temporary:该关键字表示用create table新建的表为临时表,此表在当前会话结束后将自动消失。临时表主要被应用于存储过程中,对于目前尚不支持存储过程的mysql,该关键字一般不用。
if not exists:实际上是在建表前加上一个判断,只有该表目前尚不存在时才执行create table操作。用此选项可以避免出现表已经存在无法再新建的错误。
tbl_name:你所要创建的表的表名。该表名必须符合标识符规则。通常的做法是在表名中仅使用字母、数字及下划线。例如titles、our_sales、my_user1等都应该算是比较规范的表名。
create_definition:这是create table语句中关键部分所在。在该部分具体定义了表中各列的属性。
create_definition的基本语句是:
col_name type [not null | null] [default default_value] [auto_increment]
[primary key] [reference_definition]
or primary key (index_col_name,...)
or key [index_name] (index_col_name,...)
or index [index_name] (index_col_name,...)
or unique [index] [index_name] (index_col_name,...)
or [constraint symbol] foreign key index_name (index_col_name,...)
[reference_definition]
or check (expr)
col_name:表中列的名字。必须符合标识符规则,而且在表中要唯一。
type:列的数据类型。有的数据类型需要指明长度n,并用括号括起。目前mysql提供的数据类型详见mysql进阶_列类型篇。
not null | null:指定该列是否允许为空。如果既不指定null也不指定not null,列被认为指定了null。
default default_value:为列指定默认值。如果没有为列指定默认值,mysql自动地分配一个。如果列可以取null作为值,缺省值是null。如果列被声明为not null,缺省值取决于列类型: 1、对于没有声明auto_increment属性的数字类型,缺省值是0。对于一个auto_increment列,缺省值是在顺序中的下一个值。 2、对于除timestamp的日期和时间类型,缺省值是该类型适当的“零”值。对于表中第一个timestamp列,缺省值是当前的日期和时间。3、对于除enum的字符串类型,缺省是空字符串。对于enum,缺省值是第一个枚举值。
auto_increment:设置该列有自增属性,只有整型列才能设置此属性。当你插入null值或0到一个auto_increment列中时,列被设置为value+1,在这里value是此前表中该列的最大值。auto_increment顺序从1开始。每个表只能有一个auto_increment列,并且它必须被索引。
create [temporary] table [if not exists] tbl_name [(create_definition,...)]
[table_options] [select_statement]
temporary:该关键字表示用create table新建的表为临时表,此表在当前会话结束后将自动消失。临时表主要被应用于存储过程中,对于目前尚不支持存储过程的mysql,该关键字一般不用。
if not exists:实际上是在建表前加上一个判断,只有该表目前尚不存在时才执行create table操作。用此选项可以避免出现表已经存在无法再新建的错误。
tbl_name:你所要创建的表的表名。该表名必须符合标识符规则。通常的做法是在表名中仅使用字母、数字及下划线。例如titles、our_sales、my_user1等都应该算是比较规范的表名。
create_definition:这是create table语句中关键部分所在。在该部分具体定义了表中各列的属性。
create_definition的基本语句是:
col_name type [not null | null] [default default_value] [auto_increment]
[primary key] [reference_definition]
or primary key (index_col_name,...)
or key [index_name] (index_col_name,...)
or index [index_name] (index_col_name,...)
or unique [index] [index_name] (index_col_name,...)
or [constraint symbol] foreign key index_name (index_col_name,...)
[reference_definition]
or check (expr)
col_name:表中列的名字。必须符合标识符规则,而且在表中要唯一。
type:列的数据类型。有的数据类型需要指明长度n,并用括号括起。目前mysql提供的数据类型详见mysql进阶_列类型篇。
not null | null:指定该列是否允许为空。如果既不指定null也不指定not null,列被认为指定了null。
default default_value:为列指定默认值。如果没有为列指定默认值,mysql自动地分配一个。如果列可以取null作为值,缺省值是null。如果列被声明为not null,缺省值取决于列类型: 1、对于没有声明auto_increment属性的数字类型,缺省值是0。对于一个auto_increment列,缺省值是在顺序中的下一个值。 2、对于除timestamp的日期和时间类型,缺省值是该类型适当的“零”值。对于表中第一个timestamp列,缺省值是当前的日期和时间。3、对于除enum的字符串类型,缺省是空字符串。对于enum,缺省值是第一个枚举值。
auto_increment:设置该列有自增属性,只有整型列才能设置此属性。当你插入null值或0到一个auto_increment列中时,列被设置为value+1,在这里value是此前表中该列的最大值。auto_increment顺序从1开始。每个表只能有一个auto_increment列,并且它必须被索引。