查询数据库中的数据

from… in子句

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

select子句

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

where子句

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

group… by子句

对查询进行分组

order  by子句

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

join子句

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

let子句

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

into子句

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

一、from… in子句

以下例子均使用此数据库

USE master -- 设置当前数据库为master,以解除对Students的占用
GO
IF EXISTS(SELECT * FROM sys.databases WHERE name='Students')
DROP DATABASE Students --创建一个Students数据库
CREATE DATABASE Students GO GO
IF EXISTS(SELECT * FROM sys.sysobjects WHERE xtype = 'U' AND name='StuInfo')
DROP TABLE StuInfo USE Students -- 设置当前数据库为Students
CREATE TABLE StuInfo
(
-- 创建学生信息表
StuID int NOT NULL PRIMARY KEY, -- 学生学号,主键
StuName varchar(10) NOT NULL, -- 学生姓名,非空
StuSex char(2) NOT NULL DEFAULT('男'), -- 学生性别,非空
CHECK (StuSex ='男' or StuSex='女' )
)
GO GO
IF EXISTS(SELECT * FROM sys.sysobjects WHERE xtype = 'U' AND name='StuMarks')
DROP TABLE StuMarks USE Students -- 设置当前数据库为Students
CREATE TABLE StuMarks
(
-- 创建学生成绩表
ExamNo int identity(1,1) primary key, -- 考试编号,标识
StuID int NOT NULL references StuInfo(StuID), -- 考生学号,外键
Course varchar(10) not null, -- 考试科目
Score int default(0), -- 考试成绩
)
GO GO
USE Students -- 设置当前数据库为Students
INSERT INTO StuInfo (StuID,StuName,StuSex)
SELECT 1,'张三','男' UNION
SELECT 2,'李四','男' UNION
SELECT 3,'钱七','女' UNION
SELECT 4,'王五','女' UNION
SELECT 5,'赵六','男'
GO GO
USE Students -- 设置当前数据库为Students
INSERT INTO StuMarks (StuID,Course,Score)
SELECT 1,'语文',70 UNION
SELECT 1,'数学',89 UNION
SELECT 2,'语文',33 UNION
SELECT 2,'数学',50 UNION
SELECT 3,'语文',79 UNION
SELECT 3,'数学',90 UNION
SELECT 4,'语文',88 UNION
SELECT 4,'数学',74 UNION
SELECT 5,'语文',64 UNION
SELECT 5,'数学',92
GO GO
SELECT * FROM StuInfo;
SELECT * FROM StuMarks;

FROM...IN子句

 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataClasses1DataContext dc = new DataClasses1DataContext(); Response.Write("<br/>查询数据库<br/>");
var stus1 = from stu in dc.StuInfos
select stu;
foreach (var stu in stus1)
{
Response.Write(stu.StuID + "、" + stu.StuName + "、" + stu.StuSex + "<br/>");
} Response.Write("<br/>查询对象<br/>");
List<int> datas = new List<int> { 1, 3, 5, 7, 9 };
var stus2 = from data in datas
select data; foreach (var stu in stus2)
{
Response.Write(stu + "<br/>");
}
}
}

运行的结果如下:

二、select子句

 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataClasses1DataContext dc = new DataClasses1DataContext(); Response.Write("<br/>分组查询所有男学生和女同学的信息<br/>");
var stus1 = from stu in dc.StuInfos
group stu by stu.StuSex;
foreach (var groups in stus1)
{
Response.Write("<br/>分组名称:" + groups.Key + "<br/>");
foreach (var stu in groups)
{
Response.Write(stu.StuID + "、" + stu.StuName + "<br/>");
}
} Response.Write("<br/>分组查询所有男学生的信息<br/>");
var stus2 = (from stu in dc.StuInfos
group stu by stu.StuSex).ToList(); foreach (var stu in stus2.ElementAt(0))
{
Response.Write(stu.StuID + "、" + stu.StuName + "<br/>");
}
}
}

运行的结果:

三、where子句

 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataClasses1DataContext dc = new DataClasses1DataContext(); Response.Write("<br/>查询所有男学生信息<br/>");
var stus1 = from stu in dc.StuInfos
where stu.StuSex == "男"
select stu;
foreach (var stu in stus1)
{
Response.Write(stu.StuID + "、" + stu.StuName + "<br/>");
} Response.Write("<br/>查询所有姓张的男学生信息<br/>");
var stus2 = from stu in dc.StuInfos
where stu.StuSex == "男" && stu.StuName.StartsWith("张")
select stu;
foreach (var stu in stus2)
{
Response.Write(stu.StuID + "、" + stu.StuName + "<br/>");
}
}
}

运行的结果:

四、group … by子句

 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataClasses1DataContext dc = new DataClasses1DataContext(); Response.Write("<br/>分组查询所有男学生和女同学的信息<br/>");
var stus1 = from stu in dc.StuInfos
group stu by stu.StuSex;
foreach (var groups in stus1)
{
Response.Write("<br/>分组名称:" + groups.Key + "<br/>");
foreach (var stu in groups)
{
Response.Write(stu.StuID + "、" + stu.StuName + "<br/>");
}
} Response.Write("<br/>分组查询所有男学生的信息<br/>");
var stus2 = (from stu in dc.StuInfos
group stu by stu.StuSex).ToList(); foreach (var stu in stus2.ElementAt(0))
{
Response.Write(stu.StuID + "、" + stu.StuName + "<br/>");
}
}
}

