MySQL系列-DML语句
运维少年 运维少年
系列文章说明
MySQL系列文章包含了软件安装、具体使用、备份恢复等内容,主要用于记录个人的学习笔记,主要使用的MySQL版本为5.7.28,服务器系统版本为CentOS 7.5。本章节为DML语句使用,其中不包含select语句。
何为DML语句
DML(Data Manipulation Language)数据操纵语言命令使用户能够查询数据库以及操作已有数据库中的数据。
DML语句和DDL语句有何不同?DML语句用于对表中的数据进行操作(如插入数据insert、删除数据delete、更新数据update、查询数据select等),而DDL语句则是对数据库和数据表的结构进行操作(如创建表/库 create、删除表/库 drop 、修改表/库 alter等)。
总结:DML是日常使用最多的语句,其主要作用是对表中的数据进行管理。
DML语句使用
DML语句主要包括insert、update、delete、select(后续章节介绍)
本次用到的表如下:
DML insert
insert语句用于表数据插入,格式如下:
insert into 表名(列名) values(列值)
- 例1:在student表中插入yunwei1的信息
insert into student(sno,sname,sage,ssex) values(11,'yunwei1',24,'m');
insert语句说明
①如果全部列都设置列值,可以不用指定列名
②一般来说,自增长列可以不用指定列名和设置列值
- 例2:不指定列名插入yunwei2的信息
insert into student values(12,'yunwei2',27,'f');
例3:不指定自增长列插入yunwei3的信息
insert into student(sname,sage,ssex) values('yunwei3',30,'m');
- 例4:一条语句插入yunwei4和yunwei5的信息
insert into student(sname,sage,ssex) values('yunwei4',19,'m'),('yunwei5',17,'f');
DML update
update语句主要用于更新表数据,一般配合where使用,其格式如下:
update 表名 set 列名1=列值1,列名2=列值2 where 条件;
- 例1:将yunwei5的年龄修改为27
update student set sage=27 where sname='yunwei5';
- 例2:将yunwei4的名字修改为yunwei44,年龄改为88
update student set sname='yunwei44',sage=88 where sname='yunwei4';
DML delete
delete用于删除表中的数据,一般配合where语句使用,其格式如下:
delete from 表名 where 条件;
- 例1:删除yunwei44的信息
delete from student where sname='yunwei44';
0 1伪删除
- 伪删除是什么?伪删除即表面上看不到该数据,但数据还是存在的。
- 为什么需要伪删除?一般数据删除后,恢复流程麻烦,且有无法恢复的风险。伪删除可以帮助我们实现删除的数据不显示,但如果想使用的时候可以将数据随时显示出来。
- 伪删除是怎么做的?伪删除的实现办法是在表中添加一个状态列标识数据行的状态,比如列值1表示没有删除,0表示数据已删除,然后在查看数据时,加上条件,只显示状态列为1的数据即可。
#在表中插入新列(注:生产上请谨慎操作,修改表结构会导致暂时的锁表)
alter table student add column status tinyint not null default 1 comment '数据状态';
- 例:伪删除yunwei5的信息
update student set status=0 where sname='yunwei5';
例:恢复yunwei5的信息
update student set status=1 where sname='yunwei5';
0 2删除表所有数据
删除表所有数据可以使用delete和truncate语句进行删除。
- delete:逐行删除,如果数据行过多,删除操作很慢,而且并没有真正从磁盘删除,只是在存储层面打标记,磁盘空间不会立即释放,自增的值也不会释放。HWM高水位线不会降低。
-
truncate:清空表段中的所有数据页面,物理磁盘空间上删除,磁盘空间立即释放,HWM高水位线会降低
- delete命令格式如下:
delete from 表名;
- truncate命令格式如下:
truncate table 表名;
个人思维导图
end