MySQL插入语句INSERT

时间:2019-11-20 08:52:07  来源:igfitidea点击:

简介:在本教程中,您将学习如何使用MySQL INSERT语句将一个或多个行插入表中。

MySQL INSERT语句简介

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

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

用这种语法,

  • 首先,在INSERT INTO子句后的括号内指定表名和逗号分隔列的列表。

  • 然后,在VALUES关键字后的括号内放置逗号分隔的相应列的值列表。

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

要使用单个INSERT语句将多行插入到表中,请使用以下语法:

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

在此语法中,VALUES子句中的行用逗号分隔。

MySQL INSERT范例

让我们创建一个名为task的新表,以练习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 –简单的INSERT示例

以下语句在任务表中插入新行:

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

MySQL返回以下消息:

1 row(s) affected

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

此查询从任务表返回数据:

SELECT * FROM tasks;

在此示例中,我们仅指定标题和优先级列的值。
对于其他列,MySQL使用默认值。

task_id列是一个AUTO_INCREMENT列。
这意味着只要在表中插入一行,MySQL就会生成一个顺序整数。

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

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

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

  • 忽略INSERT语句中的列名和值。

  • 在INSERT INTO子句中指定列名,并在VALUES子句中使用DEFAULT关键字。

下面的示例演示了第二种方法:

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

在此示例中,我们指定了优先级列和DEFAULT关键字。

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

priority TINYINT NOT NULL DEFAULT 3

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

以下语句在插入后返回任务表的内容:

SELECT * FROM tasks;

3)MySQL INSERT –在表示例中插入日期

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

'YYYY-MM-DD'

格式如下:

  • YYYY代表四位数的年份,例如2018年。

  • MM代表两位数的月份,例如01、02和12。

  • DD代表两位数字的日期,例如01、02、30。

以下语句将新行插入开始和到期日期值的任务表:

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

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

可以在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()函数是返回当前系统日期的日期函数。

4)MySQL INSERT –插入多行示例

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

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;

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