mysql中如何使用insert

分类:编程技术 时间:2024-02-20 15:25 浏览:0 评论:0
0
mysql中insert如何使用,相信很多没有经验的人都一头雾水。本文总结了问题的原因和解决方案。通过这篇文章,希望你能解决这个问题。

插入语法

【INTO】tbl_name [(col_name, ...)]

【ON DUPLICATE KEY UPDATE col_name=expr, ... ]

或者:

INSERT [LOW_PRIORITY |延迟 | HIGH_PRIORITY] [忽略]

[INTO] tbl_name

SET col_name={expr | HIGH_PRIORITY] DEFAULT}, ...

【ON DUPLICATE KEY UPDATE col_name=expr, ... ]

 或:

 INSERT [LOW_PRIORITY | HIGH_PRIORITY] [忽略]

【INTO】tbl_name [(col_name,...)]

【选择...

【ON DUPLICATE KEY UPDATE col_name = expr, ... ]

如果列列表和 VALUES 列表都是空列表,则 INSERT 将创建一行,并将每列设置为默认值:

INSERT INTO tbl_name ( ) VALUES();

假设worker表只有name和email,插入一条数据:

insert intoworkervalues("tom","tom@yahoo.com" );

Insert批量多条数据:

插入worker value('tom','tom@yahoo.com'),('paul','paul@yahoo.com');

给定要赋值的列,然后列出该值的插入数据:

insert into work(name)values('tom');

insert intoworker(name)values('tom'),('paul');

使用set插入数据:

insert into worker set name='tom';

SET 子句中的未命名行被分配一个默认值。无法使用这种形式的 INSERT 语句插入多行。

表达式可以引用值表中先前设置的任何列,例如

INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);

INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);

>

<--但不是这样的:

使用 INSERT…SELECT 语句插入并选择 fr其他表还可以。

insert into tbl_name1(col1,col2) select col3,col4 from tbl_name2;

--如果每列都有数据:

insert into tbl_name1 select col3 ,col4 from tbl_name2;

查询不能包含ORDER BY子句,并且INSERT语句的目标表不能出现在SELECT查询部分的FROM子句中。

​ON DUPLICATE KEY UPDATE

如果指定ON DUPLICATE KEY UPDATE,并且插入行会导致重复值出现在UNIQUE索引或PRIMARY KEY中,则执行UPDATE的老排。

- 假设a、b为唯一索引,且表中没有1、2等行,则正常插入数据。当存在冲突时,c列的值被更新。

​INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=3;

< -- 或

INSERT INTO table(a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=values(c);

 --引用其他列来更新冲突行

​INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

将 NULL 插入到已定义为 NOT NULL 的列中。对于多行 INSERT 语句或 INSERT INTO...SELECT 语句,根据列数据的类型将列设置为隐式默认值。对于数字类型,默认值为0;对于字符串类型,默认值为空字符串('');对于日期和时间类型,默认值为“零”值。

​插入...选择重复密钥更新

​插入到tbl_name1(a,b,c)

​从tbl_name2中选择col1,col2,col3 < /p>

ON DUPLICATE KEY UPDATE c=values(c);

INSERT DELAYED

如果您的客户端无法等待 INSERT 完成,此选项非常有用。是的,当客户端使用INSERT DELAYED时,它会立即得到服务器的确认。当表未被其他线程使用时,该行将排队并插入。

使用 INSERT D 的另一个重要好处ELAYED 是将来自多个客户端的插入聚集在一起并写入一个块。这比执行许多独立插入要快得多。

​INSERT DELAYED INTOworker(name)values('tom'),('paul');

使用DELAYED时有一些限制:

INSERT DELAYED 仅适用于 MyISAM、MEMORY 和 ARCHIVE 表。对于MyISAM表,如果数据文件中间没有空闲块,则支持SELECT和INSERT语句。在这些情况下,基本上不需要将 INSERT DELAYED 与 MyISAM 一起使用。

INSERT DELAYED 只能在指定值列表的 INSERT 语句中使用。服务器忽略 INSERT DELAYED...SELECT 语句的 DELAYED 和 INSERT DELAYED...ON DUPLICATE UPDATE 语句的 DELAYED。

由于该语句在插入行之前立即返回,因此无法使用 LAST_INSERT_ID() 来获取 AUTO_INCREMENT 值。 AUTO_INCRMENT值可以由语句生成。

对于 SELECT 语句,DELAYED 行在实际插入之前不可见。

DELAYED 在从属复制服务器上被忽略,因为 DELAYED 在从属服务器上生成的数据与在主服务器上生成的数据并不不同。

看完上面的内容,你是否掌握了如何在mysql中使用insert呢?如果您想学习更多技能或者想了解更多相关内容,请关注行业资讯频道。感谢您的阅读!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > mysql中如何使用insert

用户评论