MongoDB和MySQL常用增删改查语句
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常用增删改查语句相关推荐
- MongoDB简介及常用增删改查命令
MongoDB 简介 NoSQL 的概念:指的是非关系型数据库. NOT only sql 的缩写.特别适用于大规模 的数据存储.例如:谷歌或者facebook 每天为用户收集亿万级别的数据,这些数据 ...
- MySQL常用增删改查操作(CRUD)
⚡️前言⚡️ 本篇文章主要介绍在MySQL数据库中常见的增删改查(CRUD)SQL语句操作.
- mongodb修改数据语句_MongoDB常用增删改查语句
数据库database 创建及查看库 1.有则使用这个数据库,没有就创建 use DATABASE_NAME 2. 查看当前选择的数据库,默认是test db 3.查看数据库,默认有admin.loc ...
- mysql 基础 增删改查语句
MySQL:众多关系型数据库中的一种 仓库 --数据库 箱子 --表 数据库: 进入mysql 命令行: mysql -uroot -p 查看所有数据库: show databases; 创建数据库: ...
- MySQL常用增删改查语法命令
一. 添加数据:INSERT Insert 语句用于向数据库中插入数据 1. 插入单条数据(常用) 语法:INSERT INTO 表名(列名1,列名2,...) values(值1,值2,...) 案 ...
- mysql常用增删改查命令总结
目录 一.增:insert 二.删:delete 三.改:update 四.查:select 一.增:insert 基础语法 注意 按"行"插入 "字段"和&q ...
- SQL常用基础语句(SQL常用增删改查语句及案例)
一.添加数据 语法: * insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n); 注意: (1) 列名和值要一一对应. (2) 如果表名后,不定义列名, ...
- mysql之增删改查语句
一.SQL语句之增 insert into 表名 values (值1,....) 向student表中插入一个学生的数据insert into student (num,name,sex,age) ...
- yii mysql语法_yii2 + mysql 常用增删改查操作语法以及事务
关于数据库mysql的使用: 1.查询: Salesorderitem::find()-asArray()-where([order_id=$order_id])-all():Salesorderit ...
- yii2 mysql update_yii2 + mysql 常用增删改查操作语法以及事务
关于数据库mysql的使用: 1.查询: Salesorderitem::find()-asArray()-where([order_id=$order_id])-all():Salesorderit ...
最新文章
- poj1730Pollard分解
- SQL Server 存储过程的分页
- Oracle条件查询语句-where
- Android之getSystemService
- 转换string_类型转换详解
- Centos6.9安装部署nginx服务器
- 【DP】【树状数组】折线统计(金牌导航 数据结构优化DP-1)
- 云图说丨手把手教你为容器应用配置弹性伸缩策略
- Kubernetes的拐点助推器:左手开源,右手边缘计算
- mysql 常用命令集_Mysql 常用命令集
- Python+matplotlib绘制多门课程学生成绩分布饼状图
- java hql 参数_java – SQLQuery中的Hibernate命名参数
- CentOS7通过定时脚本阻断异常IP连接SSH(实测)
- Spring+Dubbo集成Redis的两种解决方案
- idea快捷键整合-无鼠标操作idea
- oracle+110个常用函数
- 2022华为软件精英挑战赛-总结
- python批量保存网页为pdf_在chrome Python3.6中自动打印/将网页保存为pdf
- 经典:智能物联网大数据系统案例
- Eclipse方式: Processes that Adapt (part I)