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 ...
随机推荐
- smarty fetch方法
fetch 取得输出的内容 返回一个模板输出的内容(HTML代码),而不是直接显示出来,需要指定一个合法的模 板资源的类型和路径.你还可以通过 第二个可选参数指定一个缓存号,相关的信息可以查看缓存 ...
- JNI之C初探
JNI是Java Native Interface的缩写,从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI一开始是为了本地已编译语言,尤其 ...
- Binary Tree Paths leetcode
Given a binary tree, return all root-to-leaf paths. For example, given the following binary tree: 1 ...
- hdoj1016 [dfs]
http://acm.hdu.edu.cn/showproblem.php?pid=1016 题意: 已知一个数n,在1-n(包含 n ,0 < n < 20)里组合形成一个环形,使得每两 ...
- Azure Messaging-ServiceBus Messaging消息队列技术系列5-重复消息:at-least-once at-most-once
上篇博客中,我们用实际的业务场景和代码示例了Azure Messaging-ServiceBus Messaging对复杂对象消息的支持和消息的持久化: Azure Messaging-Service ...
- Android中的几种多线程实现
有以下几种方式: 1)Activity.runOnUiThread(Runnable) 2)View.post(Runnable) ;View.postDelay(Runnable , long) 3 ...
- Lucas定理学习(进阶中)
(1)Lucas定理:p为素数,则有: (2)证明: n=(ak...a2,a1,a0)p = (ak...a2,a1)p*p + a0 = [n/p]*p+a0,m=[m/p]*p+b0其次,我们 ...
- Linux环境Perl链接MS Sql Server数据库
1.下载相关软件 unixODBC.freetds和DBD-ODBC ①.Linux系统的ODBC unixODBC-2.3.4.tar.gz ( http://www.unixodbc.org) ② ...
- autoLayer:一基本布局
我不会写博客,写的不好请物见怪,这个autoLayer我就直接上图了: 本人环境:IDE(Xcode6)SDK(IOS8) 准备工作:找一个横图psd(由于我不会切图,我只会简单的描述一下图片处理), ...
- Layoutinlater 转
http://blog.csdn.net/guolin_blog/article/details/12921889