1 简介

这次出差开发模块过程中,使用Navicat数据库应用程序,由于底层数据库使用了MongoDB和MySQL,之前本人是一个数据库小白,在开发过程中积累了一些增删改查的sql语句,在此做个小总结。

2 MongoDB语句

2.1 分组统计

db.partydues.aggregate([{$match: {"map.month": "11","map.year": "2018","map.dataType": "task"}},{$group: {_id: "$map.roleName","sumOfPartyDueShouldBe": {"$sum": "$map.partyDueShouldBe"},"sumOfPartyDues": {"$sum": "$map.partyDues"},"totalNumOfPerson": {"$sum": 1}}}
])

查询结果如下:

// 1
{"_id": "开发部”"sumOfPartyDueShouldBe": 208.29,"sumOfPartyDues": 9268,"totalNumOfPerson": 3
}// 2
{"_id": "业务部"sumOfPartyDueShouldBe": 178.58,"sumOfPartyDues": 1546,"totalNumOfPerson": 2
}// 3
{"_id": "行政部,"sumOfPartyDueShouldBe": 323.36,"sumOfPartyDues": 1022,"totalNumOfPerson": 2
}

2.2 查询指定年月的缴费记录,过滤年月应缴和实缴,限制三条

有时并不需要将文档中所有键值对都返回。遇到这种情况,可以通过find(findOne)的第二个参数来指定想要的键。这样做既会传输的数据量,又能节省客户端解码文档的时间和内存消耗。

db.partydues.find({"map.month": "08","map.dataType": "task"
}, {"map.partyDues": 1,"map.cnName": 1,"map.year": 1,"map.month": 1,"map.partyDueShouldBe": 1
}).limit(3)

查询结果为:

// 1
{"_id": "a614624774294059b0278e4824683eb7","map": {"partyDues": 100,"year": "2019","partyDueShouldBe": 95.06,"cnName": "朱朱","month": "08"}
}// 2
{"_id": "36cdd2b168914d5d8de0a63ec0ece259","map": {"partyDues": 100,"year": "2019","partyDueShouldBe": 95.06,"cnName": "宋宋","month": "08"}
}// 3
{"_id": "943525620b3841929f1c9844826a4769","map": {"partyDues": 900,"year": "2019","partyDueShouldBe": 95.06,"cnName": "安安","month": "08"}
}

可以看到默认情况下,“_id”这个键总是被返回,即便是没有指定要返回这个键。
需要注意的是,可以使用第二个参数来剔除查询结果中的某些键值对。例如文档中有许多键,但不希望结果中有“map.month”

db.partydues.find({}, {“map.month”: 0})

注意第二个参数默认不可以即有0,又有1,否则会报错

db.salary.find({}, {"map.year":1, "map.month":0})

会弹出如下错误:

[Error] Projection cannot have a mix of inclusion and exclusion.

但可以通过这种方式剔除“_id”:

db.salary.find({}, {"map.year":1, "_id":0})

2.3 查询指定年月的应缴话费数额,以月排序

db.salary.find({"map.姓名": "宋宋"
}, {"map.partyDueShouldBe": 1,"map.month": 1,"map.year": true
}).sort({"map.year": 1,"map.month": 1
}).limit(3)

查询结果为:

// 1
{"_id": ObjectId("5c24330e07cd26220910dd76"),"map": {"year": "2016","month": "01","partyDueShouldBe": 79.3}
}// 2
{"_id": ObjectId("5c247a4007cd9b6ff6a3d544"),"map": {"year": "2017","month": "04","partyDueShouldBe": 79.3}
}// 3
{"_id": ObjectId("5c0db84b07cd92e12375c212"),"map": {"year": "2018","month": "01","partyDueShouldBe": 94.33}
}

2.4 分组查询

db.salary.aggregate({"$group": {"_id": "$map.结算部门","totalNumOfPerson": {"$sum": 1}}}
)

