前言:

本文内容:Insert语句详解、Update语句详解、Delete和Truncate详解

推荐免费MySQL基础讲解视频:【狂神说Java】MySQL最新教程通俗易懂_哔哩哔哩_bilibili

DML(Data Management Language)数据操作语言:

  • insert
  • update
  • delete

Insert语句详解

语法

insert into 表明(字段1,字段2,字段3)values(‘值1’,‘值2’,‘值3’);

1
2
3
4
5
6
7
8
9
10
11
12
13
-- 插入语句
-- insert into 表明(字段1,字段2,字段3)values('值1','值2','值3');
-- 自增可以省略
insert into `grade`(`gradename`) values ('大二');
-- 插入多行
insert into `grade`(`gradename`) values ('大一'),('大三');
select * from `grade`;
-- 插入多个字段
insert into `student`(`name`,`pwd`,`sex`,`birthday`,`address`,`email`,`gradeid`)values('张三','123','男','1999-1-1','陕西西安','zhangsan@gmail.com',1);
-- 设置了默认值,不赋值会自动填充,无默认值则会为null
insert into `student`(`name`,`gradeid`) values ('李四',2);

select * from `student`;

注意事项

  1. 字段和字段之间用,隔开
  2. 字段可以省略,但后面必须要相对应,不能少
  3. 可以同时插入多条数据,values后的值需要逗号隔开

Update语句详解

语法

update 表名 set colnum_name=value,[colnum_name=value,…] where 条件

1
2
3
4
5
6
7
8
9
10
-- 修改语句
update `student` set `name`='王五' where `id`=2;
-- 不指定条件则会改动表中所有值
update `student` set `name`='老六';
-- 修改多个值
update `student` set `name`='小王',sex='女',address='陕西咸阳' where `id`=2;
-- 条件修改 举例
update `student` set `name`='老肥' where `id`<>1;

select * from `student`;

条件:where子句,id等于某个值,大于某个值,再某个区间内修改;

操作符返回布尔值

操作符 含义
= 等于
<> != 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
betwen…and… [再…之间]
and 与&&
or 或||

注意事项

  1. colnum_name时数据库的列,尽量带上``
  2. 条件用来筛选,若没有指定则修改所有的列
  3. value是一个具体的值,也可以是一个变量
  4. CURRENT_TIME为当前时间
  5. 多个属性之间,用逗号隔开

Delete和Truncate详解

语法

delete from 表名 where [条件]

1
2
3
4
-- 删除语句
delete from `student` whrere `id`=1;
-- 清空数据库中的一张表
truncate `student`;

delete和truncate区别

  • 相同点是都能删除数据,不删除表结构
  • truncate重新设置自增列,计数器会归零
  • truncate不会影响事务

清空表优先使用truncate

拓展

用delete删除,重启数据库后:

InnoDB自增列会从1开始(因为它在内存中,断电则丢失)

MyISAM则继续从上一个子增量开始(因为它是存在文件中的,断电也不会丢失)