一. SQL 开篇

1. where用法

1      #region 封装EF调用SQL语句查询
2         public static List<T> ExecuteQuery<T>(string sql, params SqlParameter[] pars)
3         {
4             return db.Database.SqlQuery<T>(sql, pars).ToList();
5         }
6         #endregion

 1        #region 01-where用法2             {3                 //1. where用法4                 //1.1 查询账号为admin的用户信息5                 Console.WriteLine("---------------------------- 1. where用法   ----------------------------------------");6                 Console.WriteLine("---------------------------- 1.1 查询账号为admin的用户信息   ----------------------------------------");7                 string sql1 = @"select * from Sys_UserInfor where userAccount = 'admin'";8                 List<Sys_UserInfor> sUserList1 = ExecuteQuery<Sys_UserInfor>(sql1);9                 foreach (var item in sUserList1)
10                 {
11                     Console.WriteLine("用户名:{0},用户账号:{1},用户年龄:{2},用户性别:{3}", item.userName, item.userAccount, item.userAge, item.userSex);
12                 }
13                 //1.2  查询账号为中包含admin且性别为男的用户信息
14                 Console.WriteLine("---------------------------- 1.2  查询账号为中包含admin且性别为男的用户信息   ----------------------------------------");
15                 string sql2 = @"select * from Sys_UserInfor where userAccount like '%admin%' and userSex='男'";
16                 List<Sys_UserInfor> sUserList2 = ExecuteQuery<Sys_UserInfor>(sql2);
17                 foreach (var item in sUserList2)
18                 {
19                     Console.WriteLine("用户名:{0},用户账号:{1},用户年龄:{2},用户性别:{3}", item.userName, item.userAccount, item.userAge, item.userSex);
20                 }
21             }
22             #endregion

2. select用法

 1   #region 02-select用法2             {3                 //2. select用法 (SQL语句中,查询部分字段,必须要有个实体接收,不能用var类型接收)4                 //2.1 查询账号中包含 admin 的用户的 姓名、年龄和性别 三条信息5                 Console.WriteLine("---------------------------- 2. select用法   ----------------------------------------");6                 Console.WriteLine("-------------2.1 查询账号中包含 admin 的用户的 姓名、年龄和性别 三条信息 )-------------------------");7                 string sql1 = @"select userName,userAge,userSex from Sys_UserInfor where userAccount like '%admin%'";8                 List<model1> sUserList1 = ExecuteQuery<model1>(sql1);9                 sUserList1.ForEach(u =>
10                 {
11                     Console.WriteLine("用户名:{0},用户年龄:{1},用户性别:{2}", u.userName, u.userAge, u.userSex);
12                 });
13
14             }
15             #endregion

3. order by用法

 1   #region 03-order by用法2             {3                 //区分:在Lambda中有 orderby(OrderByDescending、ThenBy、ThenByDescending),但在SQL中 只有order by  asc(默认是升序) 和order by desc4                 //需要按照多个条件进行升序或降序,格式为: order by x1, x2 descending,x3(表示先按照x1升序排,x1相同的话,再按照x2降序排,x2相同的话,在按照x3升序排列)5                 //3. Order By用法 (单条件升降序、多条件综合排序)6                 //3.1 查询delflag 为1 的所有用户信息,按照时间升序排列7                 Console.WriteLine("------3. orderby用法  (单条件升降序、多条件综合排序)-------------");8                 Console.WriteLine("--------------------- 3.1 查询delflag 为1 的所有用户信息,按照时间升序排列   ------------------------------");9
10                 string sql1 = @"select * from Sys_UserInfor where delFlag =1 order by addTime";
11                 List<Sys_UserInfor> sUserList1 = ExecuteQuery<Sys_UserInfor>(sql1);
12                 foreach (var item in sUserList1)
13                 {
14                     Console.WriteLine("用户名:{0},用户账号:{1},用户年龄:{2},用户性别:{3},创建时间:{4}", item.userName, item.userAccount, item.userAge, item.userSex, item.addTime);
15                 }
16                 //3.2 查询delflag 为1 的所有用户信息,先按照时间升序排列,再按照年龄降序
17                 Console.WriteLine("---------------3.2 查询delflag 为1 的所有用户信息,先按照时间升序排列,再按照年龄降序----------------------");
18                 string sql2 = @"select * from Sys_UserInfor where delFlag =1 order by addTime,userAge desc";
19                 List<Sys_UserInfor> sUserList2 = ExecuteQuery<Sys_UserInfor>(sql2);
20                 foreach (var item in sUserList2)
21                 {
22                     Console.WriteLine("用户名:{0},用户账号:{1},用户年龄:{2},用户性别:{3},创建时间:{4}", item.userName, item.userAccount, item.userAge, item.userSex, item.addTime);
23                 }
24             }
25             #endregion

4. 多表关联查询

这里SQL语句里的查询,查询包括内连接和外连接,其中,

内连接分为:隐式内连接和显示内连接。特点:查询出来的结果是多表交叉共有的。

外连接分为:左外连接和右外连接.

左外连接:查询出JOIN左边表的全部数据,JOIN右边的表不匹配的数据用NULL来填充。

右外连接:查询出JOIN右边表的全部数据,JOIN左边的表不匹配的数据用NULL来填充。

 #region 04-多表关联查询{//4.查询账号中含有admin的所有用户的用户昵称、账号、和登录信息//4.1 隐式内连接的写法Console.WriteLine("---------------04-多表关联查询--------------------");Console.WriteLine("---------------4.1 隐式内连接的写法--------------------");string sql1 = @"select a.userName,a.userAccount,b.loginCity,b.loginIp,b.loginTimefrom Sys_UserInfor a,LoginRecords bwhere a.id =b.userId and a.userAccount like '%admin%'";List<model2> uList1 = ExecuteQuery<model2>(sql1);foreach (var item in uList1){Console.WriteLine("姓名:{0},账号:{1},登录城市:{2},登录IP:{3},登录时间:{4}", item.userName, item.userAccount, item.loginCity, item.loginIp, item.loginTime);}//4.2 隐式外链接Console.WriteLine("---------------4.2 隐式外链接 --------------------");string sql2 = @"select a.userName,a.userAccount,b.loginCity,b.loginIp,b.loginTimefrom Sys_UserInfor  a join LoginRecords b on  a.id =b.userIdwhere a.userAccount like '%admin%'";List<model2> uList2 = ExecuteQuery<model2>(sql2);foreach (var item in uList2){Console.WriteLine("姓名:{0},账号:{1},登录城市:{2},登录IP:{3},登录时间:{4}", item.userName, item.userAccount, item.loginCity, item.loginIp, item.loginTime);}//4.3 查询所有用户的登录信息(左外连接的方式)Console.WriteLine("-----------------------4.3 查询所有用户的登录信息(外连接的方式)----------------------------");string sql3 = @"select a.userName,a.userAccount,b.loginCity,b.loginIp,b.loginTimefrom Sys_UserInfor a left join LoginRecords b on  a.id =b.userId";List<model2> uList3 = ExecuteQuery<model2>(sql3);foreach (var item in uList3){Console.WriteLine("姓名:{0},账号:{1},登录城市:{2},登录IP:{3},登录时间:{4}", item.userName, item.userAccount, item.loginCity, item.loginIp, item.loginTime);}}#endregion

5. group By用法

  group By分组(SQL中的group by分组和linq、lambda完全不同。特别注意:select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中) 常见的聚合函数有:sum avg min max

 1   #region 05-group By分组2             {3                 //5. Group By分组(SQL中的group by分组和linq、lambda完全不同,4                 /*特别注意:select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中)5                  常见的聚合函数有:sum avg min max6                  */7 8                 //5.1 根据用户的性别进行分类,并且统计不同性别的年龄总和9                 Console.WriteLine("-------------------- 5. GroupBy分组------------------------");
10                 Console.WriteLine("-------------------- 5.1 根据用户的性别进行分类,并且统计不同性别的年龄总和------------------------");
11                 string sql1 = @"select userSex,SUM(userAge) as TotalAges
12                                 from Sys_UserInfor
13                                 group by userSex";
14                 List<model3> sUserListGroup1 = ExecuteQuery<model3>(sql1);
15                 foreach (var item in sUserListGroup1)
16                 {
17                       Console.WriteLine("性别:{0},年龄总和:{1}", item.userSex, item.TotalAges);
18                 }
19
20                 //5.2 根据用户性别进行分类,并且统计不同性别年龄的最大值
21                 Console.WriteLine("-------------5.2 根据用户性别进行分类,并且统计不同性别年龄的最大值-------------------");
22                 string sql2 = @"select userSex,MAX(userAge) as TotalAges
23                                 from Sys_UserInfor
24                                 group by userSex";
25                 List<model3> sUserListGroup2 = ExecuteQuery<model3>(sql2);
26                 foreach (var item in sUserListGroup2)
27                 {
28                     Console.WriteLine("性别:{0},年龄最大值:{1}", item.userSex, item.TotalAges);
29                 }
30             }
31             #endregion

6. 分页用法

第十四节:Lambda、linq、SQL的相爱相杀(3)相关推荐

  1. 第十三节:Lambda、linq、SQL的相爱相杀(2)

    一. Linq开篇 1.Where用法 linq中where的用法与SQL中where的用法基本一致. 1 #region 01-where用法2 {3 //1. where用法4 //1.1 查询账 ...

  2. 第十二节:Lambda、linq、SQL的相爱相杀(1)

    一. 谈情怀  Lambda.Linq.SQL伴随着我的开发一年又一年,但它们三者并没有此消彼长,各自占有这一定的比重,起着不可替代的作用. 相信我们最先接触的应该就是SQL了,凡是科班出身的人,大学 ...

  3. Python编程基础:第五十四节 排序Sort

    第五十四节 排序Sort 前言 实践 前言 我们常需要对列表.元组中的元素进行排序,例如按照字母表排列学生的名称.这里就需要用到列表的sort()方法,以及sorted()函数. 实践 我们先来构建一 ...

  4. Python编程基础:第四十四节 方法重写Method Overriding

    第四十四节 方法重写Method Overriding 前言 实践 前言 我们前面说了,子类继承于父类,可以调用父类的所有属性和方法.那么如果我们想在继承的过程中重新书写父类的某些方法,此时就用到了方 ...

  5. Python编程基础:第三十四节 文件移动Move a File

    第三十四节 文件移动Move a File 前言 实践 前言 当我们需要将一个文件/文件夹移动到另一个指定路径时,就需要用到shutil.move()函数,该函数需要指定两个参数shutil.move ...

  6. Python编程基础:第二十四节 作用域Scope

    第二十四节 作用域Scope 前言 实践 前言 在Python中每一个变量都有其自己的生命周期,我们一般将变量分为全局变量与局部变量,全局变量是指在整个代码内部都可以访问到的变量,局部变量是指只有在函 ...

  7. Python编程基础:第十四节 列表Lists

    第十四节 列表Lists 前言 实践 前言 列表是一种非常常用的数据结构.我们可以用它来存储各种类型的数据. 实践 我们先来创建一个名为food的列表,里面存储了一系列我喜欢的食物名称: food = ...

  8. matlab练习_MATLAB教程-台大郭彦甫-第十四节,含练习答案

    14-回归与内插 一.Polynomial curve fitting(多项式曲线拟合) (一)Simple Linear Regression(简单线性回归) 1.A bunch of data p ...

  9. 大白话5分钟带你走进人工智能-第二十四节决策树系列之分裂流程和Gini系数评估(3)...

     第二十四节决策树系列之分裂流程和Gini系数评估(3) 上一节中我们讲解了决策树的数学表达形式,本节的话我们讲解决策树的分裂流程以及分裂条件的评估.我们基于决策树的递归表达式上:           ...

最新文章

  1. axure 下拉多选 元件_Axure教程:下拉多选列表集合(多选下拉列表+单选下拉列表+分级下拉列表)...
  2. 关于学习Python的一点学习总结(14->换一种方法创建字典->访问字典)
  3. BZOJ 2139 road(构造,最小生成树)【BZOJ 修复工程】
  4. 同事把实数作为 HashMap 的key,领导发飙了...
  5. 你拖后腿了吗?工信部发布前 11 月软件行业经济报告
  6. Flex Timer 定时器
  7. 模型转换状态已支持Webhook!
  8. POJ3345 Bribing FIPA 【背包类树形dp】
  9. 手把手教你解析Resources.arsc
  10. readonly 和 disable的区别
  11. 将长度为n的绳子分为m段求各段乘积的最大值
  12. Java Arrays.asList()方法详解
  13. isc dhcp_ISC的完整形式是什么?
  14. android ui stencil kit 下载,实用的iOS6/iPhone5 GUI/iPad PSD以及其它版本素材
  15. 《android开发艺术探索》读书笔记(五)--RemoteViews
  16. c语言遗传算法在求解tsp问题,C语言遗传算法在求解TSP问题设计.doc
  17. 微信小程序顶部tab切换
  18. C:\Users\用户名\Documents不可用
  19. SpringBoot 2.3 新特性之优雅停机
  20. 【考研经验】一个苍山的不入流的学生的考研之路

热门文章

  1. 如何往eclipse中导入maven项目
  2. 使用handler倒计时
  3. QML官方系列教程——QML Applications
  4. oracle中如何创建dblink
  5. [Leetcode][第977题][JAVA][有序数组的平方][排序][双指针]
  6. 【数据结构与算法】字符串匹配 AC自动机
  7. 并行DA实验c语言程序,哈工大C语言DA实验报告.doc
  8. 笔记本如何与其他计算机共享,笔记本电脑怎么和手机共享文件
  9. oracle 表达式1000,oracle环境下占用编号的方法报语法错误:ORA-01795: 列表中的最大表达式数为 1000...
  10. delphi 中如果不进行 closehandle 会怎么样_心理学:当你迷茫了,请坚持做三件事,你的未来会越来越好...