内容摘要:
目录简介:
1.
2.
3.
4.
5.
6.
7.
标签:
CREATE 操作项目
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
column_definition:
col_name type
[NOT NULL | NULL] [DEFAULT default_value]
table_option:
语法说明:
type:列的数据类型。有的数据类型需要指明长度n,并用括号括起。具体的类型可参考其他资料或关注后继博文。
NOT NULL | NULL:指定该列是否允许为空。如果既不指定NULL也不指定NOT NULL,列被认为指定了NULL。
DEFAULT default_value:为列指定默认值。如果没有为列指定默认值,MySQL自动地分配一个。如果列可以取NULL作为值,缺省值是NULL。如果列被声明为NOT NULL,缺省值取决于列类型:
1、对于没有声明AUTO_INCREMENT属性的数字类型,缺省值是0。对于一个AUTO_INCREMENT列,缺省值是在顺
3、对于除ENUM的字符串类型,缺省是空字符串。对于ENUM,缺省值是第一个枚举值。
AUTO_INCREMENT:设置该列有自增属性,只有整型列才能设置此属性。当你插入NULL值或0到一个AUTO_INCREMENT列中时,列被设置为value+1,在这里 value是此前表中该列的最大值。AUTO_INCREMENT顺序从1开始。每个表只能有一个AUTO_INCREMENT列,并且它必须被索引。
UNIQUE:在UNIQUE索引中,所有的值必须互不相同。如果您在添加新行时使用的关键字与原有行的关键字相同,则会出现错误。
KEY:KEY通常是INDEX同义词。如果关键字属性PRIMARY KEY在列定义中已给定,则PRIMARY KEY也可以只指定为KEY。这么做的目的是与其它数据库系统兼容。
PRIMARY KEY:是一个唯一KEY,此时,所有的关键字列必须定义为NOT NULL。如果这些列没有被明确地定义为NOT NULL,MySQL应隐含地定义这些列。一个表只有一个PRIMARY KEY。如果您没有PRIMARY KEY并且一个应用程序要求在表中使用PRIMARY KEY,则MySQL返回第一个UNIQUE索引,此索引没有作为PRIMARY KEY的NULL列。
COMMENT:对于列的评注可以使用COMMENT选项来进行指定。评注通过SHOW CREATE TABLE和SHOW FULL COLUMNS语句显示。
备注:通过SHOW CREATE TABLE tbl_name可以查看对应表的建表语句。
ENGINE和TYPE选项用于为表指定存储引擎。ENGINE是首选的选项名称。
如果被指定的存储引擎无法利用,则MySQL使用MyISAM代替。例如,一个表定义包括ENGINE=BDB选项,但是MySQL服务器不支持BDB表,则表被创建为MyISAM表。
目前主要常用InnoDB和MyISAM引擎。InnoDB支持事务,MyISAM不支持;InnoDB对数据插入是行锁,MyISAM是表所,所以在大量的数据更新和插入操作的系统中建议MyISAM引擎。这个是两个简单的比较差别。
·AUTO_INCREMENT表的初始AUTO_INCREMENT值。您也可以使用ALTER TABLE tbl_nameAUTO_INCREMENT = n来重新设置AUTO_INCREMENT值。
·AVG_ROW_LENGTH表中平均行长度的近似值。只需要对含尺寸可变的记录的大型表进行此项设置。
·[DEFAULT] CHARACTER SET用于为表指定一个默认字符集。CHARSET是CHARACTER SET的同义词。支持中文字符集的话用utf-8
·COLLATE
用于为表指定一个默认整序。
·CHECKSUM
如果您希望MySQL随时对所有行进行实时检验求和(也就是,表变更后,MySQL自动更新检验求和),则应把此项设置为1。这样做,表的更新速度会略微慢些,但是更容易寻找到受损的表。CHECKSUM TABLE语句用于报告检验求和(仅限于MyISAM)。
·COMMENT表的注释,最长60个字符。
·CONNECTIONFEDERATED表的连接字符串。(备注:较早版本的MySQL使用COMMENT选项用于连接字符串。
·MAX_ROWS您打算储存在表中的行数目的最大值。这不是一个硬性限值,而更像一个指示语句,指示出表必须能存储至少这么多行。
·MIN_ROWS您打算存储在表中的行数目的最小值。
·PACK_KEYS如果您希望索引更小,则把此选项设置为1。这样做通常使更新速度变慢,同时阅读速度加快。把选项设置为0可以取消所有的关键字压缩。把此选项设置为DEFAULT时,存储引擎只压缩长的CHAR或VARCHAR列(仅限于MyISAM)。
·PASSWORD使用密码对.frm文件加密。在标准MySQL版本中,本选项不起任何作用。
·DELAY_KEY_WRITE如果您想要延迟对关键字的更新,等到表关闭后再更新,则把此项设置为1(仅限于MyISAM)。
·ROW_FORMAT定义各行应如何储存。当前,此选项只适用于MyISAM表。对于静态行或长度可变行,此选项值可以为FIXED或DYNAMIC。myisampack用于把类型设置为COMPRESSED。请参见15.1.3节,“MyISAM表的存储格式”。
在默认情况下,InnoDB记录以压缩格式存储(ROW_FORMAT=COMPACT)。通过指定ROW_FORMAT=REDUNDANT,仍然可以申请用于较早版本的MySQL中的非压缩格式。
·RAID_TYPE在MySQL 5.0中,RAID支持被删除了
·UNION当您想要把一组相同的表当作一个表使用时,采用UNION。UNION仅适用于MERGE表。请参见15.3节,“MERGE存储引擎”。对于您映射到一个MERGE表上的表,您必须拥有SELECT, UPDATE和DELETE权限。(注释:以前,所有被使用的表必须位于同一个数据库中,并作为MERGE表。这些限制不再适用。)
·INSERT_METHOD如果您希望在MERGE表中插入数据,您必须用INSERT_METHOD指定应插入行的表。INSERT_METHOD选项仅用于MERGE表。使用FIRST或LAST把行插入到第一个或最后一个表中;或者使用NO,阻止插入行。请参见15.3节,“MERGE存储引擎”。
·DATA DIRECTORY, INDEX DIRECTORY通过使用DATA DIRECTORY='directory'或INDEX DIRECTORY='directory',您可以指定MyISAM存储引擎放置表格数据文件和索引文件的位置。注意,目录应是通向目录的完整路径(不是相对路径)。
实际使用 SHOW CREATE TABLE tbl_name查询的内容,如下是完整的建表语句。如果仅仅想查看表结构及字段定义 可使用DESC tbl_name.
CREATE TABLE `roles` (
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8