软测学习知识小记——数据库5(结尾)

2024-08-16软测学习今日总结



小记

软测中数据库的最后一部分知识:update、delete、视图、存储过程。还有没记录的相关数据库知识将在后续有时间的话记录。接下来将学习软测基础理论知识。


一、更新数据 update

语法:
update 表名 set 字段1=新的值,字段2=新的值 …… [where 限定条件];

在进行数据更新时需注意:
1、值的数据类型必须和字段的数据类型保持一致
2、除数字类型外,字符串和日期必须使用引号引起来
3、更新的值必须满足创建表时的各种约束
4、可使用“字段=null”的方式将可以为空的字段值设置为null
5、当没有跟where限定条件的时候,表示更新整张表的所有数据
6、在更新操作时养成加上where限定条件的好习惯,哪怕是加1=1
7、在更新操作前后,执行select操作评估一下本次操作的影响范围以及更新操作是否生效
8、实际工作中,如果要在正式环境上执行更新操作,必须在测试环境上先对sql的正确性以及影响范围进行验证

习题练习:
示例:将表emp中工资大于50000的员工职位改为“经理”
练习:更新员工信息emp表,将所有女性员工的职位改为“保洁”并且将她们的工资上涨2000元

二、删除表数据:delete

1. delete 删除
语法:delete from 表名 [where 限定条件];
2. 批量清空表数据 truncate
语法:truncate table 表名;
3. 删除表 drop
语法:drop table 表名;;

在对数据进行删除操作时需注意:
1、当不跟where限定条件的时候,表示删除表中所有的数据
2、在删除操作时养成加上where限定条件的好习惯,哪怕是加1=1
3、在删除操作前后,执行select操作评估一下本次删除的影响范围以及删除操作是否生效
4、实际工作中,如果要在正式环境上执行删除操作,必须在测试环境上先对sql的正确性以及影响范围进行验证
5、如果需要删除的数据非常大的时候,可结合limit来分批次进行删除

物理删除和逻辑删除
1、物理删除:直接将数据从数据库表中删除,使用的是delete操作
2、逻辑删除:数据库在表中还存在,使用一个字段来标识该一段已被删除了,使用的是update操作
3、在实际工作中,前端所有的删除操作必须都得是逻辑删除,不能是物理删除

drop\delete和truncate的区别*:
一、drop删除的是表结构,delete和truncate删除的是表数据,表结构还在
二、delete和truncate的区别:
1、delete可以跟where限定条件删除指定的数据,truncate不能跟限定条件,只能批量清空表的全部数据
2、delete不跟where限定条件的时候,也是删除表中的全部数据,其删除机制还是一行一行的行
3、truncate执行效率会高于delete
4、delete删除之后相对容易恢复,而truncate删除后无法恢复
5、delete删除之后自增字段值不会重置,而truncate删除后自增字段值会重置
6、delete删除后不会自动释放存储空间,而truncate删除后会自动释放存储空间
7、在实际工作中,除非明确是要清空整张表的全部数据,否则建议使用delete

习题练习:
示例:将表emp中所有工资小于10000的员工数据删除
示例:使用truncate方式删除表emp数据

三、视图

视图:视图就是保存查询结果的虚拟表

视图的作用:
1、让数据更安全
2、让复杂的sql易于理解
3、提高执行效率

  1. 创建视图
    语法:create view 视图名 as select语句;
    在创建视图的时候需注意:创建视图的select中不允许子查询再次嵌套子查询

  2. 修改视图
    语法1:alter view 视图名 as select语句;
    语法2:create or replace view 视图名 as select语句;

  3. 删除视图:**drop view 视图名;

  4. 通过更新视图中的数据来更新源表中的数据
    有以下几种情况:
    (1) 第一种情况:视图可以被更新,视图中所有的字段都可以被更新
    (2) 第二种情况:视图可以被更新,但是视图中的字段不可以被更新
    (3) 第三种情况:整个视图都不允许被更新

关于更新视图中的数据需注意:
1、不是所有的视图都可以进行update操作
2、如果视图中的字段是一对一来源于源表,则该视图中所有的字段都可以被更新
3、如果视图中的字段来源于两个以及上的字段,或者是经过了函数的处理,则该字段不允许被更新
4、如果创建视图的select语句中,包含了聚合函数,group by,distinct等语句时,该视图不允许被更新

习题练习:
示例:查询员工信息表中张姓男员工的编号,姓名和性别,并将他们保存到视图ystest_view_001中
示例:修改视图ystest_view_001,其保存新闻为查询员工信息表中张姓男员工的编号,姓名和性别以及部门编号

四、存储过程

存储过程:是一组为了完成特定功能的sql语句集
存储过程的作用:
(1) 让sql功能更灵活
(2) 提高执行效率
(3) 节约资源
(4) 让数据更安全
1. 创建存储过程:
语法:

delimiter //
create procedure 存储过程名称([参数类型 参数1名称 参数数据类型,参数类型 参数1名称 参数数据类型,……])
begin 
		程序体;
end //

参数类型: in 入参 可以缺省,默认为入参
out 出参
inout 入参出参
2. 删除存储过程:
drop procedure 存储过程名;

3. 调用存储过程:
call 存储过程名([参数1,参数2,……])

4. 定义变量**
语法:declare 变量名 数据类型 [default 默认值];#必须在程序体的最前面先定义
5. 给变量赋值
语法1:set 变量名=新的值;#这种必须先试用declare来声明变量

语法2:set @变量名=新的值;#声明一个变量并且给变量赋值,'@'和变量是一体的

语法3:select 字段1,字段2,…… into 变量1,变量2,…… from 表名;#将查询出来的字段值赋值给对应的变量,这种方式只使用与返回结果只有一行

6. while循环
语法:

w:while 判断条件 do 
		循环体;
end while w;

表示:如果判断条件成立,则执行循环体内的程序,如果判断条件不成立,则跳出循环

如果程序陷入死循环,可通过下列方式结束进程
第一步:执行以下命令,查看哪些程序正在操作数据库
show processlist;
第二步: 找出死循环操作的id
第三步:通过kill命令结束进程
kill id号;

习题练习:
示例:创建存储过程ystest_pro_001,查询员工emp表中的员工编号,姓名和性别信息
示例:创建存储过程ystest_pro_002,通过员工编号查询指定员工员工编号,姓名和性别信息


总结

总结软件测试需要学习数据库的知识点:

  1. 软件测试为什么要学习数据库?
  2. 常见关系性和非关系型数据库
  3. 数据库相关指令
  4. DQL数据查询语言***
    (1) 查询基本语法
    (2) 特殊的比较运算符
    (3) 逻辑运算符
    (4)去重 distinct
    (5)设置别名 as
    (6)排序 order by
    (7) 分组group by
    (8)聚合函数
    (9)having 分组后再次限定
    (10)返回限定条数 limit
    (11)单行函数:字符串函数、日期函数、数学函数、控制流函数
    (12)多表查询:内连接 inner join、左连接 left join、右连接 right join、自连接
    (13)子查询:单行子查询、多行子查询、多列子查询
    (14)合并结果集 union、union all
  5. 视图
  6. 存储过程
    网图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值