as begin
select@saving=avg(grade) fromsc
wheresno=@sno groupbysno end
declare@avgint set@avg= 0
execavergrade'02',@avgout select@avg平均分
dropprocedureavergrade
3.函数。
函数必须返回指定类型,可以返回表,有输入参数。
创建成绩转换函数,实现百分制成绩与优、良、中、及格、不及格五个等级的换算.
CREATE FUNCTION grade_trans(@grade FLOAT) RETURNS CHAR(16) AS BEGIN
DECLARE @class CHAR(16) SELECT @class = CASE
WHEN @grade IS NULL THEN '还没参加考试' WHEN @grade < 60 THEN '不及格'
WHEN @grade >= 60 and @grade < 70 THEN '及格' WHEN @grade >= 70 and @grade < 80 THEN '中等' WHEN @grade >= 80 and @grade < 90 THEN '良好' ELSE '优秀!' END
RETURN(@class) END
select dbo.grade_trans(88)
查询某个院系所有学生所选的每门课的平均成绩。
createfunctionaver(@pchar(10))returnstable as return (
selectcno课程号,avg(grade)平均成绩
fromstudent,sc
wherestudent.sno=sc.snoandsdept=@p
select*fromdbo.aver('cs')
dropfunctionaver
groupbycno )
求某个院系选修了某门课的学生人数。
createfunctionpeople(@p0char(10),@p1char(4))returnsint as begin
declare@renshuint select@renshu=( )
return@renshu
selectCOUNT(*)选课人数 fromstudent,sc
wherestudent.sno=sc.snoandcno=@p1andsdept=@p0
end
selectdbo.people('cs','2')
dropfunctionpeople
4.触发器。
Create trigger XXX On table
[ for /after /instead of ] Insert,delete,update
As 触发器实际需要触发内容
For:用法同after
After:执行完sql语句之后进行检查,检查不符合条件的话回滚 roll back 。after触发器只能在表上指定。
Instead of:指定触发器时代替SQL语句执行的,其优先级高于触发语句的操作。 例:
为 student表建立触发器T1,当插入或更新表中的数据时,保证所操作的记录的sage值大于0。 createtriggerT1 onstudent
afterinsert,update as begin
declare@sageint
select@sage=inserted.sagefrominserted if(@sage< 0) begin
print'年龄错误' rollbacktransaction
end
end
updatestudent
setsage= 38 wheresno='01'
insertintostudent(sno,sname,ssex,sage,sdept) values('2007011','张三','男',55,'ma')
为student表建立触发器T2,禁止删除编号为“0001”的学生。 insertintostudent(sno,sname,ssex,sage,sdept) values('0001','傻大个','男',19,'is')
createtriggerT2 onstudent afterdelete as begin
declare@snochar(10)
select@sno=deleted.snofromdeleted if(@sno='0001')
begin
print'禁止删除学号0001信息' rollbacktransaction
end
end
deletestudent wheresno='0001'
droptriggerT2
第十章
1.事务。
是一系列的数据库操作,是数据库应用程序的基本逻辑单元。
是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割
的工作单元。 2.事务的四个特性。
原子性:事务是数据库的逻辑工作单位,事务总包括的诸操作要么全做,要么全不做。 一致性:数据库只包含成功事务提交的结果,就说数据库处于一致性状态。
隔离性:一个事务的执行不能被其他事务干扰。即一个事务的内部操作及使用的数据对
其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
持续性:指一个事务一旦提交,他对数据库中数据的改变就应该是永久性的。
事务是恢复和并发控制的基本单位。 3.数据库恢复。
把数据库从错误状态恢复到某一已知的正确状态的功能。
1. 运行事务非正常中断。 2. 数据丢失。
4.故障种类。
运行事务非正常中断----------恢复-事务撤销。 系统故障、介质故障、计算机病毒。
5.恢复实现技术。
数据恢复的基本原理:冗余。
建立冗余数据最常用的技术是数据转储和登记日志文件。
6.数据转储。
静态转储:是在系统中无运行事务时进行的转储操作。
动态转储:是指转储期间允许对数据库进行存取或修改。即转储和用户事务可以并发执
行。
海量转储:每次转储全部数据库。
增量转储:指每次只转储上一次转储后更新过的数据。
7.日志文件。
是用来记录事务对数据库的更新操作的文件。