SQL UPDATE如何工作
在SQL UPDATE语句中,对换两个变量的值,不需要临时变量。=右侧的值在整个UPDATE语句中都是一致的;所有的更新同时发生,而不是一个接着一个发生。
例如:
UPDATE offenceTeam
SET goalShooter=wingAttack,
wingAttack=goalShooter;
我在SQL SERVER中试验过,goalShooter和wingAttack字段的值确实对换了。值得说明的是:这个情况只在Oracle,SQL SERVER和PostgreSQL中发生,在Mysql里面是不成立的。这个例子来源于《SQL Hacks》。下面是他的解释:
当关系数据库执行更新时,它必须在某个位置维护一份所有原始值的副本,以便确保隔离事务。一条UPDATE语句可能影响数千行数据,也可能要花上数分钟的时间才能完成。如果在更新过程中发生失败,系统确保能够回滚,不提供任何修改。
系统在第一次修改发生之前能够访问所有值。并且,正常情况下你也无法预测更新发生的次序,因此,明智的行为是,相对于原始值应用修改,而不考虑命令执行过程中产生的修改。
相关文档:
数据源......包含无法用于处理操作的 ImpersonationMode。
解决方法:
服务器连接改为“使用服务账户”。
具体操作:
在数据源里的项目上点击右键->打开->数据源设计器 , 选择“模拟信息”标签->选择“使用服务账户”,确定,执行部署。 ......
总的来说,MS SQL 2005的安全性比SQL 2000要强上不少,不过默认设置还是有和原来一样的漏洞,下面我们来修改一下默认设置。
1、修改默认SA密码。
安装MSSQL时使用混合模式,当然SA密码最好不能为空,在SQL2005中,可以对SA这个超级用户名进行修改或删除。
use master
ALTER LOGIN [ ......
表结构和数据如下(表名Test):
NO VALUE NAME
1 a 测试1
1 b 测试2
1 c ......
有些时候我们需要查询数据库中的时间字段,例如2009-11-11 11:11:11:111 这样的时间格式。
而我们有些时候不用把整个的字段查询出来,需要把前面的日期截取出来,或者把后面的时间截取出来。
这个时候就要用到SQL里面的时间函数了:
select convert(char(10),字段名,108) from 表名
上述语句是将后面的时间查询出来,格 ......
作为一名DBA,他们最常见的日常任务是:
1)定期完成数据库的完全备份或差异备份。
2)定期清理备份文件,因为存储空间有限,可能只需要保存一个时期段内的文件(比如一周内或一月内)。
而如何做到这两点呢?笔者相信在SQL SERVER2005版本出来之前要实现这种功能, 也是可以实现的,只是实现定期清理备份文件显得不那么直 ......