接下来学习第二个部分:根据页面原型以及需求进行相关功能的开发,进而完成数据库的操作。
学习数据库的DML操作
DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。DML语句主要来完成数据库表结构当中数据的增、删、改操作。
添加数据(INSERT):就是往表结构当中来插入数据
修改数据(UPDATE):来修改表中的数据
删除数据(DELETE):可以来删除表中的记录
在员工管理的页面原型当中,页面这一块展示了一个表格,表格的上方有一个按钮是新增员工,当我们点击这个按钮之后,就会打开一个form表单,在这个表单当中,我们就可以录入员工的相关信息,然后一点击保存按钮,就会将这个表单的数据提交到服务端,然后服务端再来操作数据库,最终就会将表单当中的这个数据添加到数据库当中,此时我们就需要通过insert语句来添加数据到表结构当中。
insert语句添加数据的基础语法:通过insert语句来添加数据到表结构当中
insert into 表名 (字段名1, 字段名2) values (值1, 值2);
insert into 表名 values (值1, 值2, ...);
前面这两条SQL语句,每一次操作都是添加一条数据,如果我们要批量操作,就可以使用后面这两条SQL语句。如果我们要批量操作,需要在每一组值之间使用逗号来分隔。
insert into 表名 (字段名1, 字段名2) values (值1, 值2), (值1, 值2);
insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);
在SQL语句当中,字符串以及日期时间类型都需要使用引号引起来,单引号、双引号都可以。
-- DML:数据操作语言
-- DML:插入数据 - insert
-- 1.为 tb_emp 表的username,name,gender 字段插入值
-- 直接运行将会报错,因为我们在前面设计emp这张表的时候,还添加了两个基础字段:create_time和update_time
-- 分别是创建/插入时间和修改/更新时间,而且这两个字段还是非空字段
-- 所以我们在插入数据的时候就需要给这两个字段来设置一个值,就是当前系统时间
-- 而我们以后在每一次更新的时候都需要将update_time更新为当前系统时间
-- 在SQL语句当中怎么拿到当前系统时间呢?
-- 在MySQL当中我们只需要调用now()函数就可以来获取当前系统时间
-- insert into tb_emp(username,name,gender) values ('wuji','张无忌',1);
insert into tb_emp(username,name,gender,create_time,update_time) values('wuji','张无忌',1,now(),now());
-- 2.为 tb_emp 表的 所有字段插入值
-- id由于是主键自增的,所以我们不需要给id赋值,直接传递一个null就可以了
insert into tb_emp(id, username, password, name, gender, image, job, entrydate, create_time, update_time)
values(null,'zhouzhiruo','123','周芷若',2,'1.jpg',1,'2010-01-01',now(),now());
insert into tb_emp values(null,'zhouzhiruo2','123','周芷若',2,'1.jpg',1,'2010-01-01',now(),now());
-- 3.批量为 tb_emp 表的 username,name,gender 字段插入数据
insert into tb_emp(username,name,gender,create_time,update_time) values('person1','人一',1,now(),now()),
('person2','人二',2,now(),now());
Insert操作的注意事项:
- 插入数据时,指定的字段(列表的)顺序需要与值的顺序是一一对应的。
- 字符串和日期型数据应该包含在引号中。
- 插入的数据大小,应该在字段的规定范围内。
在学习更新数据的语法之前,先来看一下页面原型,看一下什么时候会用到update这一类的更新语句来更新数据(update语句的业务场景)。
打开页面原型之后可以看到,列表所展示的数据之后有一个操作叫编辑,当我们点击这个编辑按钮之后,首先它要做的事情就是先根据id将这条数据查询出来,然后在页面当中先将其展示出来,这一步操作我们叫数据回显(查询回显):先将数据先展示出来,展示出来之后再让用户去做选择我们到底要修改哪项数据,比如我要修改职位,将职位修改完成之后,我们再点保存的时候,它执行的就是一个修改操作,要将当前用户的职位信息修改了。
知识点补充:
点击编辑按钮执行的操作是数据回显操作吗?
- 不一定。点击编辑按钮执行的操作不一定是数据回显操作。
- 点击编辑按钮执行的操作可能包括跳转到编辑页面或弹出编辑窗口,而数据回显是将原来已有的数据展示在编辑页面或弹窗中以供修改。
- 一些编辑操作可能不需要数据回显,例如:在新建数据时点击编辑按钮,此时还没有原有数据需要展示,但通常情况下,在编辑操作中会将原有数据回显以便用户更方便地进行修改。
update语法:
update 表名 set 字段名1 = 值1 , 字段名2 = 值2 , .... [where 条件] ;
-- DML:更新数据 - update
-- 1.将 tb_emp 表的ID为1员工 姓名name字段更新为'张三'
-- update tb_emp set name = '张三' where id = 1;
-- 还有一个隐含的字段我们并没有更新,那就是update_time,我们每一次更新的时候都需要更新一下update_time,将其更新为当前时间
-- 此时update_time这个字段记录的就是最后修改时间,多个字段之间使用逗号分隔
update tb_emp set name = '张三',update_time = now() where id = 1;
-- 2.将 tb_emp 表的所有员工的入职日期更新为 '2010-01-01'
-- 每一次更新都需要将update_time更新为当前时间
-- 既然是所有员工就代表整张表的数据都要更新,所以这个时候就没有where条件了
update tb_emp set entrydate = '2010-01-01',update_time = now();
注意事项:
- 修改语句的条件可以有,也可以没有,如果没有条件,则会更新/修改整张表的所有数据。
- 在修改数据时,一般需要同时修改公共字段update_time,将其修改为当前操作时间。
DML当中最后一种操作 --- delete删除操作,首先先来了解一下delete删除操作的业务场景:
在页面原型当中我们会看到,在表格之后有一项操作就是删除,当我们点击这个删除按钮之后,此时就会往服务端来发送请求,来指定我们要删除哪一条数据,服务端接收到请求之后就会来操作数据库,最终通过delete语句来讲数据库当中的数据删除掉,这就是delete语句它的一个业务场景。
delete from 表名 [where 条件] ;
-- DML:删除数据 - delete
-- 1.删除 tb_emp 表中 ID为1的员工
delete from tb_emp where id = 1;
-- 2.删除 tb_emp 表中的所有员工
delete from tb_emp;
注意事项:
- DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数 据。
- DELETE 删除语句不能删除某一个字段的值(如果我们要删除某一个字段的值,可以使用UPDATE语句,将该字段值置为NULL即可)。
- 当进行删除全部数据操作时,会提示询问是否确认删除所有数据,直接点击Execute即 可。