插入和更新、删除详解
1.Insert
a) 基本插入:
i. insert into student(name,age) values(‘Jack’,22);
ii. 也可以在插入语句中使用set关键字:Insert into student set name=’Jack’,name=22;
iii. 多条数据插入(用括号隔开每条记录):
Insert into student(name,age) values
(‘john’,24),
(‘lily’,25),
(‘lucy’,25)
;
b) 插入时主键冲突(例如插入下面数据时数据库中已经存在主键为2 的记录,则更新之)
Insert into student(id,name,age) values(2,’lily’,23)
On duplicate key update
Name=’lily’,age=23;
c) 使用select的结果作为插入的数据源
Insert into student(name, age) select name, age from student;
d) Replace语法
插入时如果有主键或唯一索引冲突失败,还可以使用replace来代替insert。
Replace into student values(1,’Jack’,24);
2.Delete
a) mysql中delete操作也可以使用limit关键字
b) Limit配合order by来使用,先将结果排序,再删除固定数量的记录(单独使用order by而不limit的话无意义,还是删除全部)
Delete from student order by id limit 10;
c) 允许连接删除(使用join语法同时删除多个表中的记录。使用不多。),语法: delete from 需要删除数据多表1,表2 using 表连接操作[表1 join 表2 on ...] 条件[where ...];
例: delete from one, two using one join two on one.id=two.id where one.name=’John’;
d) 清空表 truncate 表名; 重建自动增长的主键。实际上是先删除表,又新建表。
3.Update
a) 也可以使用order by, limit, where语法
b) 也支持多表同时更新
Update one join two on one.id=two.id set one.data=’data1’, two.data=’data2’ where one.id=3;