—————————————————case判断———————————————————————————
--case用于不等的判断
--优化:低于60分的学生提示不及格
select tsname,
isnull(
case when tEnglish<60 then '不及格' else CAST(tEnglish as varchar(10)) end
,'缺考')
from TblStudent
left join TblScore on TblStudent.tSId=TblScore.tSId
--判断等的情况
use hem09
select * from Employee
update Employee set eGender=1 where eName='sk'
--将性别显示成男和女
select *,case egender when 0 then '男' when 1 then '女' end
from Employee
--有一个财务流水表
--MoneyFlow fid fTitle fMoney
create table MoneyFlow
(
fid int identity(1,1) primary key not null,
ftitle nvarchar(10),
fmoney money
)
select * from MoneyFlow
insert into MoneyFlow values('发工资',1000)
insert into MoneyFlow values('奖金',500)
insert into MoneyFlow values('捡钱',200)
insert into MoneyFlow values('请客',-1500)
insert into MoneyFlow values('洗脚',-3000)
select fid,ftitle,case when fmoney>0 then fmoney else 0 end as '收入',
case when fmoney<0 then ABS(fmoney) else 0 end as '支出'
from MoneyFlow
—————————————————触发器———————————————————————————
--触发器
--在保存数据时,完成备份
select * from TblOrders
create trigger bak_order
on tblorders
after insert
as
begin
insert into tblOrders_bak(oname,ocount,oprice)
select oname,ocount,oprice from inserted
end
alter trigger update_order
on tblorders
instead of update
as
begin
update tblOrders_bak set ocount=(select ocount from inserted)
where oname in (select oname from inserted)
end
select * from TblOrders
where oname='ff'
select * from tblOrders_bak
where oname='ff'
drop trigger update_order
insert into TblOrders values('ff',10,20)
update TblOrders set ocount=20 where oname='ff'
—————————————————游标———————————————————————————
----============游标 --游标的定义 declare s1 cursor for select oname,ocount,oprice from tblorders --在访问游标中某行的数据时,需要声明变量 declare @name nvarchar(10) declare @count int declare @price money --打开游标 open s1 --通过游标从结果集中取数据,注意:每次取一行的值 fetch s1 into @name,@count,@price while(@@FETCH_STATUS=0) begin set @price=@price+RAND(100) update TblOrders set oprice=@price where oname=@name and ocount=@count fetch s1 into @name,@count,@price end --关闭游标 close s1 --释放游标 deallocate s1
说点什么
欢迎讨论