mysql创建表帖子_MySQL创建表

MySQL CREATE TABLE语法

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。自MySQL 5.5版以来,InnoDB成为默认的存储引擎。InnoDB存储引擎带来了关系数据库管理系统的许多好处,例如ACID事务,参照完整性和崩溃恢复。在以前的版本中,MySQL使用MyISAM作为默认存储引擎。

列定义的语法:

column_name data_type(length) [NOT NULL] [DEFAULT value] [AUTO_INCREMENT] column_constraint;

说明如下:将column_name 指定列的名称。每列都有特定的数据类型和可选的大小,例如VARCHAR(255)

NOT NULL 约束表示该列不能包含NULL值。除了NOT NULL约束,一列还可以包含CHECK、UNIQUE等约束。

将DEFAULT指定列的默认值。

的AUTO_INCREMENT  表示该列的值自动增加1,每当自动一个新行插入到表中。每个表只能包含一个AUTO_INCREMENT 列。

还可以自定义列的约束,如UNIQUE,CHECK,PRIMARY KEY和FOREIGN KEY。

1、CREATE TABLE语句示例

创建一个名为的新表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列,整型类型,自动增长列。当使用该INSERT语句在表中插入新行,不需要为task_id列指定值,task_id列自动从1开始生成一个顺序整数。

title列是字符串类型,最大长度为255。这意味着不能在该列中插入长度大于255的字符串。该NOT NULL约束指示该列不接受NULL。换句话说,当插入或更新此列时,必须提供一个非NULL值。

start_date和due_date是DATE类型列。由于这些列没有NOT NULL约束,因此可以存储NULL。

status和priority列是TINYINT类型,而且不容许列值NULL。

description列是TEXT类型,该列值可以为NULL。

created_at列是一TIMESTAMP类型,接受当前时间作为默认值。

task_id列是tasks表的主键列。这意味着task_id列中的值将作为表唯一标识。

tasks表的内容:

522006add1828d0de78c959258d96fad.png

2、CREATE TABLE带有外键的示例:

每个task都有一个任务清单。要存储任务清单,可以创建一个新表,名称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

);

checklists具有一个由两列组成的主键。使用表约束来定义主键:

PRIMARY KEY (todo_id , task_id)

task_id外键列引用task_id表的列tasks,使用外键约束来建立这种关系:

FOREIGN KEY (task_id)

REFERENCES tasks (task_id)

ON UPDATE RESTRICT

ON DELETE CASCADE

后面会详尽介绍外键约束

checklists表及其与tasks表的关系:

1b280202f5f7f91fefc86bdeb8d2a4fe.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值