1_sql中的循环,编号

(1)sql 中没有for循环,只有while循环,

begin end 中间的就是while执行的语句,相当于{}

declare @i int;
set @i=1;
--begin   end 中间的就是while执行的语句,相当于{}
while(@i<=100)
begin
declare @rand int;
--rand(): 产生0-1之间的随机小数,不包括0和1
--产生x-y之间的随机数 rand() * (y-x)+x;
--round()四舍五入取整
set @rand=rand()*(100-60)+60
print @rand
--sqlserver 中的字符串和数字相加,先把字符串转换成数字再和数字计算
insert into StudentInfo(StuName,Score)values('张三'+cast(@i as varchar),@rand);
set @i+=1;
end

(2)重新编号

row_number对查到的数据进行重新编号,赋予他来连续的编号

over 编号的依据

select *, row_number() over(order by StuName) as '重新编号' from StudentInfo
​
select ProvinceName+City+Area, row_number() over(order by AddressId) as '重新编号' from AddressInfo

2_游标

(1)游标,是一种数据访问机制,用于逐行处理查询的结果,允许开发者或应用程序在结果集上定义 检索 和修改数据

(2)创建游标并使用,

declare @StuId int;
declare @StuName varchar(20);
declare @Score1 int;
--1.定义游标
declare My_Cursor cursor for
select * from StudentInfo where StuId>=130;
--2.打开游标
open My_Cursor;
--3.让游标指向结果集的第一行,并拉取第一行的数据,存储到变量上
fetch next from  My_Cursor into @StuId,@StuName, @Score1;
--4.循环游标
--一个@是开发者自定义的变量
--两个@开头是sql server自定义的变量名称
--@@fetch_status作用 sql中游标指针的位置判断,代表游标读取下一行数据是否成功
--理解它为枚举,有三种值:0代表读取成功,-1表示语句失败或此行不在结果集中  -2表示被提取的行不存在
while @@fetch_status=0
begin
print  @StuId;
print @StuName;
print  @Score1;
print '==============';
fetch next from  My_Cursor into @StuId,@StuName, @Score1;
end
--5.关闭游标
close My_Cursor;
--6.释放游标
deallocate My_Cursor

3_临时表

(1)临时表,临时存储的表,不是真实的表,类似于C#中的匿名函数

(2)判断临时表是否存在,如果存在则删除

if object_id('tempdb..#TempTable') is not null   
drop table #TempTable  --删除临时表的结果 表结构也删除
--delete from  #TempTable --删除临时表的结果 表结构不删除

(2)创建临时表,命名必须以#开头

--创建临时表 命名必须以#开头
create table  #TempTable (Score  int not null,ScoreCount  int null
);

(3)向表中插入数据

  • 循环向临时表插入数据 (不推荐

  • 直接使用select 语句配合 insert into 语句(推荐)

select * from #TempTable
--向临时表中插入数据
--1.循环向临时表插入数据(不推荐)
declare @Score int;
declare @ScoreCount int;
-- a.定义游标,是一种数据访问机制,用于逐行处理查询的结果,允许开发者或应用程序在结果集上定义 检索 和修改数据
declare Score_cursor cursor for  
select  Score ,Count(Score) as ScoreCount from StudentInfo
where Score>=90 and Score<=100  
group by Score  
--b.打开一个游标
open Score_cursor;
--c.让游标指向结果集第一行,并且拉取第一行数据并存储到相应的变量上
--fetch 拿来 next 下一个
fetch next from Score_cursor into  @Score,@ScoreCount;
--d循环游标
while @@FETCH_STATUS=0
begin
insert into #TempTable(Score,ScoreCount)values(@Score,@ScoreCount);
fetch next from Score_cursor into  @Score,@ScoreCount;
end
--e.关闭游标
close Score_cursor;
--f.释放游标
deallocate Score_cursor
​
select * from #TempTable
where ScoreCount>=4
order by ScoreCount desc;
​
--2.直接使用select语句配合insert Into语句(推荐)
--select 字句查询的结果要和 insert into 语句的列个数 顺序 类型 一一对应
insert into #TempTable
select  Score ,Count(Score) as ScoreCount from StudentInfo--查询
where Score>=90 and Score<=100          --筛选
group by Score  
​
select * from #TempTable

4_分页

(1)row_number over 方式 sql 2012 以下版本推荐使用

--分页
--100 条数据 10页 一页显示10条,
--当前页currentPage=1 设置每页显示的条数 pageSize=10
--第一页 rowId>=10 and RoeId<=10 1-10
--第二页 rowId>=11 and RoeId<=20 11-20
--第三页 rowId>=21 and RoeId<=30 21-30\
--每页开始的RowId : (currentPage-1)*pageSize+1
--每页结束的RoeId:currentPage*pageSize
--1.row_number over 是方式 sql 2012 以下版本推荐使用
--当前页,可以声明的时候赋值,也可以先声明再赋值
--declare  @currentPage int=10;
declare  @currentPage int;
declare  @pageSize int;--每页显示的条数,10,20,30...
set @currentPage=1;
set @pageSize=10;
​
--嵌套查询
--外层查询select * from (--内层查询,子查询-- row_number() over(order by Score asc)按照成绩升序重新编号--返回一个新表select row_number() over(order by Score asc) as RowId ,* from StudentInfo) as S --利用新表进行筛选where RowId between ( @currentPage-1)*@pageSize+1 and @currentPage * @pageSize

(2)offset fetch next 方式 sql 2012版本以上推荐;

offset()偏移 ;fetch拿取

declare  @currentPage1 int;
declare  @pageSize1 int;
set @currentPage1=1;
set @pageSize1=10;
​
select * from StudentInfo --查询
order by StuId          --根据id排序
offset (@currentPage1-1)*@pageSize1 rows  --offset 偏移,跳过多少行
fetch next @pageSize1 rows only     --读取接下来的多少行数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/96934.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/96934.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/96934.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis高级篇:在Nginx、Redis、Tomcat(JVM)各环节添加缓存以实现多级缓存

摘要&#xff1a;多级缓存通过在 Nginx、Redis、Tomcat&#xff08;JVM&#xff09;各环节添加缓存&#xff0c;解决传统缓存中 Tomcat 瓶颈与 Redis 失效冲击数据库问题。利用 Caffeine 实现 JVM 缓存&#xff0c;OpenResty 结合 Lua 处理 Nginx 层逻辑&#xff0c;通过 Redis…

9 设计网络爬虫

前言 我们重点讨论网络爬虫的设计&#xff0c; 这也是一个有趣且经典的系统设计面试问题。 爬虫开发的复杂性取决于我们想要支持的爬虫规模。它可以是一个小的学校项目&#xff0c;只需要几小时就可以完成&#xff0c;也可以是一个需要专业开发团队持续优化的巨型项目。因此&…

面试:计算机网络

一、网络分层与URL流程 1. 模型掌握TCP/IP四层模型&#xff1a;层级功能 & 协议应用层提供应用接口&#xff08;HTTP、DNS、FTP&#xff09;传输层端到端传输&#xff08;TCP可靠、UDP快速&#xff09;网络层路由与寻址&#xff08;IP、ICMP&#xff09;网络接口层链路传输…

lanczos算法的核心——Ritz向量的计算(主要思想为反向映射)

在 Lanczos 算法中&#xff0c;“将得到的特征向量映射回原始空间&#xff08;即乘以V&#xff09;得到的近似特征向量” 这一步&#xff0c;通常是指在三对角矩阵&#xff08;T&#xff09;的特征向量求解完成后&#xff0c;将其转换回原始矩阵&#xff08;A&#xff09;的特征…

Verilog功能模块--SPI主机和从机(03)--SPI从机设计思路与代码解析

前言 上一篇文章介绍了Verilog功能模块——SPI主机&#xff0c;包括主机设计思路与使用方法。 本文则用纯Verilog设计了功能完整的4线SPI从机&#xff0c;与网上一些以高频率clk时钟模拟从机不同&#xff0c;本文中的SPI从机工作时钟来源于主机的sclk&#xff0c;符合SPI同步…

【Big Data】Hadoop YARN 大数据集群的 “资源管家”

Apache Hadoop YARN&#xff08;Yet Another Resource Negotiator&#xff09;是Hadoop生态系统中的核心资源管理框架&#xff0c;通过解耦资源管理和任务调度&#xff0c;提供了一个通用的分布式计算资源调度平台&#xff0c;使Hadoop从单一的MapReduce框架演进为支持多种计算…

【计组】总线与IO

总线同步定时方式采用公共时钟信号协调发送方和接收方的传送异步定时方式采用握手信号来实现定时控制不互锁对于主设备&#xff1a;请求&#xff0c;隔一段时间自动撤销请求对于从设备&#xff1a;回答&#xff0c;隔一段时间自动撤销回答半互锁对于主设备&#xff1a;请求&…

技术速递|Model Context Protocol (MCP) 支持已上线 JetBrains、Eclipse 和 Xcode

模型上下文协议&#xff08;MCP&#xff09;与 GitHub Copilot 的集成现已全面支持 JetBrains、Eclipse 和 Xcode&#xff01;MCP 使 GitHub Copilot 能够与外部工具和数据源集成&#xff0c;从而提升更深入的上下文感知能力和编码智能。 借助 JetBrains、Eclipse 和 Xcode 中…

深入浅出理解支持向量机:从原理到应用,解锁分类算法的核心密码

​​​​在机器学习的广阔领域中&#xff0c;分类算法犹如一个个精准的 “决策官”&#xff0c;帮助我们从海量数据中挖掘规律、做出判断。而在众多分类算法里&#xff0c;支持向量机&#xff08;Support Vector Machine&#xff0c;简称 SVM&#xff09;凭借其出色的泛化能力、…

相关法律、法规知识(五)

一、著作权法&#xff1a;软件知识产权风险条款核心要求召回风险场景软件著作权归属&#xff08;11&#xff09;委托开发软件无书面合同 → 著作权归受托方代工生产的设备预装未授权软件 → 侵权诉讼 → 强制下架召回&#xff08;如工业PDA盗用第三方代码&#xff09;侵权行为&…

PWM控制实现呼吸灯

一.呼吸灯原理 呼吸灯指灯光的亮度随着时间由暗到亮逐渐增强&#xff0c;再由亮到暗逐渐衰减&#xff0c;很有节奏感地一起一伏&#xff0c;就像是在呼吸一样&#xff0c;被广泛应用于手机、电脑、电视等电子设备的指示灯中。 通过调节PWM占空比实现呼吸灯效果。通过调节定…

MySQL LIKE查询终极指南:模糊匹配的利刃与性能深渊

引言 LIKE是MySQL中最强大的模糊匹配操作符&#xff0c;也是性能陷阱最多的查询之一。本文将系统解析其高效使用方法&#xff0c;通过实测数据揭示不同场景下的性能表现&#xff0c;并提供企业级优化方案。一、基础语法与通配符解析 1.1 四种匹配模式详解 -- 前缀匹配&#xff…

开发者工具与效率提升指南

开发者工具与效率提升指南介绍 在软件开发过程中&#xff0c;选择适当的开发工具和配置优化是提升效率的关键。本指南旨在提供关于常用开发工具、IDE配置、自动化流程及效率脚本的全面资源与建议&#xff0c;以帮助开发者更高效地进行编码和项目管理。 开发工具和IDE配置 常用开…

Python 轻量级的 ORM(对象关系映射)框架 - Peewee 入门教程

文章目录基础创建数据库管理对象定义自己的模型连接数据库并创建表插入数据查询数据更新数据删除数据进阶复合主键模型示例复杂查询示例(以Relation模型为例)基础 创建数据库管理对象 from peewee import *db MySQLDatabase(test_db, userroot, passwordpassword, hostlocal…

《Java反射与动态代理详解:从原理到实践》

1. 反射&#xff08;Reflection&#xff09; 1.1 反射的概述 反射是Java语言的核心特性之一&#xff0c;它允许程序在运行状态下动态获取类的信息并操作类的成员&#xff08;构造方法、成员变量、成员方法&#xff09;。 专业定义 对于任意一个类&#xff0c;都能够知道这个类的…

golang7 数组切片

本视频详细讲解了Go语言中的集合类型数据结构&#xff0c;重点介绍了数组、切片、map和list四种集合类型。特别强调了切片和map的重要性&#xff0c;以及它们在实际开发中的应用。同时&#xff0c;详细阐述了数组的定义、操作及其与切片之间的区别&#xff0c;包括数组类型与元…

k8s-容器化部署论坛和商城服务(小白的“升级打怪”成长之路)

目录 一、配置文件编写 1、数据持久化 2、mysql主从复制 3、php解析环境 4、nginx服务 5、redis主从复制 6、tomcat服务 7、操作命令 8、在每个node节点操作上 9、更改服务文件加入redis缓存和实现访问动静分离 在存储主机上查看 10、更改商城应用文件 二、实现域…

智慧AI消防通道占用检测在危险区域的应用

智慧AI消防通道占用检测&#xff1a;构建工厂与仓库的安全防线在工业生产与物流仓储领域&#xff0c;工厂安全与仓库安全始终是企业运营的核心命题。消防通道作为紧急情况下的“生命通道”&#xff0c;其畅通性直接关系到人员疏散效率与火灾扑救效果。然而&#xff0c;传统人工…

LangGraph-2-Demo

状态&#xff1a;一个共享数据结构&#xff0c;表示应用程序的当前快照。它可以是任何 Python 类型&#xff0c;但通常是 TypedDict 或 Pydantic BaseModel。 节点&#xff1a;Python 函数&#xff0c;用于编码代理的逻辑。它们以当前 状态 作为输入&#xff0c;执行一些计算或…

基于硅基流动API构建智能聊天应用的完整指南

基于硅基流动API构建智能聊天应用的完整指南 一、引言&#xff1a;AI编程工具重塑开发范式 人工智能编程工具正在彻底改变软件开发的方式&#xff0c;使开发者能够快速构建以前需要大量专业知识的复杂应用。本文将深入探讨如何使用硅基流动(SiliconFlow)的API&#xff0c;结合…