博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linq to SQL八大子句
阅读量:7223 次
发布时间:2019-06-29

本文共 9010 字,大约阅读时间需要 30 分钟。

 

查询数据库中的数据

 

from… in子句

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

select子句

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

where子句

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

group… by子句

对查询进行分组

order  by子句

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

join子句

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

let子句

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

into子句

提供一个临时标示符,充当对joingroupselect子句的结果

一、from… in子句

以下例子均使用此数据库

USE master -- 设置当前数据库为master,以解除对Students的占用GOIF  EXISTS(SELECT * FROM sys.databases WHERE name='Students')DROP DATABASE Students--创建一个Students数据库CREATE DATABASE StudentsGOGOIF EXISTS(SELECT * FROM sys.sysobjects WHERE xtype = 'U' AND name='StuInfo')DROP TABLE StuInfo USE Students -- 设置当前数据库为StudentsCREATE TABLE StuInfo            (	-- 创建学生信息表	StuID int NOT NULL PRIMARY KEY,        -- 学生学号,主键	StuName varchar(10) NOT NULL,  -- 学生姓名,非空	StuSex char(2) NOT NULL DEFAULT('男'),        -- 学生性别,非空		CHECK (StuSex ='男' or StuSex='女' ) )GOGOIF EXISTS(SELECT * FROM sys.sysobjects WHERE xtype = 'U' AND name='StuMarks')DROP TABLE StuMarksUSE Students -- 设置当前数据库为StudentsCREATE 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),  -- 考试成绩)GOGOUSE Students -- 设置当前数据库为StudentsINSERT INTO StuInfo (StuID,StuName,StuSex)SELECT  1,'张三','男' UNIONSELECT  2,'李四','男' UNIONSELECT  3,'钱七','女' UNIONSELECT  4,'王五','女' UNIONSELECT  5,'赵六','男' GOGOUSE Students -- 设置当前数据库为StudentsINSERT INTO StuMarks (StuID,Course,Score)SELECT  1,'语文',70 UNIONSELECT  1,'数学',89 UNIONSELECT  2,'语文',33 UNIONSELECT  2,'数学',50 UNIONSELECT  3,'语文',79 UNIONSELECT  3,'数学',90 UNIONSELECT  4,'语文',88 UNIONSELECT  4,'数学',74 UNIONSELECT  5,'语文',64 UNIONSELECT  5,'数学',92 GOGOSELECT * FROM StuInfo;SELECT * FROM StuMarks;

FROM...IN子句

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

运行的结果如下:

二、select子句

 

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

运行的结果:

 

三、where子句

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

运行的结果:

四、group … by子句

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

运行结果为:

五、orderby子句

protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                DataClasses1DataContext dc = new DataClasses1DataContext();                Response.Write("
降序查询所有学生的成绩信息
"); 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 + "
"); } Response.Write("
降序查询所有学生的数学成绩信息
"); 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 + "
"); } } }

运行结果为:

六、join子句

protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                DataClasses1DataContext dc = new DataClasses1DataContext();                Response.Write("
查询所有学生的姓名及考试信息
"); 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 + "
"); } Response.Write("
查询所有学生的姓名及考试信息
"); 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 + "
"); } } }

运行结果为:

七、let子句

protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                DataClasses1DataContext dc = new DataClasses1DataContext();                Response.Write("
查询所有姓张的男学生信息
"); 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 + "
"); } } }

运行结果为:

八、into子句

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

运行结果为:

 

转载于:https://www.cnblogs.com/xiaoheima/p/9536311.html

你可能感兴趣的文章
FloatinActionButton以及SnackBar的使用
查看>>
yii2.0高级模板归档文件windows7下安装
查看>>
centos 最小化安装pycharm
查看>>
IMPROVING IOS UNIT TESTS WITH OCMOCK
查看>>
在客户端显示服务器端任务处理进度条
查看>>
查找最相近的字符串
查看>>
map的运用
查看>>
mybatis--MapperScannerConfigurer
查看>>
【笔记】mysql两条数据的某个属性值互换
查看>>
leetcode—Populating Next Right Pointers in Each Node
查看>>
python发起请求提示UnicodeEncodeError
查看>>
文件夹搜索不能用【弹出意外错误,操作无法实现】如何解决呢
查看>>
C程序的存储空间布局
查看>>
OpenStack 的防火墙规则流程
查看>>
环境变量 安装SU
查看>>
请注意,再次记住, centos7,fedora 24中 没有iptables服务, 而使用的firewalld, 也可以安装 iptables-services程序来实现...
查看>>
Overloading Django Form Fields
查看>>
JVM内幕:Java虚拟机详解
查看>>
An incompatible version 1.1.14 of APR based Apache Tomcat Native library is installed, while Tomcat
查看>>
高并发与负载均衡-nginx-反向代理概念
查看>>