查询结果是:

// 1
{"_id": "二室","totalNumOfPerson": 45
}// 2
{"_id": "管理室","totalNumOfPerson": 15
}// 3
{"_id": "开发室","totalNumOfPerson": 21
}

2.5 根据流程实例pid查询表中记录

db.partydues.find({"map.pid":2592570})

2.6 根据姓名查询salary表中为高超的数据

db.partydues.find({"map.cnName":"宋宋"}).limit(2)

结果为:

// 1
{"_id": "15a50f1c510044fab151fece5f862560","_class": "com.zioer.entity.FreeModel","name": "partydues","cname": "党费收缴","map": {"partyDues": 80,"year": "2019","roleId": "009003","dataType": "task","pid": "3345001","userId": "cf8d1fd5c23f4778b7c0f537d6de2c41","partyDueShouldBe": 79.3,"cnName": "宋宋","month": "03","createTime": "2018-11-28 14:55:23","roleName": "业务部","taskId": "3345055","username": "songsong"}
}// 2
{"_id": "84d9e5e546cf4ee2be5b74412c2fdbbc","_class": "com.zioer.entity.FreeModel","name": "partydues","cname": "话费充值","map": {"partyDues": 80,"year": "2019","roleId": "009003","dataType": "task","pid": "3380001","userId": "cf8d1fd5c23f4778b7c0f537d6de2c41","partyDueShouldBe": 79.3,"cnName": "宋宋","month": "05","createTime": "2018-11-29 09:08:12","roleName": "业务部","taskId": "3380055","username": "songsongsong"}
}

2.7 聚合查询,查询工资单结算部门的内容和各个组中人数

db.salary.aggregate([{$match: {"map.month": "04","map.year": "2021"}},{$group: {_id: "$map.结算部门",count: {$sum: 1},}}
])

查询结果如下:

// 1
{"_id": "计划部","count": 3
}// 2
{"_id": "开发部","count": 1
}// 3
{"_id": "网络部","count": 1
}// 4
{"_id": "中心部","count": 3
}

##2.8 删除partydues、salary、proportion表中所有的内容

db.partydues.remove({});
db.salary.remove({});
db.proportion.remove({})

2.9 删除模块指定年月的数据

db.salary.remove({"map.month": "08", "map.year": "2018"})
db.partydues.remove({"map.month": "08", "map.year": "2018"})
db.partyDueOperLog.remove({"map.month": "08", "map.year": "2018"})

2.10 向partydues插入数据

db.getCollection("partydues").insert([ {_id: "2e221e23ff98405391fvb5302c471e1e",_class: "com.zioer.entity.FreeModel",name: "partydues",cname: "话费充值",map: {month: "10",createTime: "2018-10-22 20:28:38",year: "2017",dataType: "processInstance",pid: "2602501",state: "doing",bid: "b8e2668fb8fd4cef98ebecc1e20ed96c",userId: "3f14ea3cbdf848a6bf632bf547907c90"}
} ]);
db.getCollection("partydues").insert([ {_id: "7af0f7069a5a4f9d281cdc5dad211dc2",_class: "com.zioer.entity.FreeModel",name: "partydues",cname: "话费充值",map: {partyDues: "131",year: "2017",roleId: "00902",dataType: "task",pid: "2602501",userId: "3f14ea3cbdf848a6bf632bf547907c90",partyDueShouldBe: "130.59",cnName: "朱朱",month: "10",createTime: "2018-10-22 20:30:11",roleName: "部门2",taskId: "2602548",username: "zhuzhu",bid: "",state: ""}
} ]);

2.11 查询8月到10月的缴费记录

db.salary.find({"map.month": {"$gte": "08", "$lte": "10"}}, {"map.month": 1}).sort({"map.month":1}).limit(3)
查询结果为:
// 1
{"_id": ObjectId("5c00894a75b6b1f9aba5b9a7"),"map": {"month": "08"}
}// 2
{"_id": ObjectId("5c00894a75b6b1f9aba5b9a9"),"map": {"month": "08"}
}// 3
{"_id": ObjectId("5c00894a75b6b1f9aba5b9ab"),"map": {"month": "08"}
}

