测试人员常用的SQL技能

本篇文章主要列举一些测试人员常用的SQL技能,作为一名测试从业人员,一般涉及到数据库的那些方面,希望给一些入门但是没头绪的小伙伴一些帮助。

    首先梳理一下本人在工作中遇到的一些数据库使用场景(我目前从事的是管理系统网站的测试):

  •  本地搭建测试环境,数据库的导出导入
  •  页面上报SQL异常分析
  •  数据库简单的增删改查
  •  批量插入数据或者是查询
  •  树结构查询

 

 1、本地搭建测试环境,数据库的导出导入

  项目开发的初期,或者说测试介入测试的时候,一般是集成测试阶段,一般是在开发库上开发,如果开发人数较多,经常会造出一些脏数据,不利于我们验证,或者测试,此时我们需要有一个专门用于测试的干净数据库,如果公司服务器可以开个账号最好,如果不可以,也可以在本地导入一个数据库辅助测试。

  流程一般是:从服务器导出dmp文件 >> 在指定服务器创建用户、赋权>> 将导出的dmp文件导入到指定数据库的指定用户(以ORACLE数据库11G为例)

  •  导出

   将user1的所有资源导出为/home/oracle目录下的test.dmp文件,输入日志为同级目录下的log.log文件

exp user1/123456 file=/home/oracle/test.dmp log=/home/oracle/log.log owner=user1
  •  创建用户、赋权

  创建表空间,表空间名字为TEST,存储文件为TEST.ORA,初始带下为524兆,空间不够时每次自增100兆。

create tablespace TEST datafile \'TEST.ORA\' size 524m autoextend on next 100m;

   创建用户名为test,密码默认为123456,指定表空间为TEST

create user test identified by 123456 default tablespace TEST;

赋权,给test增加连接、访问资源、管理员权限

grant connect,resource,dba to test;
  •  导入 

将导出的dmp文件导入到指定用户

imp test/123456 file=E:/test.dmp log=E:/log.log fromuser=user1 touser=test ignore=y

 2、页面上报SQL异常分析

  上文也说了,项目初期,问题肯定会存在,比如说表缺失或者字段缺失等等问题,web界面上会报比较明显的问题,此时你需要把日志中的对应sql拎出来执行分析问题,找到缺失的表或者对应的表和字段,在SVN上找到对应的脚本,在测试数据库执行一下,此时问题就解决了(这种小问题,需要测试人员自己解决,不然都找开发,一方面是效率太低,一直打扰别人工作,因为很常见,另一方面是显得测试价值更低【手动捂脸】)

PS:一般情况下,开发库都是齐全的,可以直接找到然后生成对应的脚本,刷一下即可。

 3、数据库简单的增删改查

  数据库其实还是和测试息息相关的技能,像简单的查询定位问题,插入测试数据来减少工作量,以及部分字段类型长度的修改这些简单技能还是需要掌握的,市面上搜一下测试工程师,SQL基本都是必备技能了,可以不精通,但是必须要会~

 4、批量插入数据或者是查询

----循环修改记录
declare
  P_id varchar2(100);
  P_Name varchar2(100);
  conNum number;
begin      
     --循环记录中的 P_id、P_Name(查询结果集循环)--
     for item in (select A.P_id,A.P_Name from VIEW_1 A) loop
         -- 将查询到的数据赋值给变量 --
         P_id := item.P_id;
         P_Name := item.P_Name;      
         -- 获取 P_Name 是否存在(查询结果集赋值)---
         select COUNT(*) into conNum from VIEW_2 where NAME=P_Name;
         --判断是否存在,存在则将结算单位ID赋给货主的TmsCode --
         if conNum = 1 then
              dbms_output.put_line(\'存在\');
                --执行修改--
              update VIEW_2 set VIEW_2.VIEW_2 = P_Name where NAME = P_Name;
         else
              dbms_output.put_line(\'不存在\');
              --执行新增--
         end if;
                
      end loop;    
end; 

  5、树结构查询

connect by 是结构化查询中用到的,其基本语法是:
select * from tablename
start with 条件1
connect by 条件2
where 条件3;
例:
select * from table
start with org_id = \'AAA\'
connect by prior org_id = parent_id;

  其中 :

CONNECT BY :代表的是父子连接关系, PRIOR运算符必须放置在连接关系的两列中某一个的前面。对于节点间的父子关系,PRIOR运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是自底向上。
START WITH:不但可以指定一个根节点,还可以指定多个根节点。

新手上路,有问题欢迎指正【手动谢谢】~ 

 

 

版权声明:本文为leixs原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/leixs/p/13176900.html