MySQL数据库的增删改操作总结

数据库的增删改操作又称为DML操作,包括表记录的插入、删除、更新。

一、插入记录

语法格式如下:
insert into tablename(field1,field2,…) values (value1,values2,…)[,(value1,values2,…)…];

说明:
(1)value的数量和字段(field)的数量必须相等,且value的类型需要和对应的field类型匹配。
(2)tablename后面可以不加字段名,此时必须为所有字段指定value。

举例,创建如下的emp表,并插入记录:

create table emp(
    emp_id int auto_increment primary key,
    emp_name char(20),
    birth datetime,
    phone char(20),
    height decimal(4,1),
    dept_id int
);

insert into emp(emp_name,birth) values('Tom','1989-1-23');  --插入一条记录,phone,height,dept_id字段为NULL
insert into emp values(2,'Jack','1989-1-23',NULL,178.5,2);  --插入一条记录,phone字段为NULL
insert into emp(emp_name,birth) values('Kate','1989-10-2'),('John','1987-11-3'),('Jerry','1990-8-15'); 
                                         --一次插入多条记录,phone,height,dept_id字段为NULL
insert into emp values(11,'Zhangxg','1990-3-8','8888888',170,2),(12,'Wangxm','1987-12-6','66666666',172,2);  
                                         --一次插入多条记录

二、 删除记录

语法格式如下:
delete from tablename where 条件;

说明:
(1)需要删除的记录由where来指定。
(2)where可以省略,此时将删除表中的所有数据。

举例,针对emp表,删除记录:

delete from emp where height>180;           --删除身高超过180厘米的员工记录
delete from emp where emp_name like '张%';  --删除姓"张"的员工记录
delete from emp where dept_id in (2,5,10);  --删除部门编号为2、5和10的员工记录
delete from emp where height between 170 and 175;     --删除身高170至175厘米的员工记录

如果要删除一个表中的所有记录,除了使用delete from tablename命令之外,还可以使用truncate tablename命令,两个命令的共同点和不同点总结如下:
共同点:delete from tablename和truncate tablename命令都可以把一张表清空。
不同点:如果一个表中有自增字段。
(1)使用delete from tablename命令删除表中的所有记录之后,自增字段的值不会被重置。所以如果又插入了新记录,则新记录自增字段会在原来的基础上继续编号;
(2)使用truncate tablename命令删除表中的所有记录之后,自增字段的值会被重置。所以如果又插入了新记录,则新记录自增字段会从1开始重新编号;

三、更新记录

语法格式如下:
update tablename set field=value where 条件;

说明:
(1)由field指定要更新的字段,由where来指定要更新的记录。
(2)如果省略where,则对所有记录进行更新。

举例,针对emp表,进行如下更新操作:

alter table emp add salary decimal(10,2) after height;
update emp set salary=5000;                  --把所有人的工资设置为5000
update emp set salary=6000 where dept_id=2;  --把2号部门所有人的工资设置为6000
update emp set salary=salary+500;            --为所有人的工资增加500
update emp set salary=salary*1.05 where dept_id=2;  --把2号部门所有人的工资增加5%