2.12 使用$in进行多值查询

db.raffle.find({“ticket_no”: {“$in”: [725, 542, 390]}})
db.users.find({“user_id”: [12345, “Joe”]})

更多的MongoDB关于find和findOne请查看
find和findOne查询详解

3 MySQL语句

3.1 查询某个用户id对应的用户信息

SELECTu.USER_ID,u.USERNAME,u.XM,u.RIGHTS AS USER_RIGHTS,u.USER_PASSWORD,u.SKIN,r.ROLE_ID,r.ROLE_NAME,r.RIGHTS AS ROLE_RIGHTS
FROMSYS_USER uLEFT JOIN SYS_ROLE r ON u.ROLE_ID = r.ROLE_ID
WHEREu.STATUS = 0 AND u.USER_ID = "3e7b5e3d9b6f4c768524453115baca81";

查询结果如下:

3.2 查询重名

select XM, COUNT(*) from sys_user GROUP BY XM

查询结果如下:

乾隆       1
令狐冲 3
刘博      2
刘嘉玲 1

3.3 根据任务被指派人的userid确定名为党支部确认的历史任务,并按照结束任务逆序

SELECTPROC_DEF_ID_,NAME_,START_TIME_,END_TIME_
FROMact_hi_taskinst
WHERENAME_ = "党支部确认" && ASSIGNEE_ = "5eeb558af7b94ec98420f7e9c93441c0"
ORDER BYEND_TIME_ DESC LIMIT 3

查询结果如下:

multiinstance:2:2017533  确认  2020-09-01 20:19:48.000 2020-09-02 08:12:50.000
multiinstance:2:2017533 确认  2018-12-27 16:04:56.000 2018-12-27 16:05:05.000
multiinstance:2:2017533 确认  2018-12-27 15:44:22.000 2018-12-27 15:44:43.000

3.4 根据中文名检索sys_user

SELECT*
FROMsys_user
WHEREXM IN ( "戴戴", "王王", "范范", "超超", "安安", "朱朱" )

3.5 获取部门色的最大值

SELECTROLE_ID
FROMsys_role
WHEREROLE_ID REGEXP '[0-9]$' && ROLE_ID LIKE "0090%" && LENGTH( ROLE_ID ) = 6
ORDER BYROLE_ID DESC LIMIT 1;

3.6 删除两张表中的多实例子流程相关流程数据

DELETE from `act_ru_task` WHERE PROC_INST_ID_ = (select ID_  from `act_hi_procinst` WHERE `PROC_DEF_ID_` like "multiinstance%" && END_TIME_ is NULL);
DELETE FROM `act_hi_procinst` WHERE `PROC_DEF_ID_` like "multiinstance%" && END_TIME_ is NULL;

更多关于MySQL增删改查的内容可以参考:
单表操作
聚合、分组、函数
数据类型
外键定义、作用、增加和删除
内连接和外连接
关联关系

4 总结

在工作和生活中,尤其是程序员开发时,肯定少不了要和关系型数据库和非关系型数据库打交道,熟悉两种数据库的增删改查,满足日常的需要,进而更加深入诸如性能调优,数据库的主备模式等是优秀程序员必不可少的过程。一起努力加油吧。

5 下载

https://download.csdn.net/download/lk142500/10881776

