MySQL-插入数据(INSERT)

Insert语句可将一行或多行插入到表中。

复制代码
INSERT语法:

INSERT INTO table(column1,column2...)

VALUES (value1,value2,...);

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

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

在执行插入语句前,需要具有执行INSERT语句的INSERT权限

复制代码

INSERT语法实际应用:

复制代码
tasts表:

USE testdb;

CREATE TABLE IF NOT EXISTS tasks (
task_id INT(11) AUTO_INCREMENT,
subject VARCHAR(
45) DEFAULT NULL,
start_date DATE DEFAULT NULL,
end_date DATE DEFAULT NULL,
description VARCHAR(
200) DEFAULT NULL,
PRIMARY KEY (task_id)
)ENGINE
=InnoDB DEFAULT CHARSET=utf8;

插入:

INSERT INTO tasks(subject,start_date,end_date,description)
VALUES('Learn MySQL INSERT','2017-07-21','2017-07-22','Start learning..');

插入多行:

INSERT INTO tasks(subject,start_date,end_date,description)
VALUES ('任务-1','2017-01-01','2017-01-02','Description 1'),
       ('任务-2','2017-01-01','2017-01-02','Description 2'),
       ('任务-3','2017-01-01','2017-01-02','Description 3');
复制代码

INSERT与SELECT混合应用

MySQL中,可以使用SELECT语句返回的列和值来填充INSERT语句的值

INSERT INTO table_1
SELECT c1, c2, FROM table_2;

假设要将tasks表复制到tasks_bak表。

复制代码
首先,通过复制tasks表的结构,创建一个名为tasks_bak的新表,如下所示:
INSERT INTO tasks_bak
SELECT * FROM tasks;

第二步,使用以下INSERT语句将tasks表中的数据插入tasks_bak表:
INSERT INTO tasks_bak
SELECT * FROM tasks;

第三步,检查tasks_bak表中的数据,看看是否真正从tasks表复制完成了。
mysql> select * from tasks;

复制代码

INSERT与On Duplicate Key Update

复制代码
应用On Duplicate Key Update:

INSERT INTO tasks(task_id,subject,start_date,end_date,description)
VALUES (4,'Test ON DUPLICATE KEY UPDATE','2017-01-01','2017-01-02','Next Priority')
ON DUPLICATE KEY UPDATE
task_id
= task_id + 1,
subject
= 'Test ON DUPLICATE KEY UPDATE';

应用Update函数:

UPDATE tasks
SET
task_id = task_id + 1,
subject
= 'Test ON DUPLICATE KEY UPDATE'
WHERE
task_id
= 4;

复制代码

INSERT IGNORE语句

功能介绍:

INSERT语句向表中添加一些行数据并且在处理期间发生错误时,INSERT语句将被中止,并返回错误消息。因此,可能不会向表中没有插入任何行。

但是,如果使用INSERT INGORE语句,则会忽略导致错误的行,并将其余行插入到表中。

复制代码
INSERT IGNORE语法:

INSERT IGNORE INTO table(column_list)
VALUES( value_list),
( value_list),
...

复制代码

STRICT语句

STRICT模式打开时,如果您尝试将无效值插入到表中,MySQL将返回错误并中止INSERT语句。

复制代码
创建一个名为tokens的新表:

USE yiibaidb;

CREATE TABLE IF NOT EXISTS tokens (
s VARCHAR(6)
);

将长度为7的字符串插入到tokens表中

INSERT INTO tokens VALUES('abcdefg');

STRICT模式打开,MySQL发出以下错误

mysql> INSERT INTO tokens VALUES('abcdefg');
1406 - Data too long for column 's' at row 1

复制代码

 

原文地址:https://www.cnblogs.com/R-bear/p/15037379.html