关于如何在MySQL中创建表,看这篇文章就差不多了

驾驭信息纵横科技 2024-04-26 15:28:09

在本教程中,你将学习如何使用MySQL CREATE TABLE语句在数据库中创建新表。

CREATE TABLE语句允许你在数据库中创建一个新表。

CREATE TABLE语句的基本语法

CREATE TABLE [IF NOT EXISTS] table_name(

column1 datatype constraints,

column2 datatype constraints,

...

) ENGINE=storage_engine;

在此语法中:

table_name:这是要创建的表的名称。

column1、column2等:表中列的名称。

datatype:每列的数据,如INT、VARCHAR、DATE等。

constraints:这些是可选的约束,如NOT NULL、UNIQUE、PRIMARY KEY和FOREIGN KEY。

如果创建的表的名称已存在于数据库中,则会出现错误。为了避免出现错误,可以使用IF NOT EXISTS选项。

在MySQL中,每个表都有一个存储引擎,如InnoDB或MyISAM。ENGINE子句允许你指定表的存储引擎。

如果没有明确指定存储引擎,MySQL将使用默认的存储引擎InnoDB。

InnoDB从MySQL 5.5版本开始成为默认的存储引擎。InnoDB存储引擎提供了关系数据库管理系统的几个优点,包括ACID事务支持、引用完整性和崩溃恢复。在早期版本中,MySQL使用MyISAM作为默认存储引擎。

MySQL CREATE TABLE语句示例

让我们举一些创建新表的例子。

CREATE TABLE基本语句示例

以下示例使用CREATE TABLE语句创建一个名为tasks的新表:

CREATE TABLE tasks (

id INT PRIMARY KEY,

title VARCHAR(255) NOT NULL,

start_date DATE,

due_date DATE

);

tasks表有四列:

id是一个INT列,用作主键列。

title是VARCHAR列,不能为NULL。

start_date和end_date是date列,可以为NULL。

要执行CREATE TABLE语句:

首先,使用具有CREATE权限的帐户从终端使用MySQL命令登录MySQL服务器:

mysql -u root -p

它将提示你输入密码:

输入密码:********

接下来,创建一个名为test的新数据库:

CREATE DATABASE test;

如果数据库已经存在,可以在执行上述语句之前先将其删除:

DROP DATABASE test;

然后,选择要使用的测试数据库:

USE test;

之后,执行CREATE TABLE语句:

CREATE TABLE tasks (

id INT PRIMARY KEY,

title VARCHAR(255) NOT NULL,

start_date DATE,

due_date DATE

);

最后,列出测试数据库中的所有表:

SHOW TABLES;

输出:

+----------------+

| Tables_in_test   |

+----------------+

| tasks                 |

+----------------+

1 row in set (0.00 sec)

它显示了我们创建的表tasks。

创建带有外键的表示例

假设每个task都有一个检查表。要存储任务的检查表,可以创建一个名为checklists的新表,如下所示:

CREATE TABLE checklists(

id INT,

task_id INT,

title VARCHAR(255) NOT NULL,

is_completed BOOLEAN NOT NULL DEFAULT FALSE,

PRIMARY KEY (id, task_id),

FOREIGN KEY (task_id)

REFERENCES tasks (id)

ON UPDATE RESTRICT

ON DELETE CASCADE

);

表checklists有一个由两列组成的主键。因此,我们需要使用表约束来定义主键:

PRIMARY KEY (id, task_id)

此外,task_id是引用tasks表的id列的外键列,因此,我们使用外键约束来建立这种关系:

FOREIGN KEY (task_id)

REFERENCES tasks (id)

ON UPDATE RESTRICT

ON DELETE CASCADE

0 评论: 0 阅读:5