Sunshine数据库篇之查询
需要的model,数据库映射,sql生成器都用写的代码生成器生成,提高开发效率
1:最简单的查询单条记录
AJ.Model.User ou = IDB.Simple(AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa"));
同写sql的方式
AJ.Model.User ou = IDB.Simple("select * from User where USER_TYPE = @ut and PASSWORD = @pa", new { ut = 1, pa = "aaa" });
2:查询多条记录
List olist = IDB.List(AJ.CModel.User.Select.Where(a=>a.UUID > 2));
同写sql的方式
List olist = IDB.List("select * from User where uuid > @uid", new { uid = 2 });
查询1000条30毫秒左右
3:使用直接中间语言Emit查询方式
只用使用中间语言可以提高不少效率,可以减少解析的时间,但经过测试效率提高不是非常明显,现在.net的效率还是优化得非常不错了,为了维护方便
主要还是使用写代码的方式
List olist = IDB.ListEmit(AJ.CModel.User.Select.Where(a=>a.UUID > 2));
4:条件的使用
条件可以在Where后边任意组合
使用 and (where a.USER_TYPE = @a3qf6eqse and a.PASSWORD = @dve2tge)
AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa")
使用 or (where a.USER_TYPE = @a3qf6eqse or a.PASSWORD = @dve2tge)
AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 | a.PASSWORD == "aaa")
使用 Between and
AJ.CModel.User.Select.Where(a => a.ID.Between(1,20))
使用like
AJ.CModel.User.Select.Where(a => a.ID.Like("%"+2)))
使用 > ,>=,< <=.......
AJ.CModel.oll_user.Select.Where(a => a.UUID>10 & a.UUID <= 20 | a.UUID >=20)
5:选择你需要查询的字段
使用Column函数进行字段选择 as函数重命名
只查询NAME一个字段并重名
IDB.Simple(AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa").Column(a=>a.PLAYER_NAME.As("name")))
查询多个字段
IDB.Simple(AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa").Column(a=>new[]{a.PLAYER_NAME,a.STATUS,a.PASSWORD}))
查询字段重命名使用as和写sql重明名得方式一样
IDB.Simple(AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1).Column(a=>a.PLAYER_NAME.As("name")))
6:多表连接查询
使用 join ,left join ,right join 函数
使用 join gambleOrder连接notice表 条件为 gambleOrder.id =notice.id 写法
List olist = IDB.List(AJ.CModel.oll_user.Select.Join((a, b) => a.id== b.id).Where(a => a.UUID > 10 & a.UUID <= 20 | a.UUID >= 20));
使用left join gambleOrder连接notice表 条件为 gambleOrder.id =notice.id 写法
List olist = IDB.List(AJ.CModel.oll_user.Select.LeftJoin((a, b) => a.id== b.id).Where(a => a.UUID > 10 & a.UUID <= 20 | a.UUID >= 20));
使用right join gambleOrder连接notice表条件为是gambleOrder.id =notice.id 写法
List olist = IDB.List(AJ.CModel.oll_user.Select.RightJoin((a, b) => a.id== b.id).Where(a => a.UUID > 10 & a.UUID <= 20 | a.UUID >= 20));
多表组合连接查询 gambleOrder join notice 在left join Info表
List olist = IDB.List(AJ.CModel.oll_user.Select.Join((a, b) => a.id== b.id).LeftJoin((c, d) => c.id== d.id).Where(a => a.UUID > 10));
7:常用函数的使用
直接到字段选择中就可以使用常用的函数,可以随意的进行组合的运算操作
使用平均函数Avg
List go = DataBase.IDB.List(
AJ.CModel.gambleOrder.Select.Where(a => a.UUID > 10)
.Column(a=>a.NICK_NAME.Avg));
使用求和函数Sum
List go = DataBase.IDB.List(
AJ.CModel.gambleOrder.Select.Where(a => a.UUID > 10)
.Column(a=>a.NICK_NAME.Sum));
组合运算操作 求平均数在计数在除以求和数
List go = DataBase.IDB.List(
AJ.CModel.gambleOrder.Select.Where(a => a.UUID > 10)
.Column(a=>(a.NICK_NAME.Avg*a.PASSWORD.Count)/a.STATUS.Sum));
8:分组排序
和数据库的操作习惯一样 使用GroupBy,OrderBy函数
分组 更具STATUS分组
List go = DataBase.IDB.List(
AJ.CModel.gambleOrder.Select.GroupBy(a=>a.STATUS));
字段分组 更具STATUS和 TYPE分组
List go = DataBase.IDB.List(
AJ.CModel.gambleOrder.Select.GroupBy(a=>a.STATUS & a.USER_TYPE));
排序 更具id降序排序 desc
List go = DataBase.IDB.List(
AJ.CModel.gambleOrder.Select.OrderBy(a=>a.ID.desc));
多字段排序 更具id降序排序 desc ,TYPE升序asc
List go = DataBase.IDB.List(
AJ.CModel.gambleOrder.Select.OrderBy(a=>a.ID.desc & a.TYPE.asc));
最能提高的就是自己研究和写点框架与底层的东西,你要去查询了解相关的知识,考虑很多东西,能学到很多平时学不到不常用的知识不断的改进打破重构
最新内容请见作者的GitHub页:http://qaseven.github.io/
Sunshine数据库篇之查询相关推荐
- IOS开发数据库篇—SQLite模糊查询
IOS开发数据库篇-SQLite模糊查询 一.示例 说明:本文简单示例了SQLite的模糊查询 1.新建一个继承自NSObject的模型 该类中的代码: 1 // 2 // YYPerson.h 3 ...
- Java数据库篇6——多表查询
Java数据库篇6--多表查询 1.笛卡尔积 交叉连接查询 设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), ...
- alin的学习之路(数据库篇:二)(select查询,where条件查询,order by排序,单行函数,多行函数,group by分组)
alin的学习之路(数据库篇:二)(select查询,where条件查询,order by排序,单行函数,多行函数,group by分组) 1. SQL语句 1.1 sql语言类型 sql是一门独立的 ...
- 通过adsi查询所有计算机_计算机考研/保研复试重点整理-数据库篇
在各位小伙伴的召唤下,数据库篇终于出炉! 新鲜[计算机l考研/保研复试重点整理]这个系列目前已经集齐了操作系统.数据结构.计算机网络.数据库,大家可以召唤神龙背起来了,文末会奉上其他科目的传送门. 我 ...
- alin的学习之路(数据库篇:三)(多表查询,子查询,集合运算,数据处理)
alin的学习之路(数据库篇:三)(多表查询,子查询,集合运算,数据处理) 1. 多表查询 1.1 笛卡儿积 笛卡尔积就是两个集合的乘积计算 . 如果多个表进行联合查询, 得到结果是一个笛卡尔积, 举 ...
- python数据库模糊查询_python中数据库like模糊查询方式
python中数据库like模糊查询方式 在Python中%是一个格式化字符,所以如果需要使用%则需要写成%%. 将在Python中执行的sql语句改为: sql = "SELECT * F ...
- 未来软件是什么样呢?数据库篇(转载)
观点3:数据库就是对象数组(Y10) 如果对<未来软件是什么样子?-数据库篇>中的观点1和观点2表示认同,那请让我们继续,否则就当我扯淡吧. 既然数据库都放在内存中了,那么我们索性把它作为 ...
- 使用t-sql语句修改表中的某些数据及数据类型。_测试开发工程师数据库篇(一)...
点击蓝字之后,我们就是好朋友了啦 15 数据库篇(一) 01事务概念及应用场景 事务是一组不可分割的mysql语句组,这些语句组要么全部执行成功,要么全部执行失败.事务的提出主要是为了解决并发 ...
- VBScript 教程之数据库篇
VBScript 教程之数据库篇,以 vbscript DBHelper 类的方式,封装数据库连接.查询.基本的存储过程访问方法. option Explicit ' 数据库读取选项 Public C ...
最新文章
- 使用C#开发Socket通讯
- R语言plotly可视化:可视化直方图、归一化的直方图、水平直方图、互相重叠的直方图、堆叠的直方图、累积直方图、通过bingroup参数设置多个直方图使用相同的bins设置、自定义直方图条形的间距
- 2020 年七大 AI 编程语言大盘点
- linux用户登录实验,Linux用户和组相关命令及实验
- android开发app初始化,Android 的 Application 初始化
- android 默认shell busybox,采用busybox 代替android 自带的shell
- Mac电脑的连接服务器功能如何使用?
- fopen()和fgetl()打开问件,读取内容
- 对手机彩铃的一些想法
- 四阶龙格库塔matlab计算例题,四阶龙格库塔法matlab实现
- 快排的单指针扫描和双指针扫描
- html5 3d资源,视觉盛宴 HTML5 3D动画应用赏析
- Unity 性能优化之合批
- windows10如何关闭cortana
- 2023年湖北一级(高级)技师二级技师报名时间、考试时间是什么时候?
- 【.net 深呼吸】自己动手来写应用程序设置类
- Netbackup5230备份一体机重删率异常故障分析日志收集
- 手把手教你看懂电脑硬件测试软件CPU-Z(二)
- 在OpenCV里实现二维离散卷积1
- 蜜雪冰城、茶颜悦色“卷”向咖啡赛道