关系型(sql)数据库:
Mysql,连接工具Navicat(一般讲项目用到的是mysql)
oracle,连接工具Plsql
数据库作用:
1.做功能测试,验证功能的实现和准确性(比如:下单后可以去订单表看下是否新增一条数据)
2.构造测试数据,模拟测试场景(比如:查询3个月之前的订单数据,可以直接去数据库添加三个月之前订单数据,去验证功能测试)
3.出现bug,定位问题的时候需要用到(下单后,我的订单列表没有这条订单数据,我们就去去数据库查看是否有这条订单数据,如果没有就是下单没添加数据,如果有可能是接口没有返回数据)
4.做接口测试会去数据库验证接口的准确性。
比如:
M:你之前做测试的时候会用到数据库吗?
W:会的,比如说执行测试用例时,有时需要到数据库验证数据的准确性与完整、
进行bug定位时,有时需要到数据库查看数据的详细信息、
构造某种测试场景时,可以在数据库里直接修改数据,要比使用界面更有效率、
还有接口测试去数据库验证功能的实现。
数据库会哪些语句?
1.基本的增删改查都会(dml)
2.一些特定的语法(去重distinct,模糊查询like,多少之间between,排序order by)
3.会分组查询,多表查询(内连接/左连接/右连接/全连接),子查询(一般放where或者from后面),分页查询
--查询今天的订单数量--
1.使用时间区间查询
select count(*) from order where order_time between '2020-10-20 00:00:00' and '2020-10-20 23:59:59';
2.今天可以用to_days函数:to_days(时间字段名) = to_days(now())
select count(*) from order where to_days(order_time) = to_days(now());
--如果查询用户名老王的订单数据--
select * from order where userid = (select userid from user where username = '老王')
--查询订单表中user_id重复的记录
select * from 表名 where userid in
(select user_id from 表名 group by user_id having count(*)>=2);
--查询一个班级男女分别有多少人--
select count(*) from student group by sex
--成绩表,查找出各门成绩都大于80分的学员信息
1.学生表student(id,age,name)
2.课程表c(课程编号,课程名称)
3.选课表sc(id,课程编号,分数)
1 语文 50
1 数学 85
2 英语 90
2 物理 89
... ... ...
select * from student where id in
(select id from sc group by id having min(分数)>80)
sql语句语法的执行顺序?
from - where - group by - having - select -order by
oracle和mysql的区别
1.语法区别
1).时间格式,oracle要用to_date,mysql直接写
2).别名as,oracle只能用到选择列,表名不能用as,而mysql都可以用(oracle也可以都打空格取别名)
3).分页查询,mysql用的是limit,oracle用的是rownum(伪行)
2.mysql中小型数据库,oracle大型数据库
3.mysql免费分,oracle商业版
4.Oracle的内存占有量非常大,而mysql非常小
--多表连接有哪些--
内连接(等值连接,inner join)
外连接(左连接 left join/右连接 right join)
全连接(full join)
--解决:左连接数据显示不全的问题(把where换成and)
select * from dept d left join emp e on e.deptno=d.deptno and e.ename='SMITH'
--分页查询--
mysql(使用limit,面试就讲这个) limit m,n:m代表从下一行开始,n一共查询几行
oracle(使用rownum,然后要用到子查询当表去查)
--数据库的导入导出备份--
使用Navicat自带功能可以操作--如何一次性插入10万条数据--
可以写存储过程,使用while循环插入10万条数据
如下:
#新建一个存储过程,存储名是my()
CREATE PROCEDURE my()
#开始
BEGIN
#声明变量n是整型,默认从1开始取值
DECLARE n int DEFAULT 1;
#开始while循环,n小于等于100000
WHILE n<=100000 DO
#循环执行以下sql语句,引用变量n插入数据,n是从1开始取值
INSERT INTO `zentao`.`zt_usertpl`(`id`, `account`, `type`, `title`, `content`) VALUES (n, '12', '1', 'aaa', 'aaa');
#每次循环n的值递增,直到100000
SET n=n+1;
#结束循环
END WHILE;
#结束
END;
#调用
call my();
--你了解过存储过程吗?
有了解过,类似python的自定义函数,其实就是新建一个存储过程名称,把大量的sql语句写在里面,需要用到的时候就直接使用call调用存储过程名称,就会执行存储过程中的sql语句。
--数据库的索引作用是什么?
"索引"就是一本书的目录,提升查询数据的效率
create index 索引名 on 表名(列名);
有更多疑问,或者一起共同学习的朋友可以+V:164344204