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/loser1949/p/8120990.html