T-SQL几个简单的操作

视图

咱们先来了解下视图到底是什么意思,顾名思义,用简单的视觉方式展现复杂的内容

有什么功能呢,

各位应该还记得咱们之前练习的那个小小的数据库superise,里面有这么四张表,分别是:

student,Course,Scoure,Teacher

那咱们在做练习或者是给你一个数据库要你去修改,而你却没办法理清这个库里的内容时,

咱们通常都会这样,第一种

1 select *from Student
2 select *from Score
3 select *from Course
4 select *from Teacher

或者是这样,第二种

1 select *from Student,Teacher,Score,Course

咱们来看一下结果怎么样,来大家往这里看,第一种情况

第二种情况

第二张是什么  咳咳,开启装X模式   上图第二种情况专业术语叫:笛卡尔积  就是把所有的匹配情况都给你匹配了一遍,也就是C#里面的穷举,想不到的话,再提醒一下,百鸡百钱,可以给他去重一下:distinct

视图就是下图这样

通过鼠标的点击可以勾选你所想要看到的内容,无比方便,当多个人需要看的时候只需要在数据库里读取视图进行勾选即可,重要的是只可查询、读取,不可以增删改

对了,忘了说一个重要的事儿,语句结构

1 create view 创建的视图名字
2 as
3 ................T-SQL查询语句.................. 

并且,并且,查询的结果中不可以有重复列

====================================================================

====================================================================

事务

有这么一个老的不能再老的梗,能简单的解释这个意思

渣男去ATM去存钱,遇上了一个美女要取钱,渣男随即有了一个美妙的想法:搭讪,今儿晚上有的玩儿了!  恰巧这美女也不是什么善茬儿,说:帅哥,你看,前面排队的那么多,你存钱,我取钱,你把钱存进银行,我也是从银行取钱,你直接把钱给我,咱俩互补一下呗。渣男一阵兴奋,寻思这姑娘挺开放啊,想也没想立马答应了,随手把钱给了美女,美女转身就走,渣男一看到手的肉要飞,立马喊住,说跟美女有缘分,要跟美女要电话,美女说:可以,但是我有一个条件“离我20cm,给你两分钟时间,不动手动脚不动嘴能碰到我我现在就跟你走”,渣男急火攻心也没相处什么办法,美女随机消失在人流中............

咳咳,所以,提醒各位帅哥们,不要光看段子.....................

用程序员的逻辑思维来讲,以上条件是不成立的,因为银行在这个段子中虽然是第三方,但是毕竟他们两个人的账户不同,所以以上条件是不许执行的,那现在咱们开始正题

在你修改表格输入内容的时候很有可能是输入多句,比方说A转账给B,A的钱是先提取到银行后台,再由银行后台把钱转入的B的账户中,那如果B的账户输入有误,就不会转进去,但是用咱们先前的方式是可以把A的钱提取到银行的,但是转入不到B的账户中,那钱去哪儿了?所以,咱们需要这么一个叫事务的语句

像下图这样,假如A要赚钱给B10000,B需要接收的钱是10000,而工作人员却把B的帐号输入错误了,那钱就落入了银行而不是B的账户里

如果咱们用事务这个功能呢?

咱们查询下当前表格A

当前是空的

现在咱们就当工作人员大意了,把A的钱取出来要转给B,但是B的账户或者是钱输入错了,不用事务就会出现下面一种情况

现在这种情况就是第一行写进去了,但是第二行没写进去,那就出现了上述的情况    银行人员把A的钱取出来,但是由于B的帐号输入错误,并没有把钱给B转到账户上去,所以,钱落入了银行的口袋,你懂得

那咱们用事务的方法来进行一遍还会出现上述情况么?

现在咱们把table_A中的内容清空 重新用 事务这个方法写入上面的语句

现在清空

现在执行 事务 方法写入代码

咱们再来查看下是不是想以前那样单纯的写入句子,对的执行,错的不执行

很显然,两句都没有写入进去,这样用了事务这个方法就不会出现A转账的金钱流失了

现在开始解释下这个方法为什么这个有意思

 1 begin tran --开始事务监控
 2     被监控的代码
 3     ...
 4     ...
 5 if @@ERROR > 0  -- 记录上面代码的出错次数,默认值是0
 6 begin
 7     rollback tran;  --如果有错,执行这一句,回滚事务,返回到begin tran的位置,当做什么事都没发生
 8 end
 9 else
10 begin
11     commit tran;  --没错,一把将所有代码的执行结果提交
12 end

上述内容总结:保证流程的完整执行

后续还会涉猎有关的SQL中的    锁    或者是  死锁,当然肯定也是一丢丢基本的东西,有关锁的东西,会更新的很慢,大家不必着急

 

 

据说有隐藏内容哦

 

posted @ 2017-03-17 16:41  Jokerpapapa  阅读(423)  评论(0编辑  收藏  举报