Posted on:
Last modified:
我们还是使用上篇文章定义的例子来说明问题
使用 INSERT
语句。
insert into students(**field_names) values(**VALUES), values(**VALUES);
如果一次要插入所有数据的话,可以直接省略前面的字段名。MySQL 可以一次插入多行数据或者一行 数据,但是这并不是 SQL 标准规定的。使用批量插入可以大幅度提高性能。
在批量插入的语句中,如果有一行是错的,那么就会导致整个插入失败,可以使用 insert ignore 语句。
如果要在批量插入不同的表,可以一次执行多个语句,而不是只执行一个。
如果在有 unique 索引的表中,如果插入重复数据可能会引起错误,这时候有两个解决方法:
insert ignore 的语法是:
INSERT IGNORE INTO table(column_list)
VALUES( value_list),
( value_list),
...
也就是说, 和普通的插入语句相比多了 ignore 关键字,除此之外,再无区别。如果数据中有重复的, 有不重复的,那么不重复的会插入成功。
但是 insert ignore 的问题在于它会忽略所有的错误,比如说不能为 null 的值提供了 null.
insert on duplicate update 的语法是:
INSERT INTO table (column_list)
VALUES (value_list)
ON DUPLICATE KEY UPDATE
c1 = v1,
c2 = v2,
...;
insert on duplicate update 的问题在于它会消耗掉一个 id, 虽然并没有实际插入,导致 id 不是 连续的,而是有好多空洞。而且会执行实际的写操作。另外在语法上也非常傻屌,竟然需要把插入的 值在后面在写一遍。
使用 UPDATE
语句。
update students set math_score = 100 where first_name = "luke";
使用 DELETE
语句。
delete from students where name = "luke";
© 2016-2022 Yifei Kong. Powered by ynotes
All contents are under the CC-BY-NC-SA license, if not otherwise specified.
Opinions expressed here are solely my own and do not express the views or opinions of my employer.
友情链接: MySQL 教程站