用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. js异步方式

    node.js的例子 1.回调 创建 main.js 文件 var fs = require("fs"); fs.readFile('input.txt','utf8', func ...

  2. ABAP可以提高效率的小语法

    ADD dobj1 TO dobj2. Effect This statement has the same effect as the statement COMPUTE dobj2 = dobj2 ...

  3. PCM(Pulse-code modulation)脉冲编码调制

    在音频处理中,我们会经常听到PCM数据,那么什么是PCM数据呢? PCM数据就是模拟信号经过PCM以后的数字信号,PCM就是把音频信号由模拟信号(时间连续,取值连续)转为数字信号(时间离散,取值离散) ...

  4. 使用TextKit

    使用TextKit TextKit是在iOS7中新出的,实现了对CoreText的封装,使用起来更加方便. 虽然是新出的,但也不代表立马就能上手-_-!!,TextKit可以实现图文混排效果,很好用. ...

  5. NSURLSession从网络上下载资源,此程序下载的是视频

    #import "ViewController.h" @interface ViewController ()<NSURLSessionDelegate, NSURLSess ...

  6. Android自定义控件2--优酷菜单界面初始化

    本文开始将逐步去实现下面优酷菜单的效果: 本文地址:http://www.cnblogs.com/wuyudong/p/5912538.html,转载请注明源地址. 本文首先来实现优酷菜单界面初始化工 ...

  7. 【代码笔记】iOS-判断字符串是否为空

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...

  8. AndroidStudio添加依赖库

    以Gson为例 Step1:点击下图中的入口,进入ProjectStructure Step2: 在app项中选择Dependencies窗口,点击右侧的加号 Step3:在搜索框中输入gson,点击 ...

  9. 如何利用Pre.im分发iOS测试包

    大众创新万众创业,在移动互联网的风口,移动APP开发与测试发展方兴未艾,受到了越来越多的重视.相较 iOS,Android 的开发环境更加开放.Android 开发者要测试应用时,只需发个 APK 安 ...

  10. yii2 gridview 是否显示某列案例

    作者:白狼 出处:http://www.manks.top/article/yii2_gridview_visible 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给 ...