• 0
  • 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语法

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

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

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的数据,查出来的结果显示左边的所有数据,然后右边显示的是和左边有交集部分的数据。

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

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

连接类型含义案例备注
左连接(left join)首先取出a表中所有数据,然后再加上与a,b匹配的的数据select * from a left join b on a.aid = b.bid
右连接(right join)首先取出b表中所有数据,然后再加上与a,b匹配的的数据select * from a right join b on a.aid = b.bid
内连接(inner join)取出a,b匹配的的数据select * from a join b on a.aid = b.bid
左向外联接(left outer join)首先取出a表中所有数据,然后再加上与a,b匹配的的数据select * from a left join b on a.aid = b.bid等同于左连接

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 语句的名称 和 实体名称一一映射,通过这种形式进行绑定,然后在代码中引用映射的文件名,从而实现数据查询。

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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、问答题1、自动化代码中,用到了哪些设计模式?答:自动化代码用到过的设计模式:①单例设计模式;②工厂模式;③PO设计模式;④数据驱动模式;⑤面向接口编程设计模式。2、什么是Selenium答:Selenium是一个开源的web自动化测试框架,支持多种编程语言开发自动化测试脚本,支持跨浏览器平台进行测试。3、TestNG中注解有哪些?答:@Test,@BeforeSuite,@AfterSuite,@BeforeTest,@AfterTest,@BeforeClass,@AfterClass,@BeforeMethod,@AfterMethod,@DataProvider。4、什么是断言?答:...
            0 0 1506
            分享
          •   据报道,美国人工智能公司OpenAI创始人萨姆·奥特曼(SamAltman)即将获得约1亿美元融资,资金将用于他使用眼部虹膜扫描技术创建的一种安全的全球加密货币“世界币”(Worldcoin)的计划。对于经历了黯淡一年的加密货币行业来说,这将是难得值得高兴的事情。  三位知情人士透露,该公司正就为世界币计划筹集新资金进行深入谈判,准备在未来几周内推出。  其中一位知情人士说,资金筹集包括现有投资者和新投资者。该公司之前的投资者包括信息科技领域的投资公司KhoslaVentures和美国私人风险投资公司AndreessenHorowitz的加密基金,以及数字资产衍生品交易所FTX创始人山姆·...
            0 0 918
            分享
          •   做软件测试的人,往往会有这样的想法:由于软件的复杂导致了测试的复杂,所以不能指望培训能给我们很多工作中的实际指导。偏重理论是肯定的,但并非没有意义,虽然理论同样可以从相关的文献资料上得到。因为测试时从来不希望检测被测系统所有可能的输入、路径和状态,那么应该选择什么?什么时候应该停止测试?什么时候应该暂停测试?怎样编写一个测试包,它可以检测足够多的消息和状态的组合来说明没有失败的操作,但是从实用性来说它又足够的小?  测试提出了许多基本的但却令人困惑的难题,带着这些问题,所以参加了几次实用软件测试培训。  一、软件测试员的目标是尽可能早地找出软件缺陷,并确保其得以关闭  仔细思考后,我觉得此...
            0 0 1139
            分享
          • 1、JMeter简介JMeter是Apache组织开发的基于Java的压力测试工具。具有开源免费、框架灵活、多平台支持等优势。除了压力测试外,JMeter在接口测试方面也有广泛的应用。2、JMeter安装访问JMeter官网:https://jmeter.apache.org/download_jmeter.cgi,点击下载后解压缩,依次打开\apache-jmeter-4.0\JMeter\bin,运行jmeterw.cmd即可。(建议在桌面创建jmeterw.cmd的快捷方式,方便快速打开)3、使用JMeter完成单个接口测试3.1 添加线程组在“测试计划”上点击鼠标右键-->添加-...
            12 12 3605
            分享
          •   美国司法部在周三提交的一份法庭文件中建议“禁止谷歌收购、投资或与任何控制消费者搜索信息的公司合作”。  有了解司法部想法的人对彭博社称,该条款旨在适用于谷歌对 Anthropic 的投资。如果联邦法官接受这一提议,谷歌将被迫解除与 AI 初创公司 Anthropic 的合作关系。  除此之外,反垄断执法人员还在法庭的文件中再次强调:谷歌必须剥离 Chrome 浏览器。他们援引了法官早先的一项裁决,称 Chrome 浏览器“强化”了谷歌的“统治”地位。  谷歌没有就这项具体条款进行回应,只是提到了它在周四发布的一篇博客,其中对司法部的提案进行了批评。  谷歌去年承诺向 Anthropic 投...
            0 0 21
            分享
      • 51testing软件测试圈微信