接口测试教程 - xmysql 介绍(二)

3.2 其他接口

3.2.1 查询多行

通过主键查询多行

GET /api/表名/bulk

GET http://127.0.0.1:3000/api/ecs_goods_type/bulk?_ids=4,5,6
查询多行

3.2.2 添加多行

同时插入多行数据

POST /api/表名/bulk

以 json 方式构建请求报文

POST http://127.0.0.1:3000/api/ecs_goods_type/bulk
添加多行

3.2.3 删除多行

同时删除多行。

DELETE /api/表名/bulk

DELETE http://127.0.0.1:3000/api/ecs_goods_type/bulk?_ids=10,11
删除多行

3.2.4 过滤重复的行 distinct

GET /api/表名/distinct?_fields=列名

指定列名排除该列重复的行。

3.2.5 直接执行 SQL 语句

POST /dynamic

SQL 语句写在body中

可以通过 dynamic接口,直接编写SQL语句。

但是改接口仅对 xmysql 服务在数据库服务器上启动有效,也就是说,参数 -h 必须指定 -h localhost 或者-h 127.0.0.1。如果是通过 xmysql 远程访问数据库的话,是不能执行 SQL 语句的。

post 方法的 body 有两个字段:queryparams

query: SQL 查询语句,或者是SQL 准备语句 (使用 ?? and ? 进行参数占位)

params : 与 SQL 准备语句配合起来使用,为 ?占位提供参数值

SQL 语句:

POST http://127.0.0.1:3000/dynamic
dynamic

SQL 准备语句:

dynamic

4. 条件

4.1 使用 Where 条件

我们在编写 SQL 语句时,会使用 where 条件来过滤。xmysql 也支持 where 条件,只是通过参数的方式实现的。

GET /api/表名?_where=(列名,条件运算符,值)

使用 _where作为参数名后面的值为查询条件,查询条件括号中有三个值,分别是:列名条件运算符比如大于、小于等,判断条件的值。

比如下面的例子:

GET http://172.31.18.163:3000/api/ecs_goods?_where=(shop_price, gt, 1000)

上面的例子,是从 ecs_goods查询 shop_price大于 1000的商品。

where条件

详细的条件运算符:

eq      -   '='         -  (colName,eq,colValue)
ne      -   '!='        -  (colName,ne,colValue)
gt      -   '>'         -  (colName,gt,colValue)
gte     -   '>='        -  (colName,gte,colValue)
lt      -   '<'         -  (colName,lt,colValue)
lte     -   '<='        -  (colName,lte,colValue)
is      -   'is'        -  (colName,is,true/false/null)
in      -   'in'        -  (colName,in,val1,val2,val3,val4)
bw      -   'between'   -  (colName,bw,val1,val2) 
like    -   'like'      -  (colName,like,~name~)   note: 使用 ~ 代替 %
nlike   -   'not like'  -  (colName,nlike,~name~)  note: 使用 ~ 代替 %

另外还有逻辑运算符:

~or     -   'or'
~and    -   'and'
~xor    -   'xor'

举个例子,查询 shop_price大于 1000 ,并且goods_name诺基亚开头。

GET http://172.31.18.163:3000/api/ecs_goods?_where=(shop_price,gt,1000)~and(goods_name,like,诺基亚~)
where条件中的逻辑运算符

4.2 使用 fields 指定结果列

由于ecs_goods表字段太多,影响我们对结果的查询和使用。在 SQL 语句中,我们可以指定结果中的列。 Xmysql 中,也可以通过 _fields字段指定结果中的列。

以上面的例子为例。

GET http://172.31.18.163:3000/api/ecs_goods?_where=(shop_price,gt,1000)&_fields=goods_id,goods_name,shop_price

查询 shop_price大于1000的商品,只查看 goods_id,goods_name,shop_price 三个字段。

指定结果列

4.3 指定不显示的列

如果你想某字段不在结果中展示,可以在字段名前加负号来指定不展示的列。

