用SQL编写程序首先我们要了解SQL的一些编程方法

1.使用变量

变量:是可以存储数据值的对象,可以使用局部变量向SQL语句专递数据.

(1)局部变量

T-SQL中,局部变量的名称必须以标记@作为前缀.

声明局部变量的语法如下:

语法

declare @variable_name DateType

其中,variable_name 为局部变量的名称,DateType为数据类型.

例如:

Declare @name varchar(8)

Declare @number int

局部变量的赋值有两种方法:使用SET语句和SELECT语句

语法

set @variable_name = value

或者

select @variable_name = value

/*--查找张三的信息--*/
declare @name varchar(8)
set @name = '张三'
select StudentNo, StudentName, BornDate,Address
from Student
where Studentname = @name /*--查找与张三学号相邻的学生信息--*/
declare @StudentNo int
--使用 select 赋值
selece @StudentNo = StudentNo from Student
where StudentName = @name
select StudentNo, StudentName, BornDate,Address
from Student
where (StudentNo = @StudentNo+1) or (StudentNo = @StudentNo-1)
GO

在T-SQL语言中,为局部变量赋值的语句有SET语句和SELECT语句

下表是set语句和select语句的区别

  set select
同时对多个变量赋值 不支持 支持
表达式返回多个时 出错 将返回的最后一个值赋给变量
表达式未返回值时 变量被赋值为null 变量保持原值
下面代码体现了set语句和select语句在使用上不同.
Declare @Addr nvarchar(100), @name nvarchar(100)

Set @addr='', @name='张三'
Select @addr='北京', @name='张三' set@addr = (select address from Student)
Select @addrc = address from Student Set @addr = (Select address from Student where 1<0)
--查询无结果时,@addr被赋值为null
select @addr='北京'
select @address = Address from Student where 1<0
--查询无结果时,@addr保持原值

全局变量

SQL Server 中的所有全局变量都使用两个@符号作为前缀

最重要的五个全局变量

变量 含义
@@error 最后一个T-SQL错误的错误号
@@identity 最后一次插入的标识值
@@powcount 受上一个SQL语句影响的行数
@@servername 本地服务器名称
@@version SQL Server 版本信息

输出语句

语法

print 局部变量或字符串

select 局部变量as自定义列名

print '服务器名称:' + @@servername
print 'SQL Server的版本' +@@version
select @@servername as '服务器名称'
server @@version as 'SQL Server的版本'

局部变量

01.语法

Declare @age int

--赋值

Set @age=20

逻辑控制语句

(1)begin-end语句

语法

begin

语句或语句块

end

作用类似于C#中的 ‘{}‘

(2)if-else语句

语法

if(条件)

语句或语句块1

else

语句或语句块2

declare @avg int
select @avg= AVG(studentresult) from Result,Subject
where Result.SubjectId=Subject.SubjectId
and ExamDate>='2013-08-09'
and ExamDate<'2013-08-10'
and Subject.SubjectName='oop' --02.判定:>=70 显示优秀,同时显示分数最高的三个人的分数
if(@avg>=70)
begin
print '优秀'
--显示前名成绩 当天 oop
select top 3 * from Result,Subject
where result.SubjectId=Subject.SubjectId
and ExamDate>='2013-08-09'
and ExamDate <'2013-08-10'
and SubjectName='oop'
--降序排列desc
order by StudentResult desc end
else
begin
print '较差'
--显示前名成绩 当天 oop
select top 3 * from Result,Subject
where result.SubjectId=Subject.SubjectId
and ExamDate>='2013-08-09'
and ExamDate <'2013-08-10'
and SubjectName='oop'
--降序排列desc
order by StudentResult asc
end

(3)while循环语句

语法

while(条件)

  begin

    语句或语句块

  [brwak | continue]

end

(4)case多分支语句

case

  when 条件1 then 结果 1

  when 条件2 then 结果2

  [else 其他结果]

end

declare @date datetime
select @date = max(Examdate) from result
inner join Subjiect on result.SubjectNo=Subjiect.SubjiectNo
where SubjectName='java logic' select 学号=StudentNO, 成绩= case
when StudentResult >90 then 'A'
when StudentResult >80 then 'B'
when StudentResult >80 then 'C'
when StudentResult >80 then 'D'
else 'A'
end
from result
inner join Subjiect on result.SubjectNo=Subjiect.SubjiectNo
where SubjectName='java logic'

