Skip to content

数据库相关

你在测试过程中使用数据库的场景是什么?

a> 在做功能测试时,除了检查页面/APP功能正常外,还需要查询存入数据库里的数据是否符合预期;
b> 有时候会修改数据库中测试数据,来验证一些测试用例,比如把已经注销的用户状态改为未注销状态,这样就可以重复利用这个用户的数据了。

常用的聚合函数都有哪些?

max():最大值
min():最小值
avg():平均值
sum():求和
count():统计总数

主键、外键和索引的区别

主键:表中唯一标识一条记录,不能有重复的,不允许为空
外键:用来和其他表建立联系用的,表的外键是另一表的主键, 外键可以有重复的, 可以是空值
索引:对数据库中的某些关键字段进行存储,类似于书籍中的目录,里面包含了关键数据和数据的位置,通常需要对where条件后的字段加索引,但是不能加的太多,一般一个表不超过4个索引

drop、delete、truncate三者的区别

都表示删除,但是三者有一些差别,
Delete用来删除表的全部或者一部分数据行
Truncate删除表中的所有数据,并且清空表中的历史水位
Drop命令从数据库中删除整张表以及表中的数据

列举几种表连接的方式,有什么区别?

左连接: 以左表为基础,展示左表所有数据+左右两个表同时存在的数据
右连接: 以右表为基础,展示右表所有数据+左右两个表同时存在的数据
内连接: 展示两个表中同时存在的数据

面试题

1.说一下sql是怎么优化的?
2.怎么看索引有没有生效的?索引的几种类型说一下。什么情况会导致索引失效?一般都在哪些字段上面加索引?索引应用场景
3.什么是数据库死锁,如何避免?
4.手写sql单表查询,分组,排序等操作
5.手写sql多表连接查询,嵌套子查询等