---------------------视图:对查询语句的封装------------------ --视图就是对sql语句的封装 create view vw_Emps as select t1.AreaID, t1.AreaName, t2.AreaNAme as Area from TblArea as t1 inner join TblArea as t2 on t1.AreaPId=t2.AreaId go select * from vw_Emps --视图并不存储数据,视图只是将sql语句封装了一下,所以最执行的还是sql语句, --若是表中的数据发生了变化,视图的结果也就变化了 --降低了数据库的的复杂程度 --防止未经许可的用户访问的敏感程度 --修改视图 alter view vw_Emps --删除视图 drop view vw_Emps go alter view vw_Emps1 as select Top 90 percent * from TblArea order by AreaId desc--order by 失去意义 go select * from TblArea order by AreaId desc --只能在查询视图之外用order by排序
事务:两个语句同生共死。如银行转账,一个帐号有资金的增加,必须有另一个帐号的资金的减少
select * from bank --手动开启一个事务 begin tran declare @sum int=0; update bank set balance=balance-1000 where cId='0002' set @sum=@sum+@@ERROR update bank set balance=balance+1000 where cId='0001' set @sum=@sum+@@ERROR if @sum<>0 begin rollback tran end else begin commit tran end