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/

相关文章
|
20天前
|
关系型数据库 MySQL 数据库
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
|
1月前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
65 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
1月前
|
SQL 存储 JSON
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
亲爱的社区小伙伴们,Apache Doris 2.1.0 版本已于 2024 年 3 月 8 日正式发布,新版本开箱盲测性能大幅优化,在复杂查询性能方面提升100%,新增Arrow Flight接口加速数据读取千倍,支持半结构化数据类型与分析函数。异步多表物化视图优化查询并助力仓库分层建模。引入自增列、自动分区等存储优化,提升实时写入效率。Workload Group 资源隔离强化及运行时监控功能升级,保障多负载场景下的稳定性。新版本已经上线,欢迎大家下载使用!
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
|
1月前
|
存储 NoSQL Redis
【Redis】利用Redis List实现数据库分页快速查询
【Redis】利用Redis List实现数据库分页快速查询
95 0
|
1月前
|
存储 缓存 NoSQL
利用Redis List实现数据库分页快速查询的有效方法
利用Redis List实现数据库分页快速查询的有效方法
|
1月前
|
NoSQL Java 数据库连接
使用Java实现从数据库查出数据存入Redis,并在查询时先查Redis,如果Redis中没有数据再从数据库中读取
使用Java实现从数据库查出数据存入Redis,并在查询时先查Redis,如果Redis中没有数据再从数据库中读取
355 1
|
1月前
|
SQL 关系型数据库 MySQL
用 Python 连接数据库并进行查询。
【2月更文挑战第12天】【2月更文挑战第32篇】用 Python 连接数据库并进行查询。
|
1月前
|
存储 数据处理 数据库
构建高性能的数据库查询引擎
本文将介绍如何构建一个高性能的数据库查询引擎,以提升数据库查询的效率和响应速度。通过优化查询计划、索引设计和数据存储等方面,可以实现更快速和可扩展的数据库查询,为应用程序提供更好的用户体验和数据处理能力。
|
4天前
|
SQL 关系型数据库 MySQL
mysql 数据库查询 查询字段用逗号隔开 关联另一个表并显示
mysql 数据库查询 查询字段用逗号隔开 关联另一个表并显示
16 2