100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > mysql插入语句例句_MySQL 插入/添加数据语句(INSERT INTO)用法详解

mysql插入语句例句_MySQL 插入/添加数据语句(INSERT INTO)用法详解

时间:2020-07-07 10:28:04

相关推荐

mysql插入语句例句_MySQL 插入/添加数据语句(INSERT INTO)用法详解

MySQL 插入数据操作使用 INSERT INTO 语句,它属于 DML(数据操作语言)范畴,该语句插入方式支持从简单的添加操作到唯一键(唯一索引)冲突时的更新操作,同时也支持查询结果直接插入操作。

INSERT INTO

MySQL INSERT 语句主要三种形式,明确指定的值进行插入的 INSERT ... VALUES ... 和 INSERT ... SET ...,还有一种形式是从另一个表或多个表中的查询结果作为插入的值,以 INSERT ... SELECT ... 格式。

语法

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]

INTO tbl_name

[PARTITION (partition_name [, partition_name] ...)]

[(col_name [, col_name] ...)]

{VALUES | VALUE} (value_list) [, (value_list)] ...

[ON DUPLICATE KEY UPDATE assignment_list]

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]

INTO tbl_name

[PARTITION (partition_name [, partition_name] ...)]

SET assignment_list

[ON DUPLICATE KEY UPDATE assignment_list]

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]

INTO tbl_name

[PARTITION (partition_name [, partition_name] ...)]

[(col_name [, col_name] ...)]

SELECT ...

[ON DUPLICATE KEY UPDATE assignment_list]

修饰符

INSERT 语句支持修饰符主要如下:

IGNORE

顾名思义插入忽略的操作,如果要插入的数据和现有的唯一索引(unique index)或主键(primary key)冲突(已存在),则该插入值操作忽略;若省略 IGNORE 修饰符时,键冲突时,会报失败错误。

ON DUPLICATE KEY UPDATE

和 IGNORE 用法相反,当插入的数据和唯一键值或主键冲突时,进行更新操作,此时返回的受影响的行数为 2;若键值不冲突,则执行普通的插入操作,受影响的行数为 1;还有一种特殊情况是键值冲突进行更新时,若要更新的数据和原有的数据一样,受影响行数返回 0,即第一种的特殊情况。此修饰符的作用,通俗的讲就是“记录存在则更新,不存在则插入”。

关于如上两个修饰符 IGNORE 和ON DUPLICATE KEY UPDATE,需要使用者注意的是,如果插入数据时,真正触发由于唯一键冲突导致忽略或进行修改操作时,如果操作表还有自增 id,将会导致后续的新插入数据自增 id 不连续,这是因为虽然忽略或 UPDATE 了,但是自增 id 同时也分配到了。

示例

mysql> INSERT INTO knowledgedict_tbl (title, content) VALUES ('knowledge', 'dict');

如上语句等同于如下语句:

mysql> INSERT INTO knowledgedict_tbl SET title = 'knowledge', content = 'dict';

如果从其它表导入数据,示例如下:

mysql> INSERT INTO knowledgedict_tbl (title, content) SELECT article_title, article_content FROM other_tbl;

此外,如果插入的数据和已有数据冲突(唯一键冲突)时,可以通过 IGNORE 和 ON DUPLICATE KEY UPDATE 两种操作方式选择是忽略还是进行修改动作。

假设 title 字段是唯一索引,即数据不可重复;

若忽略操作:

mysql> INSERT IGNORE INTO knowledgedict_tbl (title, content) VALUES ('knowledge', 'dict');

若更新操作:

mysql> INSERT INTO knowledgedict_tbl (title, content) VALUES ('knowledge', 'dict') ON DUPLICATE KEY UPDATE title = VALUES(title), content = VALUES(content);

相关推荐

INSERT INTO ...ON DUPLICATE KEY UPDATE 语句更新操作如何增加条件操作

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。