接下来学习第二个部分:根据页面原型以及需求进行相关功能的开发,进而完成数据库的操作。
学习数据库的DML操作
3. 数据库操作-DML-insert,update,delete
DML
DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。DML语句主要来完成数据库表结构当中数据的增、删、改操作。
-
添加数据(INSERT):就是往表结构当中来插入数据
-
修改数据(UPDATE):来修改表中的数据
-
删除数据(DELETE):可以来删除表中的记录
3.1 MySQL-DML-添加数据insert DML(INSERT)增加(insert)
在员工管理的页面原型当中,页面这一块展示了一个表格,表格的上方有一个按钮是新增员工,当我们点击这个按钮之后,就会打开一个form表单,在这个表单当中,我们就可以录入员工的相关信息,然后一点击保存按钮,就会将这个表单的数据提交到服务端,然后服务端再来操作数据库,最终就会将表单当中的这个数据添加到数据库当中,此时我们就需要通过insert语句来添加数据到表结构当中。
insert语句添加数据的基础语法:通过insert语句来添加数据到表结构当中
- 向指定字段添加数据:insert into之后跟上表名,表名之后跟上一对小括号里面写上我们要为 哪些字段来添加数据,多个字段之间使用逗号分隔,然后在values后 面需要指定每一个字段的值是多少,值1对应的就是字段1,值2对应的 就是字段2,前面的字段和后面的值是一一对应的。
insert into 表名 (字段名1, 字段名2) values (值1, 值2);
- 全部字段添加数据:如果我们要为全部的字段添加数据,就可以将字段列表直接省略掉,在 values后面就来指定这张表当中所有字段的字段值。
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());
图形化操作:双击tb_emp表,点击刷新面板,查看数据:
Insert操作的注意事项:
- 插入数据时,指定的字段(列表的)顺序需要与值的顺序是一一对应的。
- 字符串和日期型数据应该包含在引号中。
- 插入的数据大小,应该在字段的规定范围内。
3.2 MySQL-DML-修改 / 更新数据update DML(UPDATE) 修改(update)
在学习更新数据的语法之前,先来看一下页面原型,看一下什么时候会用到update这一类的更新语句来更新数据(update语句的业务场景)。
打开页面原型之后可以看到,列表所展示的数据之后有一个操作叫编辑,当我们点击这个编辑按钮之后,首先它要做的事情就是先根据id将这条数据查询出来,然后在页面当中先将其展示出来,这一步操作我们叫数据回显:先将数据先展示出来,展示出来之后再让用户去做选择我们到底要修改哪项数据,比如我要修改职位,将职位修改完成之后,我们再点保存的时候,它执行的就是一个修改操作,要将当前用户的职位信息修改了。
知识点补充:
点击编辑按钮执行的操作是数据回显操作吗?
- 不一定。点击编辑按钮执行的操作不一定是数据回显操作。
- 点击编辑按钮执行的操作可能包括跳转到编辑页面或弹出编辑窗口,而数据回显是将原来已有的数据展示在编辑页面或弹窗中以供修改。
- 一些编辑操作可能不需要数据回显,例如:在新建数据时点击编辑按钮,此时还没有原有数据需要展示,但通常情况下,在编辑操作中会将原有数据回显以便用户更方便地进行修改。
update语法:
- update之后要跟上一个表名来指定我们更新的是哪一张表,然后set之后就要来指定我们要更新哪些字段,字段名1等于值1,字段名2等于值2,这代表我们要把字段1更新为值1,然后把字段2更新为值2,多个字段之间使用逗号分隔,如果有更新条件,在where之后加上更新条件,方括号里面的条件是可选的。
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();
- 没有加where语句就代表要更新整张表的所有数据。
- 确认执行点击这个Execute,点击完毕之后这条SQL语句就执行了。
- 执行完毕之后打开该表点击刷新按钮就可以看到更新完成之后的数据了。
注意事项:
- 修改语句的条件可以有,也可以没有,如果没有条件,则会更新/修改整张表的所有数据。
- 在修改数据时,一般需要同时修改公共字段update_time,将其修改为当前操作时间。
3.3 MySQL-DML-删除数据delete DML(DELETE)删除(delete)
DML当中最后一种操作 --- delete删除操作,首先先来了解一下delete删除操作的业务场景:
在页面原型当中我们会看到,在表格之后有一项操作就是删除,当我们点击这个删除按钮之后,此时就会往服务端来发送请求,来指定我们要删除哪一条数据,服务端接收到请求之后就会来操作数据库,最终通过delete语句来讲数据库当中的数据删除掉,这就是delete语句它的一个业务场景。
delete语法:
- delete from之后跟上表名,我们要从哪一张表当中删除数据,在where之后跟上条件,这个条件也是可选的。
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即 可。
DML语句小结: