软件测试人员入门必备SQL知识

作为一名软件测试人员,往往需要对数据进行处理,但通常以查询偏多,主要为了验证数据的准确性。简单总结一下作为测试人员,应具备哪些基本的SQL知识。

【通配符】

通配符用在过滤语句当中,% 匹配 >=0 个任意字符;_ 匹配 ==1 个任意字符;[ ] 可以匹配集合内的字符。

例如 [ab] 将匹配字符 a 或者 b。用脱字符 ^ 可以对其进行否定,也就是不匹配集合内的字符。

使用 Like 来进行通配符匹配,但是不要滥用通配符,通配符位于开头处匹配会非常慢。

SELECT * 
FROM mytable 
WHERE col LIKE '[^AB]%'
#不以 A 和 B 开头的任意文本

【分组】

GROUP BY 自动按分组字段进行排序,ORDER BY 也可以按汇总字段来进行排序。WHERE 过滤行,HAVING 过滤分组,行过滤应当先于分组过滤。

分组规定:

  1. GROUP BY 子句出现在 WHERE 子句之后,ORDER BY 子句之前;
  2. 除了聚合函数外,SELECT 语句中的每一字段都必须在 GROUP BY 子句中给出;
  3. NULL 的行会单独分为一组;
  4. 大多数SQL实现不允许GROUP BY列带有长度可变的数据类型。

【连接】
连接使用 JOIN 关键字,它用于连接多个表并且连接的查询效率比子查询高。
在join的时候,会产生笛卡尔积,但是如果表比较大,那么join之后会非常消耗内存,所以我们在进行表连接查询的时候一般都会使用JOIN xxx ON xxx的语法,ON语句的执行是在JOIN语句之前的,也就是说两张表数据行之间进行匹配的时候,会先判断数据行是否符合ON语句后面的条件,再决定是否JOIN。

【case when】

SQL中的case when then else end用法其实跟我们程序语言中的if-else很是类似,在写SQL的时候也常常会用到。
case 具有两种格式,简单caise函数和case搜索函数:

CASE sex 
	WHEN '1' THEN '男' 
	WHEN '2' THEN '女' 
ELSE '其它' END
#简单case函数
CASE  
	WHEN sex = '1' THEN '男' 
	WHEN sex = '2' THEN '女' 
ELSE '其它' END
#case搜索函数

【时间函数】
项目中通常会出现时间范围的搜索,比如本月、本学期或者自定义的时间
1、简单的时间范围查询:

SELECT * FROM table WHERE data1 < '2019-08-27' AND data2 > '2019-08-01'
#第一种

SELECT * FROM table WHERE date1 between '2019-08-01' and '2019-08-27' 
#第二种

2、查询昨天日期

SELECT * FROM table WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1

3、七天

SELECT * FROM table WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)
#CURDATE()  返回当前日期
#DATE_SUB() 函数从日期减去指定的时间间隔


 

猜你喜欢

转载自blog.csdn.net/ZhangYongWei1955/article/details/100125278