select 表名.字段1,字段2,…字段n from 表1,表2,表3
where 关联条件1 and/or 过滤条件1 and/or 过滤条件2
group by 字段1,字段2
having 分组后过滤条件1 and/or 过滤条件2
order by 字段名1 asc/desc ,字段名2 asc/desc
去重复:distinct
1、熟练并能够手写出关键字
2、熟练使用sql语句编写的基本思路及写法
dos窗口启动mysql命令:net start mysql
三表进行关联,需要2个关联条件,n个表有(n-1)个关联条件
常见统计函数:
求最大值:max(字段名)
求最小值:min(字段名)
统计和:sum(字段名)
统计总数:count(字段名)
平局值:avg(字段名/表达式)
重点:
1、熟悉常见的统计函数
2、什么情况下遇到group by
3、在select后面,group by后面有的字段,select后面才可以有,除了统计函数
什么是子查询:通过一对()的sql,先执行子查询,再去执行主查询
子查询分为两种:单行子查询和多行子查询
子查询作为sql语句的条件的一部分或者作为表使用
1、统计每个学生的总成绩(由于学生可能有重复的名字),并且总成绩不小于270,显示字段:学生id,姓名,总成绩
select id,sname sum(score) from student,score
where student.id=score.sid
group by student.id ,sname
having sum(score)>270
统计函数不能写到where后面
2、查询单科最好成绩的学员信息,显示:学生id,学生姓名,科目,成绩
select id,sname,coursename ,score from score,student,course,(select cid,max(score)gscore from score group by cid)t
where student.id=score.sid and course.courseid=score.cid and t.cid=score.cid and t.gscore=score.score
3、行转列
计算每个人的成绩,总分数、平局值,要求显示:学号、姓名、语文、数学、英语、总分、平均分
select id,name,courseid,coursename,score,'语文','数学','英语'
(case when coursename='语文' then score else 0 end) as 语文
(case when coursename='数学' then score else 0 end) as 数学
(case when coursename='英语' then score else 0 end) as 英语
from student,score course
where student.id=score.sid and score.cid=course.courseid
对上面表的数据进行统计和汇总 group by
多表查询、分组统计
select id,name,
sum(case when coursename='语文' then score else 0 end) as 语文
sum(case when coursename='数学' then score else 0 end) as 数学
sum(case when coursename='英语' then score else 0 end) as 英语
sum(score) as 总成绩,avg(score) as '平均成绩'
from student,score course
where student.id=score.sid and score.cid=course.courseid
group by id,name
1、前后端分离
2、基于安全考虑(有时候前端没有控制住)
3、推崇测试前移
1、json:http协议、dubbo协议
键值对
数组
2、html:http协议
3、xml:webservice
返回字段
1、错误码:error_code
2、错误码中文说明:msg
3、数据:data
你了解http协议吗?
http是一种超文本传输协议,主要的作用是浏览器和服务器之间交互数据,交互分为:请求,响应
请求:请求行,请求头、请求正文
请求行:请求方式get、post、put、delete、请求地址、请求协议
请求头:
host:请求主机地址
connection:keep-alive
content-type:内容类型
X-requested-with:异步请求
Cookie:cookie信息
请求正文:请求数据
响应:响应行、响应头、响应正文
为什么做接口关联?
主要是因为接口与接口之间有业务关联
1、json提取器关联
2、正则表达式关联
3、cookie关联
var data = JSON.parse(responseBody) 将responseBody转化为json格式
//match匹配
var access_token = responseBody.match(new RegExp('"access_tpken":"(.+?)"'))
cookie提取:
cookie是浏览器和服务器交互的一种数据,这种数据格式是键值对格式,
原理:当浏览器第一次访问服务器的时候,那么服务器会生成cookie并且发送给浏览器,然后,浏览器在2-n次访问服务器发送请求的时候会自动带cookie信息。主要是用于鉴权
postman的cookie提取
var csrf_token = postman.getResponseCookie("csrf_token")
接口关联、接口鉴权、接口加密、接口签名
1、基本发送get、post
2、postman的动态参数、内置和自定义
3、三种接口关联方式
4、批量运行测试用例
5、环境变量和全局变量
6、六种断言方式
1、断言返回状态码
2、断言返回结果中包含指定的字符串
3、检查json中其中一个字段的值
4、断言返回的结果是否等于一个字符串
7、postman接口的加密与解密
8、postman的接口签名
9、动态函数以及自定义函数
10、postman的导入导出以及如何和Jenkins实现持续集成
注意:
1、在tests断言里面不能使用{{}}取全局变量,只能通过 pm.globals.get(“times”)或者globals(“times”)或者globals.times获取全局变量
2、在参数里面获取数据文件的值和全局变量一致,在断言里面取数据文件的使用方式:data["名称“] (数据驱动csv)
3、数据驱动csv文件编码格式必须为:UTF-8
request函数详解:
method:请求方式
url:请求地址
params:get请求传参
data:post请求传参(可以传字符串,也可以传字典,但是字典只支持键值对的字典,不支持嵌套字典)
json:post请求传参(只能传字典,任意字典)
geaders:请求头
cookies:cookie
files:文件上传
auth:鉴权
timeout:超时
verify:SSL证书验证,verify=false忽略ssl证书验证
proxies:代理
一定要看源码:
1、给我们提供思路,借鉴别的的封装方式
data:post请求传参(可以传字符串,也可以传字典,但是字典只支持键值对的字典,不支持嵌套字典)
json:post请求传参(只能传字典,任意字典)
json.loads():反序列化,把字符串转化为字典
json.dumps():序列化,把字典转化为字符串
接口鉴权、接口加密、接口签名(金融项目、银行项目、信贷项目)
1、什么是cookie?
cookie的本质是一段文本信息,客户端第一次访问服务器时,那么服务器不知道客户端的身份,送一就需要创建一个身份,这个身份标识就是cookie,以键值对的方式保存
2、cookie鉴权原理?
当客户端第一次访问服务器时,那么服务器就会生成cookie,并且把生成的cookie信息放到响应头的set-cookie字段里面,然后发送给客户端,客户端收到cookie就会保存起来,然后在第2-n次请求服务器的时候自动带上cookie信息实现鉴权
3、cookie分类
会话cookie:保存在内存中,浏览器关闭之后自动消失
持久cookie:保存在硬盘中,浏览器关闭之后不会自动消失,只有当持久化的时间到期才会消失
4、数据格式
name:cookie的名称
value:cookie的值
domain:cookie作用的IP地址
path:cookie所在的服务器上面的项目的路径
expires in:失效时间
size:大小
目前市面上有那些加密方式
对称式加密方式:base64(常用)、不常用:DES和AEC
1、base64加密:
//base64加密方式
var username = CryptoJS.enc.Utf8.parse("admin"); //转为utf-8
var base64_username = CryptoJS.enc.Base64.stringify(username); //转为base64加密
console.log(base64_username);
//base64解密方式
var base64_username = CryptoJS.enc.Base64.parse("YWRtaW4=");
var username = base64_username.toString(CryptoJS.enc.Utf8)
console.log(username)
2、非对称加密方式(双钥(公钥、私钥)):RSA加密方式
由一个密码生成双钥,公钥加密,私钥解密
3、只加密不解密
(1)MD5
//MD5加密
var user_name = CryptoJS.MD5("admin").toString().toUpperCase();
console.log(user_name)
postman为接口而生,Newman为postman而生
运行命令:newman run
常用参数:
-e:使用环境变量
-g:使用全局变量
-d:使用csv、json数据驱动
-n:循环次数
-r cli,html,json,junit --reporter-html-export 生成html报告
应用步骤:
1.导出用例,环境变量、全局变量、数据文件—json格式
2.运行并生成html报告
newman run setNextRequest.postman_collection.json -d data.json -r html