6、数据库端程序设计教程.ppt
文本预览下载声明
批处理和事务
变量的定义和使用
流程控制语句
函数
触发器
存储过程
游标
临时表;8.1 批处理和事务;使用事务可以保证一组SQL语句的执行,要么全部成功,若有一句语句不成功,则全部语句均不执行。
事务的开始使用BEGIN TRANSACTION
事务的结束可以是:
COMMIT:提交,即所有语句均执行
ROLLBAK:回滚,即取消所有语句
例:用一个事务完成下列工作
students中address全部为ShangHai
删除‘000005’号学生(先添加)
分别用COMMIT和ROLLBACK结束该事务。;操作步骤是:
在查询分析器中运行:
1.START TRANSACTION
UPDATE students SET address=‘ShangHai’
DELETE FROM students WHERE id=‘000005’
2.SELECT * FROM students --观察执行结果
3.ROLLBACK --回滚上列修改
4.SELECT * FROM students -- 观察执行结果
重复以上步骤,ROLLBACK换成COMMIT。;8.2 变量的定义和使用;例:在查询分析器中输入下列内容,运行后看结果。
1.DECLARE @vname varchar(10)
SET @vname=‘WangWeiHua’
PRINT @vname 或SELECT @vname
2.SET语句可以为:
SELECT @vname=name FROM students WHERE id=‘000001’
若SELECT返回多行,则最后一行的name赋给变量vname;全局变量;8.3 流程控制语句(1) IF语句;DECLARE @a INTEGER
DECLARE @b INTEGER
SELECT @a=AVG(grade) FROM students a,grade b
WHERE a.id=b.id and a.sex=0
SELECT @b=AVG(grade) FROM students a,grade b
WHERE a.id=b.id and a.sex=1
if @a@b
PRINT ‘女同学平均成绩高于男同学’
else
PRINT ‘男同学平均成绩高于男同学’;(2) 循环语句; WHILE (SELECT AVG(grade) FROM grade)85
BEGIN
UPDATE grade SET grade=99
WHERE grade *1.199
UPDATE grade SET grade=grade*1.1
WHERE grade *1.1=99
END
注意两个Update语句顺序不能颠倒,颠倒后85分的学生加一次分变成了99分,而应该是85+8.5;WHILE (SELECT AVG(grade) FROM grade)85
BEGIN
UPDATE grade SET grade=99
WHERE grade *1.199
UPDATE grade SET grade=grade*1.1
WHERE grade *1.1=99
IF (SELECT COUNT(*) FROM GRADE
WHERE GRADE=99)0
BREAK
END;(3) CASE表达式;SELECT subid,grade=CASE
WHEN grade100 AND grade=90 THEN 优
WHEN grade90 AND grade=80 THEN 良
WHEN grade80 AND grade=70 THEN 中
WHEN grade70 AND grade=60 THEN 及格
ELSE 不及格
END
FROM grade
成绩列列名显示为grade, “grade= ”省略列名显示为“无列名”。;(4) RETURN和注释;8.4 函数(1) 数学 函数;(2) 字符串函数;关于字符串长度;(3) 日期函数;(4) 系统函数;(5) 其他常用函数;例:查询学生编号,姓名和年龄
select id,name,year(getdate())-year(birthday) as age
from students
例:查询学生编号,姓名和电话,若电话为空,不显示。
Select id,name,isnull(telephone,’’) as telephone
from students
例:把姓名分成姓和名两列显示
select left(na
显示全部