T-SQL几个简单的操作
视图
咱们先来了解下视图到底是什么意思,顾名思义,用简单的视觉方式展现复杂的内容
有什么功能呢,
各位应该还记得咱们之前练习的那个小小的数据库superise,里面有这么四张表,分别是:
student,Course,Scoure,Teacher
那咱们在做练习或者是给你一个数据库要你去修改,而你却没办法理清这个库里的内容时,
咱们通常都会这样,第一种
select *from Student
select *from Score
select *from Course
select *from Teacher
或者是这样,第二种
select *from Student,Teacher,Score,Course
咱们来看一下结果怎么样,来大家往这里看,第一种情况
第二种情况
第二张是什么 咳咳,开启装X模式 上图第二种情况专业术语叫:笛卡尔积 就是把所有的匹配情况都给你匹配了一遍,也就是C#里面的穷举,想不到的话,再提醒一下,百鸡百钱,可以给他去重一下:distinct
视图就是下图这样
通过鼠标的点击可以勾选你所想要看到的内容,无比方便,当多个人需要看的时候只需要在数据库里读取视图进行勾选即可,重要的是只可查询、读取,不可以增删改
对了,忘了说一个重要的事儿,语句结构
create view 创建的视图名字
as
................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转账的金钱流失了
现在开始解释下这个方法为什么这个有意思
begin tran --开始事务监控
被监控的代码
...
...
if @@ERROR > 0 -- 记录上面代码的出错次数,默认值是0
begin
rollback tran; --如果有错,执行这一句,回滚事务,返回到begin tran的位置,当做什么事都没发生
end
else
begin
commit tran; --没错,一把将所有代码的执行结果提交
end
上述内容总结:保证流程的完整执行
后续还会涉猎有关的SQL中的 锁 或者是 死锁,当然肯定也是一丢丢基本的东西,有关锁的东西,会更新的很慢,大家不必着急
据说有隐藏内容哦
T-SQL几个简单的操作的更多相关文章
- SqlServer简单的操作XML以及SQl的 try catch等统一格式
1:SqlServer简单的操作XML: ALTER PROCEDURE [dbo].[SP_CRM_FranchiseeRecharge_Money] @Create_By VARCHAR(), @ ...
- salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的.salesforce中的数据库使用的是Force.com 平台的数据库,数据表一行数据可以理解成一个sObject变量 ...
- 下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作
下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作 User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的 ...
- Phoenix(sql on hbase)简单介绍
Phoenix(sql on hbase)简单介绍 介绍: Phoenix is a SQL skin over HBase delivered as a client-embedded JDBC d ...
- 对于超大型SQL SERVER数据库执行DBCC操作
原文:对于超大型SQL SERVER数据库执行DBCC操作 对于数据库维护,主要使用DBCC CHECKDB来实现,以下是对大型数据库的使用说明,小型数据库一般直接使用就可以了: 1.2008(200 ...
- MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题
1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...
- ado.net的简单数据库操作(二)之封装SqlHelperl类
今天我书接上回,接着昨天的ado.net的数据库操作的相关知识来讲哈! 从上篇文章给出的实例来看,你一定会发现,操作数据库其实还挺麻烦的,就连一个最简单的数据库操作语句都要包括 定义数据库连接字符串. ...
- ado.net的简单数据库操作(一)
摘要:接下来的几篇博客将要讲到如何使用ado.net实现简单的数据库操作,包括增删改等内容.首先会介绍基础的数据库操作,然后以一个实例来进行讲解,这个实例会把一个数据表读取到winform上,然后在w ...
- SQL_DML简单的操作
***********************************************声明*************************************************** ...
- 【转载】salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL) salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的.salesfo ...
随机推荐
- Java垃圾回收学习笔记
通常来说,要写Java代码,你基本上都没必要听说垃圾回收这个概念的.这不,对于已经写了5年多Java代码的我来说,我还没有哪次经历说是需要使用垃圾回收方面的知识来解决问题的.但是,我依然督促自己花了几 ...
- DOM基础(一)
在我们刚刚学JavaScript的时候,就应该听说过,JavaScript是由三部分组成的.分别是ECMAScript,DOM和BOM组成的.ECMAScript是JavaScript的核心,它描述了 ...
- I3D Next-Gen Game Development with Unity3D Vol I学习笔记(上)
这部教程主题是讲述如何在Unity中安放模型以及对场景进行优化(面对的是次世代平台).第二章看到一半,看不下,索性直接凭借Maya和Torque的经验自己操作. 看教程总结的原则如下(or tips) ...
- node c++多线程插件 第二天 c++指针
虽然取名叫node多线程插件,但是目前还是在学习c++的情况. 今天谈一谈c++指针. c++指针就像是c#中的引用变量,例如一个Person类的实例zs{Name="张三",Ag ...
- 1789: [Ahoi2008]Necklace Y型项链
1789: [Ahoi2008]Necklace Y型项链 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 421 Solved: 258[Submit] ...
- 循环单词 java
链接:https://www.nowcoder.com/questionTerminal/9d5fbe7750a34d0b91c73943f93b2d7d来源:牛客网如果一个单词通过循环右移获得的单词 ...
- Floating IP in OpenStack Neutron
前言 Floating IP 是相对于Fixed IP而言的,它一般是在VM创建后分配给VM的,可以达到的目的就是,外界可以访问通过这个Floating Ip访问这个VM,VM也可以通过这个IP访问外 ...
- 【转】Lucene.NET详细使用与优化详解
1 lucene简介1.1 什么是luceneLucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工 ...
- Jdom读取XML文件
学习Spring时,我们经常看到很多xml配置文件,Spring通过在配置文件中的配置,使用IOC(控制反转),从而实现代码的灵活性,本篇我就为大家介绍一种解析xml方式--Jdom 首先我们到Jdo ...
- 内网转发ngrok的使用
1.下载解压ngrok:https://ngrok.com/download 2.执行ngrok会打开控制台 3.输入命令,开始映射本地的8080端口 ngork http 8080 控制台会返回一个 ...