MongoDB和MySQL常用增删改查语句相关推荐

  1. MongoDB简介及常用增删改查命令

    MongoDB 简介 NoSQL 的概念:指的是非关系型数据库. NOT only sql 的缩写.特别适用于大规模 的数据存储.例如:谷歌或者facebook 每天为用户收集亿万级别的数据,这些数据 ...

  2. MySQL常用增删改查操作(CRUD)

    ⚡️前言⚡️ 本篇文章主要介绍在MySQL数据库中常见的增删改查(CRUD)SQL语句操作.

  3. mongodb修改数据语句_MongoDB常用增删改查语句

    数据库database 创建及查看库 1.有则使用这个数据库,没有就创建 use DATABASE_NAME 2. 查看当前选择的数据库,默认是test db 3.查看数据库,默认有admin.loc ...

  4. mysql 基础 增删改查语句

    MySQL:众多关系型数据库中的一种 仓库 --数据库 箱子 --表 数据库: 进入mysql 命令行: mysql -uroot -p 查看所有数据库: show databases; 创建数据库: ...

  5. MySQL常用增删改查语法命令

    一. 添加数据:INSERT Insert 语句用于向数据库中插入数据 1. 插入单条数据(常用) 语法:INSERT INTO 表名(列名1,列名2,...) values(值1,值2,...) 案 ...

  6. mysql常用增删改查命令总结

    目录 一.增:insert 二.删:delete 三.改:update 四.查:select 一.增:insert 基础语法 注意 按"行"插入 "字段"和&q ...

  7. SQL常用基础语句(SQL常用增删改查语句及案例)

    一.添加数据 语法: * insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n); 注意: (1) 列名和值要一一对应. (2) 如果表名后,不定义列名, ...

  8. mysql之增删改查语句

    一.SQL语句之增 insert into 表名 values (值1,....) 向student表中插入一个学生的数据insert into student (num,name,sex,age) ...

  9. yii mysql语法_yii2 + mysql 常用增删改查操作语法以及事务

    关于数据库mysql的使用: 1.查询: Salesorderitem::find()-asArray()-where([order_id=$order_id])-all():Salesorderit ...

  10. yii2 mysql update_yii2 + mysql 常用增删改查操作语法以及事务

    关于数据库mysql的使用: 1.查询: Salesorderitem::find()-asArray()-where([order_id=$order_id])-all():Salesorderit ...

最新文章

  1. poj1730Pollard分解
  2. SQL Server 存储过程的分页
  3. Oracle条件查询语句-where
  4. Android之getSystemService
  5. 转换string_类型转换详解
  6. Centos6.9安装部署nginx服务器
  7. 【DP】【树状数组】折线统计(金牌导航 数据结构优化DP-1)
  8. 云图说丨手把手教你为容器应用配置弹性伸缩策略
  9. Kubernetes的拐点助推器:左手开源,右手边缘计算
  10. mysql 常用命令集_Mysql 常用命令集
  11. Python+matplotlib绘制多门课程学生成绩分布饼状图
  12. java hql 参数_java – SQLQuery中的Hibernate命名参数
  13. CentOS7通过定时脚本阻断异常IP连接SSH(实测)
  14. Spring+Dubbo集成Redis的两种解决方案
  15. idea快捷键整合-无鼠标操作idea
  16. oracle+110个常用函数
  17. 2022华为软件精英挑战赛-总结
  18. python批量保存网页为pdf_在chrome Python3.6中自动打印/将网页保存为pdf
  19. 经典:智能物联网大数据系统案例
  20. Eclipse方式: Processes that Adapt (part I)

热门文章

  1. 计算机重启后一直黑屏转圈,电脑win10开机黑屏转圈十几秒怎么解决
  2. 文本智能处理与RPA领军企业达观数据宣布完成5.8亿元C轮融资
  3. Kali Linux pyqt5 运行报错xcb
  4. html id命名规范,关于Html class id 命名规范
  5. windows10笔记本如何开wifi热点
  6. 如何正确书写正则表达式
  7. 树莓派Pico开发板硬件扩展接口及电源模块解析
  8. 我和他分手了,没有谁对谁错
  9. 2017CNCC会议总结(一)
  10. 擦干眼泪,掩饰悲伤,只因明天我想要坚强