zoukankan      html  css  js  c++  java
  • 软件测试人员必掌握的增删改查之简单查询

    导读

    软件测试人员在工作使用SQL语言中的查询是使用得最多的,而查询也是SQL语言中最复杂的,很多测试人员只使用到其中最简单的查询
     

    1.数据库的使用

    现在在任何项目中都有数据库存在,那么在测试过程中查看数据库中的数据是必不可少的步骤,那什么情况下测试人员会查看数据库呢?
    比如有一个测试场景是注册新用户,用户在前端页面上添加了一个新用户,点击提交后,弹出提示用户注册成功。
    这时预期结果中就应该包含查询数据库:查询user表中新增一条数据,数据字段的信息与注册信息一致;查询password表中新增一条数据,字段信息显示正确,其中密码字段为加密后的字符串。
    再比如有一个测试场景是一个用户向另一个用户转账100元,用户在前端页面发起转账,界面显示转账成功。
    预期结果中查询数据库的信息应为:交易流水表中新增一条数据,数据字段的信息显示正确,其中转账金额为100元,手续费为0元;查询用户账户表,发起用户的账户余额为XXX元,接收用户的账户余额为XXX元。
    这些语句包含在测试用例中的预期结果中,而在执行测试时就需要根据用例所描述的信息去查询数据库。
     
    软件测试人员在执行测试时使用最多的语句就是查询(SELECT)语句,而SELECT语句也是SQL语言中相当复杂的语句,它包含单表查询,连接查询,嵌套查询,集合查询等各种复杂不同的数据库查询。
     

    2.单表查询

    单表查询是SELECT语句中最简单的查询语句。
    select语句格式:
    SELECT [ALL|DISTINCT] {*|table1.*|{table1.field1} [as alias1]|{table2.field2} [as alias2],....}
    FROM table1 AS [别名],table2 AS [别名]  
    讲解:
    *---表示表中所有字段
    table.*---表示某个表的所有字段
    table.field---表示某个表的某个字段
    AS alias---给字段取别名,as可以省略
     
    select语句执行顺序:
    SELECT 子句-----再执行SELECT 2
    FROM 子句-----先执行FROM   1   
     
    SELECT 语句的意义是根据不同的条件查询出数据,最终显示查询出来的结果集;select子句控制结果集的显示。
    现在有三张表,表结构如下:
    班级(class)表(学号(xuehao),姓名(name),班级(class),年龄(age))
    课程(course)表(课程名(c_name),课程号(cno))
    分数(score)表(学号(xuehao),课程号scno,分数(score))

    1.查询语句

    1.查询class表中所有的数据
    mysql> SELECT * FROM class;
    2.查询class表中name字段的数据
    mysql> SELECT name FROM class;
    3.查询class表上name和age字段,并取别名
    mysql> SELECT name as 姓名,age 年龄
            -> FROM class;
    4.在第三题的基础上,给class表取别名
    mysql>SELECT c.name as 姓名,c.age 年龄
            -> FROM class c;
    5.查询class表中city字段,并去重
    mysql> SELECT DISTINCT city
            -> FROM class;
    6.查询class表中前面三条数据(LIMIT  ---返回指定的数据)
    mysql> SELECT * FROM class LIMIT 3;
    7.查询class表中第五条数据后面的三条数据
    mysql> SELECT * FROM class LIMIT 5,3;

    2.加上条件语句

    格式:SELECT [ALL|DISTINCT] {*|table1.*|{table1.field1} [as alias1]|{table2.field2} [as alias2],....}
              FROM table1 [别名],table2别名,....
              [WHERE (条件s)]
    1.查询class表中姓名为张季柯的数据
    mysql> SELECT  * 
            -> FROM  class 
            -> WHERE name = 'tester';
    语句执行顺序:
    SELECT * ---------------------------------3    ---最终显示的结果集
    FROM class ------------------------------1
    WHERE name = 'tester';  ----------------2  
    2.查询class表中姓名为张三丰的年龄的数据
    mysql> SELECT age 年龄 
            -> FROM class
            -> WHERE name = '张三丰';
    3.查询class表中city为成都的学员的姓名和班级的数据
    mysql> SELECT name,class 
            -> FROM class 
            -> WHERE city = "成都”;
    4.在3的基础给name和class分别取别名
    mysql> SELECT name 姓名,class 班级
            -> FROM class 
            -> WHERE city = '成都’;
    在条件语句中加上运算符和IN,BETWEEN,LIKE等关键字,可查询某个范围的数据
    运算符:>,<,=,<>,<=,>=
    IN、BETWEEN….AND、LIKE
    5.查询class表中age大于等于23的学员
    mysql> SELECT * 
            -> FROM class 
            -> WHERE age >= 23;
    6.查询class有中age小于等于23的学员的姓名和班级
    mysql> SELECT name 姓名,class 班级 from class where age <= 23;
    7.查询class表中班级不为C1704的所有学员信息
    mysql> SELECT *
        -> FROM class
        -> WHERE class <> 'C1704';
    注意:<>在某SQL版本中可以与 != 互换
          
    8.查询class表中年龄为23,25,27的学员姓名和班级----IN 包含
    格式:IN (值1,值2,值3,....)
    mysql> SELECT name 姓名,class as 班级
        -> FROM class
        -> WHERE age IN (23,25,27);
    9.查询score表中成绩为(80,90,78)的学员姓名和学号
    mysql> SELECT name 姓名,xuehao 学号
        -> FROM score
        -> WHERE score IN (80,90,78);
    10.查询score表中成绩为70-90之间的学员信息
    mysql> SELECT * FROM score
        -> WHERE score <= 90 AND score >= 70;     
    === SELECT * FROM score
    WHERE score BETWEEN 70 AND 90; ----推荐
    注意:BETWEEN ....AND....在某某之间的数据,可以是数值,也可以是文本,也可以是日期
    11.查询class表中class为A1354到C1805之间的学员
    mysql> SELECT * FROM class
        -> WHERE class BETWEEN 'A1354' AND 'C1805';  
    注意:以字母顺序取值  取A--C之间的数据    
    12.查询出class表姓名以王开头的学员信息---like
    mysql> SELECT * FROM class
        -> WHERE name LIKE '王%';
    注意:LIKE----好像
    一般与通配符搭配使用:
    %---一个或多个字符串
    _---一个字符
    13.查询出class表中姓名为王开头,且姓名只有二个字的学员信息
    mysql> SELECT * FROM class
        -> WHERE name LIKE '王_';
    14.查询class表中姓名以王和张开头的数据
    mysql> SELECT * FROM class
        -> WHERE name like '王%' OR name like '张%';
    注意:OR---或,一般跟WHERE语句里,表示二个条件只要满足一个就行,并集
    15.查询class表中姓名以王开头,且年龄为23的学生信息
    mysql> SELECT * FROM class
        -> WHERE name LIKE '王%' AND age = 23;
    注意:and---和,表示二个条件同时满足,取条件的交集
    16.查询class表中年龄不为null
    mysql> SELECT * FROM class
    -> WHERE age not is null;
    注意:NOT---不满足后面的条件
       

    3.针对结果集进行升降顺序排序

    ORDER BY 对指定的结果集进行排序
    格式:               
    SELECT [ALL|DISTINCT] {*|table1.*|{table1.field1} [as alias1]|{table2.field2} [as alias2],....}
    FROM table1 [别名],table2,....
    [WHERE 某列名称 = 某值]
    [ORDER BY ...]  
    1.查询score表中的分数,并以递增的顺序进行排序(升序)
    mysql> SELECT score FROM score ORDER BY score;
    2.查询score表中的分数,并以递减的顺序进行排序(降序)
    mysql> SELECT score FROM score ORDER BY score desc;
    注意:ASC ----升序排列, 一般默认就是升序,可以省略
    DESC----降序排列,只有加上DESC,才是降序
    3.查询class表中学员的姓名,以年龄降序排列,名字升序排列
    mysql> SELECT name 
            -> FROM class
            -> ORDER BY age desc,name asc;
    ORDER BY 是根据后面加上列名称来进行升序或降序排列
    4.查询class表中学生年龄在20到30之间的学号和员姓名,同时对学号降序排列
    mysql> SELECT xuehao,name
            -> FROM class
            -> WHERE age between 20 and 30
            -> ORDER BY age desc;
     
    下节再介绍SELECT语句的多表查询,连接查询,嵌套查询等复杂的查询语句。 
    欢迎关注王豆豆的微信公众号:资深Tester,了解更多好文,和王豆豆一起成长。。。。
  • 相关阅读:
    windows服务程序
    DevExpress之时间控件
    DevExpress之列表控件
    Docker安装及基本使用
    配置阿里云yum源
    Centos7安装gitlab
    正则表达式
    sed进阶
    初识sed和gawk
    安装saltstack
  • 原文地址:https://www.cnblogs.com/evangline/p/8296433.html
Copyright © 2011-2022 走看看