增删改查的查之简单查询

导读

软件测试人员在工作使用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 条评论
登录 后参与评论

相关文章

来自专栏李家的小酒馆

SQL基本语法

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

1830
来自专栏PHP在线

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

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

35714
来自专栏PHP在线

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

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

3165
来自专栏小白安全

小白博客 MYSQL常用语句

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

3049
来自专栏撸码那些事

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

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

924
来自专栏黑泽君的专栏

day04_MySQL学习笔记_01

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

461
来自专栏battcn

MySQL - 索引详解

索引依托于存储引擎的实现,因此,每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型。所有存储引擎支持每个表至少16个索引,总索引长度至...

592
来自专栏butterfly100

mysql explain详解

Explain简介 本文主要讲述如何通过 explain 命令获取 select 语句的执行计划,通过 explain 我们可以知道以下信息:表的读取顺序,数据...

6228
来自专栏散尽浮华

mysql操作命令梳理(2)-alter(update、insert)

在mysql运维操作中会经常使用到alter这个修改表的命令,alter tables允许修改一个现有表的结构,比如增加或删除列、创造或消去索引、改变现有列的类...

1836
来自专栏数据库

开发篇-MySQL分区(一)

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

2077

扫码关注云+社区