1、下面以简单的形式来说明CREATE TABLE
语句的语法:
CREATE TABLE [IF NOT EXISTS] table_name(
column_list
) engine=table_type;
-
首先,指定要在
CREATE TABLE
子句之后创建的表的名称。表名在数据库中必须是唯一的。IF NOT EXISTS
是语句的可选部分,允许您检查正在创建的表是否已存在于数据库中。 如果是这种情况,MySQL将忽略整个语句,不会创建任何新的表。 强烈建议在每个CREATE TABLE
语句中使用IF NOT EXISTS
来防止创建已存在的新表而产生错误。 -
其次,在
column_list
部分指定表的列表。字段的列用逗号(,
)分隔。我们将在下一节中向您展示如何更详细地列(字段)定义。 -
第三,需要为
engine
子句中的表指定存储引擎。可以使用任何存储引擎,如:InnoDB,MyISAM,HEAP,EXAMPLE,CSV,ARCHIVE,MERGE, FEDERATED或NDBCLUSTER。如果不明确声明存储引擎,MySQL将默认使用InnoDB。
注:InnoDB自MySQL 5.5之后成为默认存储引擎。 InnoDB表类型带来了诸如ACID事务,引用完整性和崩溃恢复等关系数据库管理系统的诸多好处。在以前的版本中,MySQL使用MyISAM作为默认存储引擎。
要在CREATE TABLE
语句中为表定义列,请使用以下语法:
column_name data_type[size] [NOT NULL|NULL] [DEFAULT value]
[AUTO_INCREMENT]
以上语法中最重要的组成部分是:
column_name
指定列的名称。每列具有特定数据类型和大小,例如:VARCHAR(255)
。NOT NULL
或NULL
表示该列是否接受NULL
值。DEFAULT
值用于指定列的默认值。AUTO_INCREMENT
指示每当将新行插入到表中时,列的值会自动增加。每个表都有一个且只有一个AUTO_INCREMENT
列。
CREATE TABLE IF NOT EXISTS tasks (
task_id INT(11) NOT NULL AUTO_INCREMENT,
subject VARCHAR(45) DEFAULT NULL,
start_date DATE DEFAULT NULL,
end_date DATE DEFAULT NULL,
description VARCHAR(200) DEFAULT NULL,
PRIMARY KEY (task_id)
) ENGINE=InnoDB;