• 0
  • 0
分享
  • 测试人需要的数据库知识:MySQL常用语法——软件测试圈
  • 曼倩诙谐 2022-08-04 13:06:44 字数 2223 阅读 2183 收藏 0

作为一名测试人,掌握数据库常用的操作不可缺少,下面就一段mysql 查询语句梳理几个相关语法知识。

本篇文章主要包括两方面内容

  • 常用的sql语法

  • 开发代码中如何和sql进行关联

案例代码:

select a.blastid,d.apptime,a.charge_approve,
            a.blast_batch,
            a.plan_blast_time,
            a.exe_plan_id,
            a.import_flag,
            a.rig_type,.......
            case when (select "count"(*) from bla_geology_info geo where a.blast_id=geo.blast_id and  geo.delete_flag=0)>0
                then 'true' else 'false'  
    END as isShowFlag
    from bla_blast_info a
    left join exe_plan_month b
    on a.exe_plan_id = b.exe_plan_id
    left join sys_user c
    on a.dynamite_user = c.user_id
    left join (select blast_id,isagree,idea,create_time as app_time from bla_charge_approve where delete_flag = '0') d
    on a.blast_id = d.blast_id
    WHERE a.blast_type = '1' AND a.blast_status > '3' AND a.blast_status < '8' AND a.charge_approve > '1' AND a.delete_flag = '0' ORDER BY cast(a.charge_approve  as numeric)  ASC , d.app_time DESC , a.create_time DESC

一 常用的sql语法

1.查询语句 select xxxx  from 表名 ,表示从哪个表进行查询。其中select 后面内容以,分割。

2. select xxxx  from 表名 别名,表示这个表用别名替代,如上个语句中的a,b,c等

3.case when then xx,else xxx ,end  as  isShowFlag表示符合when 条件执行 then 后面语句,否则执行else 后面语句,

eg 案例中case when (select "count"(*) from blageologyinfo geo where a.blastid=geo.blastid and geo.delete_flag=0)>0

then 'true' else 'false' 表示符合条件的爆破量进行上传

end  as  isShowFlag  起的查询语句别名,后续调用的时候 使用别名名称即可。

4.left join 左连接 ,表1左连接表2,以左为主,表示以表1为主,关联上表2的数据,查出来的结果显示左边的所有数据,然后右边显示的是和左边有交集部分的数据。

1-.png


一句话的意思是 先取交集,再关联到左表。

引申整理出几个连接的常用含义及区分 ,如下表所示:

1-1.png

5.查询语句 select xxxx from 表名 where 查询条件

where 查询条件后面接所有你要查询的内容,用and连接,这里需要注意order by 使用

order by 1,2,3,4 ,先1排序,1相同的情况下按照2,3,4排序

6. cast ()数据类型转换函数,文中cast(a.charge_approve as numeric) 表示将字段charge_approve 转换为数字型,以前是字符类型,字符类型的字段不可以进行排序

7. a.exe_plan_id = b.exe_plan_id 表示 a表的exe_plan_id字段和b表的exe_plan_id 字段进行绑定,可以这么理解 只有两个表绑定后才能进行相关的查询操作。

总结通用模板:

Select 字段名1,字段名2  case when  条件 then 执行语句  else 执行语句 end as 别名 from 表名 别名 left join on 表连接(a.exe_plan_id = b.exe_plan_id)
Where 查询条件(d.app_time DESC)

二 开发代码中如何和sql进行关联

开发逻辑中有一个词‘mapper映射’,里面具体的实现不做过多赘述。

简单点的逻辑是:

用xml文件 将sql 语句的名称 和 实体名称一一映射,通过这种形式进行绑定,然后在代码中引用映射的文件名,从而实现数据查询。

1-2.png

上面我们通过一段sql 语句列举了 mysql 常用的语法,以及sql语句编写完成后 如何在代码中进行使用的。


作者:桃子    

来源:http://www.51testing.com/html/70/n-7792370.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1.渲染引擎(所谓的内核)(1)Chrome--开源的Webkit,听说自主从Webkit中衍生了Blink(2)Safari--开源的Webkit(3)Firefox--Gecko,Mozilla自家的渲染引擎(4)IE--Trident内核(5)360极速版--Webkit+Trident(6)Opera--自家的Presto内核,然后这位兄弟也跟着Chrome用Blink(7)其他国内的基本都是Trident内核2.浏览器兼容性测试2.1为什么要做浏览器兼容性测试第一点也说了浏览器渲染引擎有区别,就算是同一渲染引擎,在做个性化修改后显示也会有差别,用过国内浏览器的你最明白的啦。而前端页面...
            0 0 1362
            分享
          • 安装Python3.7.1此处不再赘述安装过程,作为记录安装Anaconda3.5.3Anaconda3-5.3.0-Windows-x86_64.exe方案1:可以直接从官网https://www.anaconda.com/distribution/,默认下载最新版本,19年3月27日为python3.7.1版本方案2:清华镜像https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/,速度快很多安装完成之后,在Anaconda里新建一个虚拟环境machinelearn(这里是图形界面创建环境)切换仓库地址命令窗口里输入如下代码,载入清华镜像...
            0 1 2496
            分享
          • 一、Java集合框架概述集合可以看作是一种容器,用来存储对象信息。所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下。Java集合类主要由两个根接口Collection和Map派生出来的,Collection派生出了三个子接口:List、Set、Queue,因此Java集合大致也可分成List、Set、Queue、Map四种接口体系,(注意:Map不是Collection的子接口)。其中List代表了有序可重复集合,可直接根据元素的索引来访问;Set代表无序不可重复集合,只能根据元素本身来访问;Queue是队列集合;Map代表的是存储k...
            0 0 1279
            分享
          •  时间都去哪里了敏捷迭代和团队协作,前后端分离的工作模式几乎是每个互联网公司的常规工作模式。前后端分离,各自开发的优点很多,其中一项是它只需要提供一个统一的API接口,即可被web,iOS,Android等多个客户端使用,效率大大提高。但生于敏捷,死于迭代,困于团队协作常常是这种软件研发模式的一大弊病。 随着项目不断推进、变更,项目越来越大,维护成本也越来越高。由于某些公司接口文档管理方式采用wiki及html,openapi形式,版本迭代较快,接口常常变更,成员间update和文档维护却常常跟不上。在API管理方面越到后期越存在着可观且隐形的“人力资源”浪费:文档老旧不可用,新人上...
            13 13 1603
            分享
          •   在正式开始讲解之前,先讲一下什么是“好的”测试用例,这个“好”又应该体现在哪些方面。这两个问题看似简单实则难以回答。你可能会说:“发现软件缺陷可能性大的测试用例就是好用例。”然而,我会反问你:“你打算用什么方法来量化测试用例发现缺陷的可能性?”  类似地,你可能还会说:“发现至今未被发现的软件缺陷的测试用例就是好用例。”那么我想问你的是:“如何评估是否还存在未被发现的缺陷?如果软件中根本就没有错误呢?”其实,这是定义“好的”测试用例的思路错了。比如,一个人吃烧饼,连吃 5 个不饱,吃完第 6 个终于饱了。早知道吃了第 6 个就会饱,何必吃前面 5 个呢?他吃的 6 个烧饼其实是一个整体,一...
            4 4 2301
            分享
      • 51testing软件测试圈微信