用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. HTML5 模拟现实物理效果,感受 Web 技术魅力

    Ball Pool 是一个基于 HTML5 技术的实验,模拟现实物理效果,让你在 Web 中感受自然物体的运动.玩法介绍:可以随意拖动圆球.点击页面背景.晃动浏览器.双击页面背景或者按住鼠标左键,有不 ...

  2. [js开源组件开发]tip提示组件

    tip提示组件 常见的应用场景中,总是难免会遇到提示信息,比如显示不完全时需要鼠标移上去显示title,比如验证时的错误提示,比如操作按钮的辅助说明等,所以我独立出来了一个小的js组件,tip提示组件 ...

  3. JavaScript中with语句的理解

    with语句的作用是暂时改变作用域链.减少的重复输入. 其语法结构为: with(object){ //statements } 举一个实际例子吧: with(document.forms[0]){ ...

  4. js 将json对象转成字符串

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 利用IIS导出,导入快速部署 web站点

    部署负载均衡站点的时候会创建多个站点拷贝.用脚本可以提高效率,并且减少错误 1 以管理员身份运行CMD 2 Cd C:\Windows\System32\inetsrv 3 导出指定的应用程序池 ap ...

  6. 使用Reaver对WPS加密网络进行暴力破解

    WPS状态探测 探测开启了WPS功能的AP,WPS Locked状态为NO的表示开启了WPS功能. wash -i wlan0mon PIN码获取 reaver -i wlan0mon -b MAC地 ...

  7. Kotlin语法(其他)

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

  8. JavaScript学习03 JS函数

    JavaScript学习03 JS函数 函数就是包裹在花括号中的代码块,前面使用了关键词function: function functionName() { 这里是要执行的代码 } 函数参数 函数的 ...

  9. leetcode 第188题,我的解法,Best Time to Buy and Sell Stock IV

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  10. Android APK的安装

    打开packages\apps\PackageInstaller下的清单文件 <?xml version="1.0" encoding="utf-8"?& ...