MSSQL总结 - 图文(5)

2020-02-22 11:06

fromResult

whereStudentResult<60 groupbyStudentNo go

updatePunishsetAdvice= ( ) go

selectStudentNo,FailCount,Advice fromPunish

case end

whenFailCount>3 then'开除学籍' whenFailCount>2 then'肄业处理' else'给予警告'

存储过程

1

--? 创建存储过程,查询Java Logic最近一次考试平均分以及未通过考试的学员名单

ifexists(select*fromsysobjectswherename='usp_Result_AvgFail_Output') dropprocusp_Result_AvgFail_Output go

createprocusp_Result_AvgFail_Output as ')

--print @subNo declare@subNoint

set@subNo=(selectSubjectIdfromSubjectwhereSubjectName='深入.NET平台和C#编程@avgScorefloatoutput, @failCountintoutput

go

declare@avgfloat,@failCountint

execusp_Result_AvgFail_Output@avgoutput,@failCountoutput

print'深入.NET平台和C#编程平均值为:'+cast(@avgasvarchar(8)) print'不及格人数为:'+convert(varchar(8),@failCount)

select@failCount=COUNT(*) fromStudent

whereStudentNoin(selectStudentNofromResultwhereSubjectResult<60) select@avgScore=avg(SubjectResult) fromResult

whereSubjectId=@subNo and

ExamDate=(selectMAX(ExamDate)fromResultwhereSubjectId=@subNo)

触发器

USE[ClassDB] GO

/****** Object: Trigger [dbo].[trig_classinfo_insert] Script Date: 2016/8/25 9:11:16 ******/ SETANSI_NULLSON GO

SETQUOTED_IDENTIFIERON GO

ALTERtrigger[dbo].[trig_classinfo_insert] on[dbo].[classinfo] afterinsert as

updateclasetclanum+=1

wherecid=(selectcidfrominserted)

createtriggertrig_classinfo_delete onclassinfo afterdelete as

select*fromdeleted updateclasetclanum-=1

wherecid=(selectclassidfromdeleted)

deletefromclassinfowherestuid='0004'

触发器的作用是什么?

在 SQL Server里,可以用两种方法来保证数据的有效性和完整性:约束(CHECK)和触发器(TRIGGER)。 触发器是一种特殊类型的存储过程,也是提前编译好的SQL 语句的集合。当对数据表实施插入、修改、删除操作时,触发器会被自动执行,以检查数据的处理是否符合数据的有效性和完整性。

事务(Transaction)

概念:

作为单个逻辑工作单元的一系列操作,多个操作作为一个整体向系统提交,要么都执行,要么都不执行

特性:

事务必须具备以下四个属性,简称ACID属性: 1. 原子性(Atomicity)

a) 事务是一个完整的操作,事务的各步骤操作是不可分割的(原子性),要么都执行,要么

都不执行

2. 一致性(Consistency)

a) 当事务完成时,数据必须处于一致状态

3. 隔离性(Isolation)

a) 当事务之间彼此隔离、独立,它不应以任何方式依赖于或影响其他事务 4. 永久性(Durability)

a) 事务完成后,它对数据库的的修改被永久保持

使用TSQL语句管理事务

开始事务:begin transaction 提交事务:commit transaction

回滚(撤销)事务:rollback transaction

--创建表

ifexists(select*fromsysobjectswherename='bank') droptablebank CREATETABLEbank ( )

insertintobank(bankCard,customerName,balance) values('5412548796541236547','张三',1000),

begintransaction--开始事务

declare@errotSumint--声明变量:统计错误

('5412548796541564212','李四',1)

bankCardchar(19)primarykeycheck (len(bankCard)=19), customerNamevarchar(10)notnull,

--check只是在写入数据时才约束,但是插入的时候可以为空 balancemoneycheck(balance>=1)notnull

set@errotSum=0 ---初始化错误次数

updatebanksetbalance-=800 wherebankCard='5412548796541236547' set@errotSum+=@@ERROR

updatebanksetbalance+=800 wherebankCard='5412548796541564212' set@errotSum+=@@ERROR

if@errotSum>0

select*frombank

begin end begin end

print'转账成功' committransaction print'转账失败' rollbacktransaction

else

分页

Select..not in..

ifexists(select*fromsysobjectswherename='usp_Student_page') dropprocusp_Student_page go

createprocusp_Student_page as

declare@totalint select@total=count(*) fromStudent

if(@total<(@pageSize*@pageCurrent))

begin

if(@total%@pageSize<>0)

set@pageTotal=@total%@pageSize+1

@pageTotalintoutput, @pageCurrentint, @pageSizeint


MSSQL总结 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:[精品]福建省永春一中等四校2018届高三上学期第一次联考生物试卷

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: