Skip to main content

MySQL INSERT-在表中插入一行或多行

MySQL INSERT语句简介

INSERT语句允许您在表中插入一行或多行。下面说明了INSERT语句的语法:

INSERT INTO table(c1,c2,...)
VALUES (v1,v2,...);

在这种语法中,

列数和值数必须相同。此外,列的位置必须与其值的位置相对应。

要使用单个insert语句在表中插入多行,请使用以下语法:

INSERT INTO table(c1,c2,...)
VALUES
(v11,v12,...),
(v21,v22,...),
...
(vnn,vn2,...);

在这种语法中,行在VALUES子句中用逗号分隔。

MySQL插入示例

让我们创建一个名为tasks的新表来练习INSERT语句。

CREATE TABLE IF NOT EXISTS tasks (
task_id INT AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
start_date DATE,
due_date DATE,
priority TINYINT NOT NULL DEFAULT 3,
description TEXT,
PRIMARY KEY (task_id)
);

1) MySQL INSERT–简单的插入示例

下面的语句在tasks表中插入新行:

INSERT INTO tasks(title,priority)
VALUES('Learn MySQL INSERT Statement',1);

MySQL返回以下消息:

1 row(s) affected

这意味着一行已成功插入任务表。

此查询从tasks表返回数据:

SELECT * FROM tasks;

以下是输出:

MySQL INSERT Example

在本例中,我们只为title和priority列指定了值。对于其他列,MySQL使用默认值。

任务id列是一个自动增量列。这意味着每当一行插入表中时,MySQL都会生成一个连续整数。

start_date、due_date和description列使用NULL作为默认值,因此,如果在insert语句中未指定这些列的值,MySQL将使用NULL插入这些列。

2) MySQL INSERT–使用默认值插入行示例

如果要在列中插入默认值,有两种方法:

以下示例演示了第二种方法:

INSERT INTO tasks(title,priority)
VALUES('Understanding DEFAULT keyword in INSERT statement',DEFAULT);

在本例中,我们指定了优先级列和默认关键字。

因为列优先级的默认值是表定义中声明的3:

priority TINYINT NOT NULL DEFAULT 3

MySQL使用数字3插入优先级列。

以下语句返回插入后tasks表的内容:

SELECT * FROM tasks;

MySQL INSERT DEFAULT values

3) MySQL INSERT–将日期插入表格示例

要在列中插入文字日期值,请使用以下格式:

'YYYY-MM-DD'

以这种形式:

下面的语句使用开始日期和截止日期值向tasks表插入新行:

INSERT INTO tasks(title, start_date, due_date)
VALUES('Insert date into table','2018-01-09','2018-09-15');

下图显示了插入后任务表的内容:

MySQL INSERT dates into table

可以在VALUES子句中使用表达式。例如,以下语句使用“开始日期”和“截止日期”列的当前日期添加新任务:

INSERT INTO tasks(title,start_date,due_date)
VALUES('Use current date for the task',CURRENT_DATE(),CURRENT_DATE())

在本例中,我们使用CURRENT_DATE()函数作为start_DATE和due_DATE列的值。请注意,CURRENT_DATE()函数是一个日期函数,返回当前系统日期。

以下是插入后任务表的内容:

MySQL INSERT current date example

4) MySQL INSERT–插入多行示例

以下语句在tasks表中插入三行:

INSERT INTO tasks(title, priority)
VALUES
('My first task', 1),
('It is the second task',2),
('This is the third task of the week',3);

在本例中,每行数据都被指定为values子句中的值列表。

MySQL返回以下消息:

3 row(s) affected Records: 3  Duplicates: 0  Warnings: 0

这意味着三行已成功插入,没有重复或警告。

SELECT * FROM tasks;

表tasks包含以下数据:

MySQL INSERT multiple rows into table

在本教程中,您学习了如何使用MySQL INSERT语句向表中添加一行或多行。