GET http://172.31.18.163:3000/api/ecs_goods?_fields=-goods_name

比如不想在结果中展示goods_name,只需要在前面加一个负号即可。

5. 分页

如果查询结果的条数特别多,则需要分页查看。

分页主要使用两个参数

_p 指定显示的页数,页数会根据查询到的数量除以_size
_size 指定返回的行数

GET 请求默认只返回表中的 20 条记录,并且最大返回记录为 100 条。

通过设置 _size 可以改变查询记录的条数。最大只能返回 100 条。

如果设置的条数大于100,则只会返回100条;

如果设置的条数小于等于0,则会返回默认的20条。

GET http://127.0.0.1:3000/api/ecs_goods?_size=15&_p=3&_fields=goods_id,goods_name
分页

6. 排序

排序通过 _sort关键字指定排序的字段即可。如果要按倒序排,则在字段前加 负号。

正序 ASC:

GET http://127.0.0.1:3000/api/ecs_goods?_fields=goods_id,goods_name&_sort=goods_id
正序ASC

倒序 DESC

GET http://127.0.0.1:3000/api/ecs_goods?_fields=goods_id,goods_name&_sort=-goods_id

注意:字段名前面加 - 负号。

倒序DESC

多重排序

可以多列结合起来排序,用逗号分隔即可。

GET http://127.0.0.1:3000/api/ecs_goods?_fields=goods_id,goods_name,shop_price&_sort=shop_price,-goods_id
多重排序

8. 聚合

8.1 GroupBy 分组

Xmysql 中只支持聚合函数的 count 函数。所以我们只能分组统计条数。类似这样的 SQL 语句:

-- 根据品牌分组,查看每个品牌包含的商品数量
select brand_id, count(*) as _count from ecs_goods group by brand_id
分组

通过 Xmysql 实现的话,可以通过 groupby 接口进行分组查询,通过内置的参数_fields指定分组的字段。

GET /api/表名/groupby?_fields=分组的字段

GET http://127.0.0.1:3000/api/ecs_goods/groupby?_fields=brand_id
GroupBy并指定结果

还有一种 ugroupby 接口,同样是分组统计,只是返回的结果格式不一样,对比一下。

GET http://127.0.0.1:3000/api/ecs_goods/ugroupby?_fields=brand_id
ugroupby

接下来是使用 having 了,SQL 语句如下:

select brand_id, count(*) as _count from ecs_goods group by brand_id having _count>2
having 子句

8.2 having 筛选

加上_having参数,就可以实现聚合函数筛选

_having 参数后面的值中跟随的值分别是 (聚合函数, 条件运算符,值)

注意:根据官方文档,目前只支持 count 函数,用 _count表示

GET http://127.0.0.1:3000/api/ecs_goods/groupby?_fields=brand_id&_having=(_count,gt,2)

[
having参数

8.3 其他聚合函数

其他聚合函数,比如 avg 求平均, min最小值,max最大值,sum求和,stddev标准差,variance方差。都是由一个接口aggregate构成。

用法为指定一个数字类型的字段,一次性得出这些聚合函数的计算结果。

GET /api/表名/aggregate?_fields=数值型字段

比如对于商品表,指定聚合计算shop_price:

http://127.0.0.1:3000/api/ecs_goods/aggregate?_fields=shop_price
聚合函数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容

  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 9,733评论 0 44
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,323评论 0 9
  • 1、MySQL启动和关闭(安装及配置请参照百度经验,这里不再记录。MySQL默认端口号:3306;默认数据类型格式...
    强壮de西兰花阅读 654评论 0 1
  • 一、MySQL优化 MySQL优化从哪些方面入手: (1)存储层(数据) 构建良好的数据结构。可以大大的提升我们S...
    宠辱不惊丶岁月静好阅读 2,438评论 1 8
  • 《说文部首》第41天。 欠,本义是哈欠,还有“抬起”的意思,倒是让我想起老家方言有时候让非常熟悉的人抬一下屁股(目...
    虚龙寨主阅读 539评论 0 0