在本教程中,你将学习如何使用MySQLCREATETABLE语句在数据库中创建新表。
CREATETABLE语句允许你在数据库中创建一个新表。
CREATETABLE语句的基本语法CREATETABLE[IFNOTEXISTS]table_name(
column1datatypeconstraints,
column2datatypeconstraints,
...
)ENGINE=storage_engine;
在此语法中:
table_name:这是要创建的表的名称。
column1、column2等:表中列的名称。
datatype:每列的数据,如INT、VARCHAR、DATE等。
constraints:这些是可选的约束,如NOTNULL、UNIQUE、PRIMARYKEY和FOREIGNKEY。
如果创建的表的名称已存在于数据库中,则会出现错误。为了避免出现错误,可以使用IFNOTEXISTS选项。
在MySQL中,每个表都有一个存储引擎,如InnoDB或MyISAM。ENGINE子句允许你指定表的存储引擎。
如果没有明确指定存储引擎,MySQL将使用默认的存储引擎InnoDB。
InnoDB从MySQL5.5版本开始成为默认的存储引擎。InnoDB存储引擎提供了关系数据库管理系统的几个优点,包括ACID事务支持、引用完整性和崩溃恢复。在早期版本中,MySQL使用MyISAM作为默认存储引擎。
MySQLCREATETABLE语句示例让我们举一些创建新表的例子。
CREATETABLE基本语句示例
以下示例使用CREATETABLE语句创建一个名为tasks的新表:
CREATETABLEtasks(
idINTPRIMARYKEY,
titleVARCHAR()NOTNULL,
start_dateDATE,
due_dateDATE
);
tasks表有四列:
id是一个INT列,用作主键列。
title是VARCHAR列,不能为NULL。
start_date和end_date是date列,可以为NULL。
要执行CREATETABLE语句:
首先,使用具有CREATE权限的帐户从终端使用MySQL命令登录MySQL服务器:
mysql-uroot-p
它将提示你输入密码:
输入密码:********
接下来,创建一个名为test的新数据库:
CREATEDATABASEtest;
如果数据库已经存在,可以在执行上述语句之前先将其删除:
DROPDATABASEtest;
然后,选择要使用的测试数据库:
USEtest;
之后,执行CREATETABLE语句:
CREATETABLEtasks(
idINTPRIMARYKEY,
titleVARCHAR()NOTNULL,
start_dateDATE,
due_dateDATE
);
最后,列出测试数据库中的所有表:
SHOWTABLES;
输出:
+----------------+
Tables_in_test
+----------------+
tasks
+----------------+1rowinset(0.00sec)
它显示了我们创建的表tasks。
创建带有外键的表示例
假设每个task都有一个检查表。要存储任务的检查表,可以创建一个名为checklists的新表,如下所示:
CREATETABLEchecklists(
idINT,
task_idINT,
titleVARCHAR()NOTNULL,
is_