SQL UPDATE如何工作
在SQL UPDATE语句中,对换两个变量的值,不需要临时变量。=右侧的值在整个UPDATE语句中都是一致的;所有的更新同时发生,而不是一个接着一个发生。
例如:
UPDATE offenceTeam
SET goalShooter=wingAttack,
wingAttack=goalShooter;
我在SQL SERVER中试验过,goalShooter和wingAttack字段的值确实对换了。值得说明的是:这个情况只在Oracle,SQL SERVER和PostgreSQL中发生,在Mysql里面是不成立的。这个例子来源于《SQL Hacks》。下面是他的解释:
当关系数据库执行更新时,它必须在某个位置维护一份所有原始值的副本,以便确保隔离事务。一条UPDATE语句可能影响数千行数据,也可能要花上数分钟的时间才能完成。如果在更新过程中发生失败,系统确保能够回滚,不提供任何修改。
系统在第一次修改发生之前能够访问所有值。并且,正常情况下你也无法预测更新发生的次序,因此,明智的行为是,相对于原始值应用修改,而不考虑命令执行过程中产生的修改。
相关文档:
当你正在处理被多个站点(像在跨国公司条件下)使用的大数据库时,你也许会遇到保证表格对象唯一性这样的棘手问题。在这种情形下,可能只能靠UNIQUEIDENTIFIER来解决。UNIQUEIDENTIFIER是一个保存全局唯一标识符的GUID数据类型。GUID是一个保证唯一的二进制数,因此几乎没有别的计算机会产生同一个值。
GUID的唯一值是由计 ......
总的来说,MS SQL 2005的安全性比SQL 2000要强上不少,不过默认设置还是有和原来一样的漏洞,下面我们来修改一下默认设置。
1、修改默认SA密码。
安装MSSQL时使用混合模式,当然SA密码最好不能为空,在SQL2005中,可以对SA这个超级用户名进行修改或删除。
use master
ALTER LOGIN [ ......
1. 说明:复制表(只复制结构,源表名:a,新表名:b)
SQL: select * into b from a where 1<>1;
2. 说明:拷贝表(拷贝数据,源表名:a,目标表名:b)
SQL: insert into b(a, b, c) select d, e, f from b;
3. ......
◆1、使用索引来更快地遍历表
缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。合理的索引设计要建立在对各种查询的分析和预测上。一般来说:①.有大量重复值、且经常有范围查询(between, > ,< ,> =,< =)和order by、group by发生的列 ......