查询数据库中的数据

from… in子句

指定查询操作的数据源和范围变量

select子句

指定查询结果的类型和表现形式

where子句

筛选元素的逻辑条件,一般由逻辑运算符组成

group… by子句

对查询进行分组

order  by子句

对查询结果进行排序,可以为“升序”或“降序”

join子句

连接多个查询操作的数据源

let子句

引入用于存储查询表达式中的子表达式结果的范围变量

into子句

提供一个临时标示符,充当对join、group或select子句的结果

一、from… in子句

以下例子均使用此数据库

  1. USE master -- 设置当前数据库为master,以解除对Students的占用
  2. GO
  3. IF EXISTS(SELECT * FROM sys.databases WHERE name='Students')
  4. DROP DATABASE Students
  5. --创建一个Students数据库
  6. CREATE DATABASE Students
  7. GO
  8. GO
  9. IF EXISTS(SELECT * FROM sys.sysobjects WHERE xtype = 'U' AND name='StuInfo')
  10. DROP TABLE StuInfo
  11. USE Students -- 设置当前数据库为Students
  12. CREATE TABLE StuInfo
  13. (
  14. -- 创建学生信息表
  15. StuID int NOT NULL PRIMARY KEY, -- 学生学号,主键
  16. StuName varchar(10) NOT NULL, -- 学生姓名,非空
  17. StuSex char(2) NOT NULL DEFAULT('男'), -- 学生性别,非空
  18. CHECK (StuSex ='男' or StuSex='女' )
  19. )
  20. GO
  21. GO
  22. IF EXISTS(SELECT * FROM sys.sysobjects WHERE xtype = 'U' AND name='StuMarks')
  23. DROP TABLE StuMarks
  24. USE Students -- 设置当前数据库为Students
  25. CREATE TABLE StuMarks
  26. (
  27. -- 创建学生成绩表
  28. ExamNo int identity(1,1) primary key, -- 考试编号,标识
  29. StuID int NOT NULL references StuInfo(StuID), -- 考生学号,外键
  30. Course varchar(10) not null, -- 考试科目
  31. Score int default(0), -- 考试成绩
  32. )
  33. GO
  34. GO
  35. USE Students -- 设置当前数据库为Students
  36. INSERT INTO StuInfo (StuID,StuName,StuSex)
  37. SELECT 1,'张三','男' UNION
  38. SELECT 2,'李四','男' UNION
  39. SELECT 3,'钱七','女' UNION
  40. SELECT 4,'王五','女' UNION
  41. SELECT 5,'赵六','男'
  42. GO
  43. GO
  44. USE Students -- 设置当前数据库为Students
  45. INSERT INTO StuMarks (StuID,Course,Score)
  46. SELECT 1,'语文',70 UNION
  47. SELECT 1,'数学',89 UNION
  48. SELECT 2,'语文',33 UNION
  49. SELECT 2,'数学',50 UNION
  50. SELECT 3,'语文',79 UNION
  51. SELECT 3,'数学',90 UNION
  52. SELECT 4,'语文',88 UNION
  53. SELECT 4,'数学',74 UNION
  54. SELECT 5,'语文',64 UNION
  55. SELECT 5,'数学',92
  56. GO
  57. GO
  58. SELECT * FROM StuInfo;
  59. SELECT * FROM StuMarks;

FROM...IN子句

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. if (!IsPostBack)
  4. {
  5. DataClasses1DataContext dc = new DataClasses1DataContext();
  6. Response.Write("<br/>查询数据库<br/>");
  7. var stus1 = from stu in dc.StuInfos
  8. select stu;
  9. foreach (var stu in stus1)
  10. {
  11. Response.Write(stu.StuID + "、" + stu.StuName + "、" + stu.StuSex + "<br/>");
  12. }
  13. Response.Write("<br/>查询对象<br/>");
  14. List<int> datas = new List<int> { 1, 3, 5, 7, 9 };
  15. var stus2 = from data in datas
  16. select data;
  17. foreach (var stu in stus2)
  18. {
  19. Response.Write(stu + "<br/>");
  20. }
  21. }
  22. }

运行的结果如下:

二、select子句

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. if (!IsPostBack)
  4. {
  5. DataClasses1DataContext dc = new DataClasses1DataContext();
  6. Response.Write("<br/>分组查询所有男学生和女同学的信息<br/>");
  7. var stus1 = from stu in dc.StuInfos
  8. group stu by stu.StuSex;
  9. foreach (var groups in stus1)
  10. {
  11. Response.Write("<br/>分组名称:" + groups.Key + "<br/>");
  12. foreach (var stu in groups)
  13. {
  14. Response.Write(stu.StuID + "、" + stu.StuName + "<br/>");
  15. }
  16. }
  17. Response.Write("<br/>分组查询所有男学生的信息<br/>");
  18. var stus2 = (from stu in dc.StuInfos
  19. group stu by stu.StuSex).ToList();
  20. foreach (var stu in stus2.ElementAt(0))
  21. {
  22. Response.Write(stu.StuID + "、" + stu.StuName + "<br/>");
  23. }
  24. }
  25. }