SQL 编程的更多相关文章

  1. sqL编程篇(三) 游标与存储过程

    sql编程2 游标与存储过程 sql编程中的游标的使用:提供的一种对查询的结果集进行逐行处理的一种方式不用游标的处理解决方式:逐行修改工资update salar set 工资=‘新工资’ where ...

  2. SQL编程篇 (二) 定义与流程控制

    分类: sql编程:标准的sql 编程 * 纯sql 在标准的编程中又分为 sqlserver-->T-sql oracle-->pl-sql(扩展) 变量:在使用变量之前先定义 声明变量 ...

  3. 数据库之SQL编程

    定义局部变量 declare @num int 途径一: 途径二: set 和select赋值方式的区别 唯一区别,如果从数据库表中获取数据,只能用 select ) select @name =st ...

  4. SQL Server(六)——索引、视图和SQL编程

    1.索引 添加索引,设计界面,在任何一列前右键--索引/键--点击进入添加某一列为索引 2.视图 视图就是我们查询出来的虚拟表 创建视图:create view 视图名 as SQL查询语句,分组,排 ...

  5. sql编程小结

    对照mysql5.1手册,对这几天学的sql编程进行小结,主要涉及触发器.存储过程.权限管理.主从分离等,权当抛砖引玉,高手请略过. 一.触发器 通俗的说就是在指定的数据表增删改的前或后触发执行特定的 ...

  6. ORACLE PL/SQL编程详解

    ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...

  7. SQL编程之高级查询(子查询)以及注意事项

    SQL编程之高级查询(子查询)以及注意事项   1.什么是子查询? 当一个查询是另一个查询的条件时,称之为子查询.子查询可以使用几个简单命令构造功能强大的复合命令.子查询最常用于SELECT-SQL命 ...

  8. SQL Server数据库(SQL Sever语言 函数以及SQL编程)

    1.数学函数:操作一个数据,返回一个结果 --去上限: ceiling ☆select ceiling(price) from car --去下限:floor ☆select floor(price) ...

  9. 自从学了SQL编程,哪里不会点哪里!!!

    在学习SQL编程前,先给大家分享几个段子吧,咱先乐呵乐呵! <桃花庵--程序员版> 写字楼里写字间,写字间中程序员:程序人员写程序,又将程序换酒钱: 酒醒只在屏前坐,酒醉还来屏下眠:酒醉酒 ...

  10. Oracle数据库编程:PL/SQL编程基础

    2.PL/SQL编程基础: PL/SQL块:        declare        定义部分        begin        执行部分        exception        异 ...

随机推荐

  1. [deviceone开发]-do_SlideListView的简单示例

    一.简介 利用提供的SlideListVIew实现那种cell可以滑动露出底部按钮的功能 主要组件:do_slidelistview 二.效果图 三.相关讨论 http://bbs.deviceone ...

  2. 使用three.js创建3D机房模型-分享一

    序:前段时间公司一次研讨会上,一市场部同事展现了同行业其他公司的3D机房,我司领导觉得这个可以研究研究,为了节约成本,我们在网上大量检索,最后找到一位前辈的博文[TWaver的技术博客],在那篇博文的 ...

  3. jQuery构造函数init参数分析(三)

    分析完了字符串情况剩下的就不多了. 5.参数selector是函数 这个就是很容易想到了,首先说一下dom加载.我们通常在head里面写脚本的时候需要等待文档加载在进行处理,js是这么写的 windo ...

  4. 一个类似backbone路由的纯净route ( 前端路由 客户端路由 backbone路由 )

    大家用backbone.angular,可能都习惯了内置的路由,这两个框架的路由都是非常优秀的,强大而简单. 客户端(浏览器)路由原理其实比较简单,其实就是监听hash的变化. 在之前的架构探讨中,说 ...

  5. SharePoint 2013 VSS 编写器

    Windows Server 包含的 VSS 是提供内置卷影复制功能的基础结构.VSS 创建的卷影副本扩展了存储管理员的磁带备份存档解决方案,提供可轻松.有效创建和还原的高保真时间点副本,从而帮助简化 ...

  6. spring-hellow word

          在大三的时候开了一门JAVAEE SSH框架,属于软件方向选修课程,虽然本人是搞硬件的,但是也选了这么课程,因为我在想有一天物联网也会走上大门户的,所以果断去蹭课了,时至今日,重新拾起来, ...

  7. GPS定位为什么要转换处理?高德地图和百度地图坐标处理有什么不一样?

    GPS定位为什么要转换处理?高德地图和百度地图坐标处理有什么不一样? 先了解一下 高德地图 采用: GCJ-02 (不可逆) 百度百科: http://baike.baidu.com/link?url ...

  8. oracle中Window和Window Group

    参考文献: http://www.5ienet.com/note/html/scheduler/oracle-scheduler-using-window.shtml window概念 此Window ...

  9. Kotlin语法(其他)

    三.其他 [TOC] 1. 多重声明 有时候可以通过给对象插入多个成员函数做区别是很方便的: val (name, age) = person 多重声明一次创建了多个变量.我们声明了俩个新变量:nam ...

  10. iOS 用webView加载后台返回的HTML数据

    返回数据: <p><b>\U516c\U53f8\U7b80\U4ecb</b></p><p>    \U5584\U76c8\U7ba1\ ...