运行结果为:

五、orderby子句

 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataClasses1DataContext dc = new DataClasses1DataContext(); Response.Write("<br/>降序查询所有学生的成绩信息<br/>");
var marks1 = from mark in dc.StuMarks
orderby mark.Score descending
select mark;
foreach (var mark in marks1)
{
Response.Write(mark.StuID + "、" + mark.Course + "、" + mark.Score + "<br/>");
} Response.Write("<br/>降序查询所有学生的数学成绩信息<br/>");
var marks2 = from mark in dc.StuMarks
where mark.Course=="数学"
orderby mark.Score descending
select mark;
foreach (var mark in marks2)
{
Response.Write(mark.StuID + "、" + mark.Score + "<br/>");
}
}
}

运行结果为:

六、join子句

  protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataClasses1DataContext dc = new DataClasses1DataContext(); Response.Write("<br/>查询所有学生的姓名及考试信息<br/>");
var res1 = from stu in dc.StuInfos
join mark in dc.StuMarks
on stu.StuID equals mark.StuID
select new { stu.StuName,mark.Course,mark.Score}; foreach (var stu in res1)
{
Response.Write(stu.StuName + "、" + stu.Course + "、" + stu.Score + "<br/>");
} Response.Write("<br/>查询所有学生的姓名及考试信息<br/>");
var res2 = from stu in dc.StuInfos
from mark in dc.StuMarks
where stu.StuID == mark.StuID
select new { stu.StuName, mark.Course, mark.Score }; foreach (var stu in res2)
{
Response.Write(stu.StuName + "、" + stu.Course + "、" + stu.Score + "<br/>");
}
} }

运行结果为:

七、let子句

 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataClasses1DataContext dc = new DataClasses1DataContext(); Response.Write("<br/>查询所有姓张的男学生信息<br/>");
var stus1 = from stu in dc.StuInfos
let start = stu.StuName.StartsWith("张")
where stu.StuSex == "男" && start //== true
select stu;
foreach (var stu in stus1)
{
Response.Write(stu.StuID + "、" + stu.StuName + "<br/>");
}
}
}

运行结果为:

八、into子句

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataClasses1DataContext dc = new DataClasses1DataContext(); Response.Write("<br/>分组查询所有男学生和女同学的信息<br/>");
var stus1 = from stu in dc.StuInfos
group stu by stu.StuSex into res
select res;
foreach (var groups in stus1)
{
Response.Write("<br/>分组名称:" + groups.Key + "<br/>");
foreach (var stu in groups)
{
Response.Write(stu.StuID + "、" + stu.StuName + "<br/>");
}
}
}
}

运行结果为:

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. 错误提示”void is an invalid type for the variable“

    今晚做android作业,出现错误提示:void is an invalid type for the variable, invalid:无效的  variable:变量,在网上找了一下后知道是 方 ...

  2. springboot从入门到精通(三)

    再开始第三节之前,先补充一下第二节里出现的小问题,就是springboot的application.properties,我在文件中添加了server.port=9090这个参数,但是启动项目后并未生 ...

  3. 粗看ES6之函数

    标签: es6 javascript 箭头函数 ES6为了书写方便引入了函数的全新简写方式-箭头函数 <!DOCTYPE html> <html> <head> & ...

  4. jquery_lazyload插件

    延迟加载图片的 jQuery 插件 http://www.neoease.com/lazy-load-jquery-plugin-delay-load-image/

  5. .NET 自动内存管理(垃圾收集GC)

    自动内存管理(垃圾收集GC) 在面向对象的环境里, 要使用资源,必须为响应 的类型分配一定 的内存空间.下面是访问一个资源所需要的几个步骤: 1. 调用中间语言(IL)的newobj 指令.当我们用N ...

  6. Developer - 如何自我保证Node.js模块质量

    组里正在做SaaS产品,其中一些模块(Module)是Node.js实现,这里我们主要使用Node.js实现Web Server来提供服务. 在做SaaS项目之前,组里的开发模式是传统的Deverlo ...

  7. Homestead 安装 phpMyAdmin 作为数据库管理客户端 — Laravel 实战 iBrand API 教程

    简介 phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库.借由此Web接口可以成为一个简易方式输 ...

  8. centos6.5_64bit-Tomcat7安装部署

    此次安装系统版本及软件版本 centos6.5-64bit java -1.7.0_45 jdk1.8.0_111 apache-tomcat-7.0.73   一.检查java版本信息        ...

  9. RabbitMQ的用户管理方法

    1. 用户管理用户管理包括增加用户,删除用户,查看用户列表,修改用户密码.相应的命令 (1) 新增一个用户 rabbitmqctl  add_user  Username  Password (2) ...

  10. httpclient使用head添加cookie

    最近在使用接口时候,我使用get请求时,需要携带登录态,所以在get请求的时候我需要在head里面把cookie给加上,添加方式get和post完全不一样 Post方式添加cookie httpPos ...