增删改查的查之简单查询

导读

软件测试人员在工作使用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表中姓名为test数据

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 = '成都’;

3.条件范围

在条件语句中加上运算符和IN,BETWEEN,LIKE等关键字,可查询某个范围的数据

运算符:>,<,=,<>,<=,>=

IN、BETWEEN….AND、LIKE

1.查询class表中age大于等于23的学员

mysql> SELECT *

-> FROM class

-> WHERE age >= 23;

2.查询class有中age小于等于23的学员的姓名和班级

mysql> SELECT name 姓名,class 班级 from class where age <= 23;

3.查询class表中班级不为C1704的所有学员信息

mysql> SELECT *

-> FROM class

-> WHERE class <> 'C1704';

注意:<>在某SQL版本中可以与 != 互换

4.查询class表中年龄为23,25,27的学员姓名和班级----IN 包含

格式:IN (值1,值2,值3,....)

mysql> SELECT name 姓名,class as 班级

-> FROM class

-> WHERE age IN (23,25,27);

5.查询score表中成绩为(80,90,78)的学员姓名和学号

mysql> SELECT name 姓名,xuehao 学号

-> FROM score

-> WHERE score IN (80,90,78);

6.查询score表中成绩为70-90之间的学员信息

mysql> SELECT * FROM score

-> WHERE score <= 90 AND score >= 70;

=== SELECT * FROM score

WHERE score BETWEEN 70 AND 90; ----推荐

注意:BETWEEN ....AND....在某某之间的数据,可以是数值,也可以是文本,也可以是日期

7.查询class表中class为A1354到C1805之间的学员

mysql> SELECT * FROM class

-> WHERE class BETWEEN 'A1354' AND 'C1805';

注意:以字母顺序取值 取A--C之间的数据

8.查询出class表姓名以王开头的学员信息---like

mysql> SELECT * FROM class

-> WHERE name LIKE '王%';

注意:LIKE----好像

一般与通配符搭配使用:

%---一个或多个字符串

_---一个字符

9.查询出class表中姓名为王开头,且姓名只有二个字的学员信息

mysql> SELECT * FROM class

-> WHERE name LIKE '王_';

10.查询class表中姓名以王和张开头的数据

mysql> SELECT * FROM class

-> WHERE name like '王%' OR name like '张%';

注意:OR---或,一般跟WHERE语句里,表示二个条件只要满足一个就行,并集

11.查询class表中姓名以王开头,且年龄为23的学生信息

mysql> SELECT * FROM class

-> WHERE name LIKE '王%' AND age = 23;

注意:and---和,表示二个条件同时满足,取条件的交集

12.查询class表中年龄不为null

mysql> SELECT * FROM class

-> WHERE age not is null;

注意:NOT---不满足后面的条件

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

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(zishentester)

原文发表时间:2017-11-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据库

开发篇-MySQL分区(一)

MySQL从5.1版本开始支持分区的功能。分区是指根据一定的规则,数据库把一个表分解成多个更小的、更容易管理的部分。就访问数据库的应用而言,逻辑上只有一个表或一...

2187
来自专栏撸码那些事

MySQL——通过EXPLAIN分析SQL的执行计划

在MySQL中,我们可以通过EXPLAIN命令获取MySQL如何执行SELECT语句的信息,包括在SELECT语句执行过程中表如何连接和连接的顺序。

1014
来自专栏黑泽君的专栏

day04_MySQL学习笔记_01

数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。(文件系统)

541
来自专栏PHP在线

MyISAM InnoDB 区别(回顾)

索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。 在数据库表中,对字段建立索引可以大大提高查...

3435
来自专栏李家的小酒馆

SQL基本语法

SQL 基本语法 表库操作 创建表 create table 表名( 字段名 类型(长度) 约束, 字段名 类型(长度)...

1870
来自专栏土豆专栏

Java面试之数据库常用语句

>id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, //id值,无符号、非空、递增——唯一性,可做主键。

1697
来自专栏PHP在线

MySQL DELETE语句和TRUNCATE TABLE语句的区别

MySQL DELETE语句和TRUNCATE TABLE语句功能相似,但是二者究竟有何区别呢?下文就将为您分析MySQL DELETE语句和TRUNCATE ...

37014
来自专栏PHP在线

MySQL索引类型一览 让MySQL高效运行起来

索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。 在数据库表中,对字段建立索引可以大大提高...

3295
来自专栏小白安全

小白博客 MYSQL常用语句

用户管理: 1、新建用户: >CREATE USER name IDENTIFIED BY ‘ssapdrow’; 2、更改密码: >...

3109
来自专栏撸码那些事

MySQL——通过EXPLAIN分析SQL的执行计划

在MySQL中,我们可以通过EXPLAIN命令获取MySQL如何执行SELECT语句的信息,包括在SELECT语句执行过程中表如何连接和连接的顺序。

962

扫码关注云+社区