运行的结果:

三、where子句

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. if (!IsPostBack)
  4. {
  5. DataClasses1DataContext dc = new DataClasses1DataContext();
  6. Response.Write("<br/>查询所有男学生信息<br/>");
  7. var stus1 = from stu in dc.StuInfos
  8. where stu.StuSex == "男"
  9. select stu;
  10. foreach (var stu in stus1)
  11. {
  12. Response.Write(stu.StuID + "、" + stu.StuName + "<br/>");
  13. }
  14. Response.Write("<br/>查询所有姓张的男学生信息<br/>");
  15. var stus2 = from stu in dc.StuInfos
  16. where stu.StuSex == "男" && stu.StuName.StartsWith("张")
  17. select stu;
  18. foreach (var stu in stus2)
  19. {
  20. Response.Write(stu.StuID + "、" + stu.StuName + "<br/>");
  21. }
  22. }
  23. }

运行的结果:

四、group … by子句

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. if (!IsPostBack)
  4. {
  5. DataClasses1DataContext dc = new DataClasses1DataContext();
  6. Response.Write("<br/>分组查询所有男学生和女同学的信息<br/>");
  7. var stus1 = from stu in dc.StuInfos
  8. group stu by stu.StuSex;
  9. foreach (var groups in stus1)
  10. {
  11. Response.Write("<br/>分组名称:" + groups.Key + "<br/>");
  12. foreach (var stu in groups)
  13. {
  14. Response.Write(stu.StuID + "、" + stu.StuName + "<br/>");
  15. }
  16. }
  17. Response.Write("<br/>分组查询所有男学生的信息<br/>");
  18. var stus2 = (from stu in dc.StuInfos
  19. group stu by stu.StuSex).ToList();
  20. foreach (var stu in stus2.ElementAt(0))
  21. {
  22. Response.Write(stu.StuID + "、" + stu.StuName + "<br/>");
  23. }
  24. }
  25. }

运行结果为:

五、orderby子句

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. if (!IsPostBack)
  4. {
  5. DataClasses1DataContext dc = new DataClasses1DataContext();
  6. Response.Write("<br/>降序查询所有学生的成绩信息<br/>");
  7. var marks1 = from mark in dc.StuMarks
  8. orderby mark.Score descending
  9. select mark;
  10. foreach (var mark in marks1)
  11. {
  12. Response.Write(mark.StuID + "、" + mark.Course + "、" + mark.Score + "<br/>");
  13. }
  14. Response.Write("<br/>降序查询所有学生的数学成绩信息<br/>");
  15. var marks2 = from mark in dc.StuMarks
  16. where mark.Course=="数学"
  17. orderby mark.Score descending
  18. select mark;
  19. foreach (var mark in marks2)
  20. {
  21. Response.Write(mark.StuID + "、" + mark.Score + "<br/>");
  22. }
  23. }
  24. }

运行结果为:

六、join子句

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. if (!IsPostBack)
  4. {
  5. DataClasses1DataContext dc = new DataClasses1DataContext();
  6. Response.Write("<br/>查询所有学生的姓名及考试信息<br/>");
  7. var res1 = from stu in dc.StuInfos
  8. join mark in dc.StuMarks
  9. on stu.StuID equals mark.StuID
  10. select new { stu.StuName,mark.Course,mark.Score};
  11. foreach (var stu in res1)
  12. {
  13. Response.Write(stu.StuName + "、" + stu.Course + "、" + stu.Score + "<br/>");
  14. }
  15. Response.Write("<br/>查询所有学生的姓名及考试信息<br/>");
  16. var res2 = from stu in dc.StuInfos
  17. from mark in dc.StuMarks
  18. where stu.StuID == mark.StuID
  19. select new { stu.StuName, mark.Course, mark.Score };
  20. foreach (var stu in res2)
  21. {
  22. Response.Write(stu.StuName + "、" + stu.Course + "、" + stu.Score + "<br/>");
  23. }
  24. }
  25. }

运行结果为:

七、let子句

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. if (!IsPostBack)
  4. {
  5. DataClasses1DataContext dc = new DataClasses1DataContext();
  6. Response.Write("<br/>查询所有姓张的男学生信息<br/>");
  7. var stus1 = from stu in dc.StuInfos
  8. let start = stu.StuName.StartsWith("张")
  9. where stu.StuSex == "男" && start //== true
  10. select stu;
  11. foreach (var stu in stus1)
  12. {
  13. Response.Write(stu.StuID + "、" + stu.StuName + "<br/>");
  14. }
  15. }
  16. }

运行结果为:

八、into子句

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. if (!IsPostBack)
  4. {
  5. DataClasses1DataContext dc = new DataClasses1DataContext();
  6. Response.Write("<br/>分组查询所有男学生和女同学的信息<br/>");
  7. var stus1 = from stu in dc.StuInfos
  8. group stu by stu.StuSex into res
  9. select res;
  10. foreach (var groups in stus1)
  11. {
  12. Response.Write("<br/>分组名称:" + groups.Key + "<br/>");
  13. foreach (var stu in groups)
  14. {
  15. Response.Write(stu.StuID + "、" + stu.StuName + "<br/>");
  16. }
  17. }
  18. }
  19. }

运行结果为:

Linq to SQL八大子句的更多相关文章

  1. 年终巨献 史上最全 ——LINQ to SQL语句

    LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操 ...

  2. LINQ to SQL语句(18)之运算符转换

    运算符转换 1.AsEnumerable:将类型转换为泛型 IEnumerable 使用 AsEnumerable<TSource> 可返回类型化为泛型 IEnumerable 的参数.在 ...

  3. Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)

    Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...

  4. LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods

    适用场景:适量的取出自己想要的数据,不是全部取出,这样性能有所加强. Take 说明:获取集合的前n个元素:延迟.即只返回限定数量的结果集. var q = ( from e in db.Employ ...

  5. LINQ TO SQL 大全

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 LINQ to SQL语句(1)之Where 适用场景: ...

  6. Linq to sql 的语法

    Linq to SQL 语法查询(子查询 & in操作 & join ) 引用地址:http://www.cnblogs.com/82767136/articles/2949541.h ...

  7. LINQ to SQL Count/Sum/Min/Max/Avg Join

    public class Linq { MXSICEDataContext Db = new MXSICEDataContext(); // LINQ to SQL // Count/Sum/Min/ ...

  8. LINQ to SQL大全

    LINQ to SQL语句 (1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的 ...

  9. [转]LINQ To SQL 语法及实例大全

    转载自:http://blog.csdn.net/pan_junbiao/article/details/7015633 LINQ to SQL语句(1)之Where Where操作 适用场景:实现过 ...

随机推荐

  1. 自定义Qt组件-通讯模块(P3)

    1.   半双工模式实时检测串口 ComHalfDuplex类是为了解决上位机发送控制指令和下位机发送数据会在半双工RS485总线中产生冲突引起乱码而引入的(v0.010版本引入). 解决冲突的原理主 ...

  2. [转]完美的背景图全屏css代码 – background-size:cover?

    写主题样式的时候经常会碰到用背景图铺满整个背景的需求,这里分享下使用方法 需要的效果 图片以背景的形式铺满整个屏幕,不留空白区域 保持图像的纵横比(图片不变形) 图片居中 不出现滚动条 多浏览器支持 ...

  3. fileupload NPOI导入EXECL数据

    fileupload JS @section scripts{ <script src="~/Content/js/fileupload/vendor/jquery.ui.widget ...

  4. CentOS 6.5下安装Tomcat --专业增强版 非yum

    Tomcat安装 通常情况下我们要配置Tomcat是很容易的一件事情,但是如果您要架设多用户多服务的Java虚拟主机就不那么容易了.其中最大的一个问题就是Tomcat执行权限.普通方式配置的Tomca ...

  5. C++ VS编译问题--LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

    用VS编译时,当出现错误LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏: 这个问题的解决方案为: 1. 找到项目\xx属性\配置属性\清单工具\输 ...

  6. System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值

    System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值.解决办法是: 而这位大哥提出的解决办法 ...

  7. Struts2_用Action的属性接收参数

    先在 Action 中定义要接收的属性,需要编写属性的getter 和 setter 方法 struts2 会自动帮我们把 String 类型的参数转为 Action 中相对应的数据类型. priva ...

  8. django 定制admin

    https://www.cnblogs.com/liwenzhou/p/9519321.html

  9. azkaban调度

    azkaban调度 1.概述 azkaban是一套调度系统,常用大数据作业调度.azkaban包括web和executor两套程序,web主要完成展示和交互,executor上完成调度和作业提交执行. ...

  10. Angular2、4入门基础知识(小的概念)

    1. 使用引用符来格式化HTML代码. @Component({ selector: 'app-heroes', templateUrl: './heroes.component.html', sty ...