开发者社区> 沉默术士> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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/

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
数据库批量删除
案例 same.png 语句 查找相同的数据 SELECT * FROM Test.dbo.test a WHERE EXISTS ( SELECT * FROM Test.
750 0
数据库允许空值(null),往往是悲剧的开始(1分钟系列)
数据库字段允许空值,会遇到一些问题,此处包含的一些知识点,和大家聊一聊。
0 0
数据库允许空值(null),往往是悲剧的开始(1分钟系列)
数据库字段允许空值,会遇到一些问题,此处包含的一些知识点,和大家聊一聊。
0 0
数据库允许空值(null),往往是悲剧的开始(1分钟系列)
数据库字段允许空值,会遇到一些问题,此处包含的一些知识点,和大家聊一聊。
0 0
从零开始写KV数据库:基于哈希索引
前言 新的KV数据库层出不穷,我们经常听说的KV数据库如RocksDb、Hbase等都是基于日志结构的存储引擎。最近我在看《数据密集型应用系统设计》,里面有一章专门在讲日志结构的存储引擎的演进过程,纯看理论不过瘾,所以我决定根据书里的理论动手自己实现一个KV数据库。同时,为了能顺便学习Rust,所以我使用了Rust来实现数据库。 除了参考《数据密集型应用系统设计》,我还参考了《pingcap/
0 0
【事务隔离级别】——三步了解数据库的事务隔离级别
 要了解事务的隔离级别,推荐您从以下三个步骤来了解。
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
PostgresChina2018_张启程_为什么我们抛弃MongoDB和MySQL,选择PgSQL
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载