SQL 编程
用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 | 变量保持原值 |
- 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 编程的更多相关文章
- sqL编程篇(三) 游标与存储过程
sql编程2 游标与存储过程 sql编程中的游标的使用:提供的一种对查询的结果集进行逐行处理的一种方式不用游标的处理解决方式:逐行修改工资update salar set 工资=‘新工资’ where ...
- SQL编程篇 (二) 定义与流程控制
分类: sql编程:标准的sql 编程 * 纯sql 在标准的编程中又分为 sqlserver-->T-sql oracle-->pl-sql(扩展) 变量:在使用变量之前先定义 声明变量 ...
- 数据库之SQL编程
定义局部变量 declare @num int 途径一: 途径二: set 和select赋值方式的区别 唯一区别,如果从数据库表中获取数据,只能用 select ) select @name =st ...
- SQL Server(六)——索引、视图和SQL编程
1.索引 添加索引,设计界面,在任何一列前右键--索引/键--点击进入添加某一列为索引 2.视图 视图就是我们查询出来的虚拟表 创建视图:create view 视图名 as SQL查询语句,分组,排 ...
- sql编程小结
对照mysql5.1手册,对这几天学的sql编程进行小结,主要涉及触发器.存储过程.权限管理.主从分离等,权当抛砖引玉,高手请略过. 一.触发器 通俗的说就是在指定的数据表增删改的前或后触发执行特定的 ...
- ORACLE PL/SQL编程详解
ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...
- SQL编程之高级查询(子查询)以及注意事项
SQL编程之高级查询(子查询)以及注意事项 1.什么是子查询? 当一个查询是另一个查询的条件时,称之为子查询.子查询可以使用几个简单命令构造功能强大的复合命令.子查询最常用于SELECT-SQL命 ...
- SQL Server数据库(SQL Sever语言 函数以及SQL编程)
1.数学函数:操作一个数据,返回一个结果 --去上限: ceiling ☆select ceiling(price) from car --去下限:floor ☆select floor(price) ...
- 自从学了SQL编程,哪里不会点哪里!!!
在学习SQL编程前,先给大家分享几个段子吧,咱先乐呵乐呵! <桃花庵--程序员版> 写字楼里写字间,写字间中程序员:程序人员写程序,又将程序换酒钱: 酒醒只在屏前坐,酒醉还来屏下眠:酒醉酒 ...
- Oracle数据库编程:PL/SQL编程基础
2.PL/SQL编程基础: PL/SQL块: declare 定义部分 begin 执行部分 exception 异 ...
随机推荐
- 小白的CSS基础学习
CSS定义: CSS全称为“层叠样式表 (Cascading Style Sheets)”,它主要是用于定义HTML内容在浏览器内的显示样式. CSS代码语法: css样式选择组成部分:选择符+声明( ...
- 浅谈TypeScript
TypeScript为JavaScript的超集(ECMAScript6), 这个语言添加了基于类的面向对象编程.TypeScript作为JavaScript很大的一个语法糖,本质上是类似于css的l ...
- sass高级语法
github地址:https://github.com/lily1010/sass/tree/master/course03 用到的sass语法是: sass --watch test.scss:te ...
- 解决方案:带格式化文本控件( RichText)的模板如果在InfoPath的浏览器中加载可能出现 COM 组件的80040154错误
建议大家在微软的组件出现问题时,在GOOGLE上搜索解决方案,一般来说,总有结果: 带格式化文本控件( RichText)的模板如果在InfoPath的浏览器中加载,可能出现 COM 组件的80 ...
- 基于 VLC 的 Android 多媒体解决方案
前段时间项目中需要在 Android 中播放视频.流媒体.查看监控,就研究了一下 Android 多媒体解决方案. 查找了一下,大致有如下几种: Android MediaPlayer FFmpeg ...
- Android Animation学习(四) ApiDemos解析:多属性动画
Android Animation学习(四) ApiDemos解析:多属性动画 如果想同时改变多个属性,根据前面所学的,比较显而易见的一种思路是构造多个对象Animator , ( Animator可 ...
- JDBC连接MySQL 方法 实例及资料收集
JDBC连接MySQL 方法 实例及资料收集 准备工作 首先,安装MySQL,配置用户名和密码,创建数据库. 可参见之前的文章: http://www.cnblogs.com/mengdd/p/315 ...
- 【C语言】C语言局部变量和全局变量
目录: [局部变量] · 定义 · 作用域 · 生命周期 · 用static修饰局部变量 [全局变量] · 定义 · 作用域 · 生命周期 1.局部变量 · 定义 在函数(代码块)内部定义的变量称为局 ...
- iOS开发之邓白氏编码申请流程
要申请企业证书,必须先申请邓白氏编码,在苹果网站有一个免费申请邓白氏编码的链接:https://developer.apple.com/program/enroll/dunsLookupForm.ac ...
- Android IPC机制之ContentProvider
ContentProvider:即内容提供者,用来管理数据,并对外暴露一个uri,外部可以通过uri和数据建立联系并获取或操作数据: 服务端:1.首先创建一个数据库类,并创建一个表:2.创建一个Con ...