MySQL通过示例创建表语句
MySQL创建表语法
CREATE TABLE语句允许您在数据库中创建新表。
下面说明了CREATE TABLE语句的基本语法:
CREATE TABLE [IF NOT EXISTS] table_name(
column_1_definition,
column_2_definition,
...,
table_constraints
) ENGINE=storage_engine;
让我们更详细地检查语法。
首先,在create table关键字之后指定要创建的表的名称。表名在数据库中必须是唯一的。IF NOT EXISTS是可选的。它允许您检查您创建的表是否已经存在于数据库中。如果是这种情况,MySQL将忽略整个语句,并且不会创建任何新表。
其次,在column_list部分指定表中的列列表,列之间用逗号分隔。
第三,可以选择在engine子句中为表指定存储引擎。你可以使用任何存储引擎,比如InnoDB和MyISAM。如果没有明确声明存储引擎,MySQL将默认使用InnoDB。
InnoDB成为MySQL 5.5版以来的默认存储引擎。InnoDB存储引擎带来了关系数据库管理系统的许多好处,如ACID事务、引用完整性和崩溃恢复。在以前的版本中,MySQL使用MyISAM作为默认存储引擎。
下面显示了列定义的语法:
column_name data_type(length) [NOT NULL] [DEFAULT value] [AUTO_INCREMENT] column_constraint;
详情如下:
在列列表之后,可以定义表约束,例如唯一、检查、主键和外键。
例如,如果要将一列或一组列设置为主键,请使用以下语法:
PRIMARY KEY (col1,col2,...)
MySQL创建表语句示例
让我们举一些创建新表的例子。
1) MySQL创建表的简单示例
下面的语句创建了一个名为tasks的新表:
CREATE TABLE IF NOT EXISTS tasks (
task_id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
start_date DATE,
due_date DATE,
status TINYINT NOT NULL,
priority TINYINT NOT NULL,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=INNODB;
“任务”表包含以下列:
task_id是tasks表的主键列。这意味着task_id列中的值将唯一标识表中的行。
执行CREATE TABLE语句以创建tasks表后,可以使用CREATE语句查看其结构:
DESCRIBE tasks;
此图显示了tasks表的数据库图:
2) MySQL使用外键主键创建表示例
假设每个任务都有一个清单或待办事项清单。要存储任务清单,可以创建一个名为checklists的新表,如下所示:
CREATE TABLE IF NOT EXISTS checklists (
todo_id INT AUTO_INCREMENT,
task_id INT,
todo VARCHAR(255) NOT NULL,
is_completed BOOLEAN NOT NULL DEFAULT FALSE,
PRIMARY KEY (todo_id , task_id),
FOREIGN KEY (task_id)
REFERENCES tasks (task_id)
ON UPDATE RESTRICT ON DELETE CASCADE
);
表检查列表有一个由两列组成的主键。因此,我们使用表约束来定义主键:
PRIMARY KEY (todo_id , task_id)
此外,task_id是引用表tasks的task_id列的外键列,我们使用外键约束来建立这种关系:
FOREIGN KEY (task_id)
REFERENCES tasks (task_id)
ON UPDATE RESTRICT
ON DELETE CASCADE
在后续教程中,您将了解有关外键约束的更多信息。
此图说明了检查表及其与任务表的关系:
在本教程中,您学习了如何使用MySQL CREATE TABLE语句在数据库中创建新表。