SQL Server同时操作(all-in-once)特性

在Select列表中创建的别名不能在Select子句之前执行的子句中使用。实际上,表达式别名甚至不能用于Select列表的其他表达式。该限制是由于SQL的另一个独有的特性,即同时操作(all-at-once
operation)。例如,在下面这个Select列表中,计算表达式的逻辑顺序无关紧要,而且具有不确定性:

Select c1+1 As
e1,c2+1 As e2.

因此,不支持下面这个表达式:

Select c1+1 As
e1,e1+1 As e2.

你只能在Select列表后面的步骤(如Order By步骤)中使用列的别名。

理解:同时操作(all-at-once
operation)

我们在大多数编程环境下,交换两个变量的值,通常会使用一个临时变量:

//假设有两个已赋值的int型变量a、b

int
temp;

temp=a; a=b;
b=temp;

当然只是通常的做法,你也可以运用逻辑运算符:

a = a ^
b;

b = b ^
a;

a = b ^
a;

或者:b = a + (a = b) *
0;

但,在SQL中交换列值可以使用下面的语句:

Update dbo.T1 Set
c1=c2,c2=c1;

你应该假设所有操作同时发生,而事实上,在更新完成之前并不会修改表(可以理解为更新过程中表中的记录被锁定),而在计算出所有结果之后替换了现有表中的源数据。

所以,下面的更新语句:

Update dbo.T1 Set
c1=c1+(Select Max(c1) From dbo.T1);

该更新将影响T1表中的所有行,为C1列加上更新开始时T1中的最大的c1值。此时可以认为更新开始后表中的记录被锁住,数据库在后台处理、计算数据。计算完所有数据之后,将一次性替换所有数据。所以你不用担心最大的c1值会随着操作进行而持续变化,可以理解为操作在瞬间发生了。

原文发布时间为:2011-02-14

本文作者:vinoYang

时间: 2024-11-11 03:13:38

SQL Server同时操作(all-in-once)特性的相关文章

SQL Server误区:即时文件初始化特性可以在SQL Server中 a)开启 和 b)关闭

误区 #3: 即时文件初始化特性可以在SQL Server中 a)开启 和 b)关闭 a)是不允许的  b)是允许的 即时文件初始化是一个在SQL Server 2005以及之上的版本鲜为人知的特性.这个特性允许数据文件(仅仅是数据文件,不包括日志文件)初始化的过程跳过填0初始化过程.这种方式是在发生灾难时大大减少Downtime的好办法---在恢复数据库时由于免去了填0初始化的过程而直接开始恢复过程. 我之前已经写过关于即时文件初始化误区的文章了(见Misconceptions around

SQL Server 2008的策略管理新特性

策略管理是SQL Server 2008中的一个新特性,用于管理数据库实例.数据库以及数据库对象的各种属 性.策略管理在SSMS的对象资源管理器数据库实例下的"管理"节点下,如图: 从图中可以看到,策略管理中包含三个节点:策略.条件.方面. 方面就是策略要应用的对象,包括:服务器.表.触发器.视图.存储过程--这些方面对象都是系 统定义好了的,仅供瞻仰不可更改.双击具体的某一个方面可以查看该方面的属性,在定义条件时即可对 这些属性进行判断,如图为存储过程方面的属性. 条件就是一个布尔表

SQL Server 2016 CTP2.3 的关键特性总结_MsSql

SQL Server 2016带来全新突破性的  in-memory性能和分析功能来实现关键任务处理.全面的安全特性 -Always Encrypted 技术可以帮助保护您的数据 数据库方面的增强 Row Level Security已经支持In-memory OLTP 表.用户现在可以对内存优化表实施row-level security策略. 另外SCHEMABINDING.predicate 函数和内联表值函数都要包含NATIVE_COMPILATION编译选项. 使用NATIVE_COMP

SQL Server 2016 CTP2.3 的关键特性总结

SQL Server 2016带来全新突破性的  in-memory性能和分析功能来实现关键任务处理.全面的安全特性 -Always Encrypted 技术可以帮助保护您的数据 数据库方面的增强 Row Level Security已经支持In-memory OLTP 表.用户现在可以对内存优化表实施row-level security策略. 另外SCHEMABINDING.predicate 函数和内联表值函数都要包含NATIVE_COMPILATION编译选项. 使用NATIVE_COMP

sql server 数据库操作报错“日志不可用”

问题描述 sql server 数据库操作报错"日志不可用" 在操作数据库时查询信息操作没有问题,但增删改操作时就会报下面的错误请问是什么原因: 消息 9001,级别 21,状态 1,第 2 行 数据库 'hrtest1' 的日志不可用.有关相应错误消息,请查看事件日志.修复所有错误后重新启动数据库. 解决方案 SQL Server 数据库操作关于SQL Server数据库日志已满的解决方法SQL Server 数据库操作总结(sql语法的使用) 解决方案二: recovery下数据库

sql server-java链接SQL server数据库 操作详细步骤

问题描述 java链接SQL server数据库 操作详细步骤 java链接SQL server数据库 操作详细步骤, 以及方法 解决方案 http://blog.csdn.net/stewen_001/article/details/19553173/ 解决方案二: http://www.cnblogs.com/xiazhi33/articles/935771.html 解决方案三: 打开Eclipse,"文件"→"新建"→"项目"→"

SQL Server 2012全力打造大数据特性

本文讲的是SQL Server 2012全力打造大数据特性,同其他IT厂商一样,微软公司也做好了全面进军"大数据"领域的准备,而即将发布的SQL Server 2012将成为微软大数据战略的支点.最新的数据库平台将提供一系列的大数据功能,其中包括Apache Hadoop连接器.开源分布式计算架构,能够存储并处理海量的结构化与非结构化数据. 为了让用户对于SQL Server 2012的大数据功能有一个更直观的了解,记者采访微软数据库平台专家Mark Kromer,让他来谈一谈SQL

微软SQL Server 2005的30项顶尖特性

下面是微软自称SQL Server 2005"顶尖"的30项新增及改进功能特性.10大顶尖数据库管理特性 特性 描述 数据库镜像 利用新增数据库镜像解决方案扩展日志传送功能.您可以使用数据库镜像特性通过设置自动故障转移至备用服务器的方式来增强SQL Server系统的功能. 在线恢复 利用SQL Server 2005,数据库管理员可以在SQL Server实例运行状态下执行恢复操作.由于只有那些被恢复的数据无法使用,数据库的其余部分仍旧处于在线状态且保持可用,因此,在线恢复特性能够有

Sql Server实用操作小技巧集合

server|集合|技巧 包括安装时提示有挂起的操作.收缩数据库.压缩数据库.转移数据库给新用户以已存在用户权限.检查备份集.修复数据库等  (一)挂起操作在安装Sql或sp补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用,解决办法:到HKEY_LOCAL_MACHINE YSTEM\CurrentControlSet\Control ession Manager删除PendingFileRenameOperations(二)收缩数据库--重建索引DBCC REINDEXDBC

强烈推荐:SQL Server数据库操作实用技巧锦集

server|sql|技巧|数据|数据库 本文主要概括安装时提示有挂起的操作.收缩数据库.压缩数据库.转移数据库给新用户以已存在用户权限.检查备份集.修复数据库等操作技巧. 1.挂起操作 在安装SQL或SP补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用,解决办法: 到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager删除PendingFileRenameOperations. 2.收缩数据库