数据库编程

标识符
❖标识符分类
 常规标识符(严格遵守标识符格式规则)
 界定标识符(引号”或方括号[])
❖标识符格式规则
 (1)字母或_、 @、#开头的字母数字或_、 @、 $序列
 (2)不与保留字相同
 (3)长度小于128
 (4)不符合规则的标识符必须加以界定(双引号””或
方括号[])

表达式
❖数据类型
 整数数据、字符数据、货币数据、日期和时间数据、
二进制字符串等
❖变量
 局部变量
局部变量是用户定义,必须以@开头,在程序内声明,
并只能在该程序内使用。
(1)局部变量的声明
DECLARE @<局部变量名> <数据类型>[,…n]
(2)局部变量的赋值
SET|SELECT @<局部变量名>=<表达式>

例1-1创建一个@myvar 变量,然后将一个字符串
值放在变量中,最后输出 @myvar 变量的值。
DECLARE @myvar char(20)
select @myvar = 'This is a test'
SELECT @myvar

❖例1-2SET语句和SELECT语句为局部变量赋值。
DECLARE @var1 datetime,@var2 char(10)
SET @var1 = getdate()
SELECT @var2 = convert(char(10),@var1,102)
Select @var2 --显示@var2

全局变量
全局变量是SQL Server系统内部使用的变量,以@@开头。
 全局变量不是由用户的程序定义的,它们是在服务器
级定义的。
 用户只能使用预先定义的全局变量。
例1-3 用全局变量查看SQL Server的版本、当前
所使用的SQL Server服务器的名称以及所使用的
服务名称等信息。
print '目前所用SQL Server的版本信息如下:'
print @@VERSION
print '目前SQL Server服务器名称为:
'+@@SERVERNAME
print '目前所用服务器为: '+@@SERVICENAME

选择结构
❖IF ELSEIFELSE语句用来判断当某一条件成立时执行某段程
序,条件不成立时执行另一段程序。其中, ELSE子句
是可选的, SQL Server允许嵌套使用IFELSE语句,
而且嵌套层数没有限制。
 语法格式
IF <布尔表达式>
<SQL语句>|<语句块>
[ELSE
<SQL语句>|<语句块>]

例:查找有没有学号为201215120的学生,有的话显示学
生信息,没有显式没找到。
IF EXISTS( SELECT * FROM STUDENT WHERE SNO = ‘201215120’)
BEGIN
SELECT *
FROM STUDENT
WHERE SNO = ‘201215120END
ELSE
PRINT ‘没找到! ’
EXISTS 子查询 如果子查询结果非空返回真,否则返回假
CASE语句
CASE语句可以计算多个条件式,并将其中一个符
合条件的结果表达式返回。 CASE语句按照使用形
式的不同,可以分为简单CASE语句和搜索CASE
语句。
 简单CASE语句
CASE 表达式
WHEN 表达式的值1 THEN 返回表达式1
WHEN 表达式的值2 THEN 返回表达式2ELSE 返回表达式n
END
例:从学生表STUDENT中,选取SNO,SSEX,如果SSEX为
‘男’则输出‘ M’,如果为‘女’,则输出‘ F’。
SELECT SNO,SSEX=
CASE SSEX
WHEN ‘ 男’ THEN ‘M’
WHEN ‘ 女’ THEN ‘F’
END
FROM STUDENT
搜索式
CASE
WHEN 逻辑表达式1 THEN 返回表达式1
WHEN 逻辑表达式2 THEN 返回表达式2ELSE 返回表达式n
END

例:从SC表中查询所有同学选课成绩情况,凡成绩为空者
输出‘未考’、小于60输出‘不及格’ 、小于70输出
‘及格’ 、小于90输出‘良好’ 、大于等于90输出‘优
秀’ 。
SELECT SNO,CNO,GRADE=
CASE
WHEN GRADE IS NULL THEN ‘ 未考’
WHEN GRADE<60 THEN ‘ 不及格’
WHEN GRADE>=60 AND GRADE<70 THEN ‘ 及格’
WHEN GRADE>=70 AND GRADE<90 THEN ‘ 良好’
WHEN GRADE>90 THEN ‘ 优秀’
END
FROM SC

循环结构
❖设置重复执行 SQL 语句或语句块的条件。只要指
定的条件为真,就重复执行语句。可以使用
BREAK 和 CONTINUE 关键字在循环内部控制
WHILE 循环中语句的执行。
WHILE 逻辑表达式
Begin
T-SQL语句组
[break]/*终止整个语句的执行*/
[continue]/*结束一次循环体的执行*/
END

❖例 求1 ~10的和
DECLARE @X int, @sum int
SET @X=0
SET @sum = 0
WHILE @x<10
BEGIN
SET @X=@X+1
SET @sum = @sum + @X
PRINT ‘sum='+convert(char(2),@sum) --类型转换函数convert
END

等待语句
❖等待语句挂起一个程序中语句的执行,直到指定
的某一时间点到来或在一定的时间间断之后才继
续执行。
❖语法格式:
 其中,时间间隔以及时间均为datetime类型,格式为
“ hh:mm:ss”,分别说明等待的时间长度和时间点,在
time内不能指定日期。
例1 设置等待一小时后执行查询。
begin
waitfor delay '1:00:00'
select * from s
end2 设置到十点整执行查询。
begin
waitfor time '10:00:00'
select * from s
end

返回语句
❖RETURN语句
 RETURN语句用于无条件地终止一个查询、存储过程
或者批处理,此时位于RETURN语句之后的程序将不
会被执行。
 语法格式:
RETURN [ integer_expression ]
系统函数
❖标量函数
函数分类 解释
配置函数 返回当前的配置信息
游标函数 返回有关游标的信息
日期和时间函数 对日期和时间输入值进行处理
数学函数 对作为函数参数提供的输入值执行计算
元数据函数 返回有关数据库和数据库对象的信息
安全函数 返回有关用户和角色的信息
字符串函数 对字符串( char 或 varchar)输入值执行操作
系统函数 执行操作并返回有关SQL Server中的值、对象和设置的信息
系统统计函数 返回系统的统计信息
文本和图像函数 对文本或图像输入值或列执行操作,返回有关这些值的信息
日期和时间函数
函数 参数 功能
DATEADD ( datepart,number,date) 以datepart指定的方式,返回date加上
number之和
DATEDIFF ( datepart,date1,date2) 以datepart指定的方式,返回date2与date1
之差
DATENAME ( datepart,date) 返回日期date中datepart指定部分所对应的
字符串
DATEPART ( datepart,date) 返回日期date中datepart指定部分所对应的
整数值
DAY ( date) 返回指定日期的天数
GETDATE () 返回当前的日期和时间
MONTH ( date) 返回指定日期的月份数
YEAR ( date) 返回指定日期的年份数
❖例: 使用日期时间函数计算自己现在的年龄
❖例: 返回指定日期中年/月/日的整数。
SELECT ‘ 年龄’=
DATEDIFF(YY,’1979-06-01’,GETDATE())
SELECT YEAR(‘2016-01-08’)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值