易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL UPDATE如何工作

在SQL UPDATE语句中,对换两个变量的值,不需要临时变量。=右侧的值在整个UPDATE语句中都是一致的;所有的更新同时发生,而不是一个接着一个发生。
例如:
UPDATE offenceTeam
        SET goalShooter=wingAttack,
               wingAttack=goalShooter;
我在SQL SERVER中试验过,goalShooter和wingAttack字段的值确实对换了。值得说明的是:这个情况只在Oracle,SQL SERVER和PostgreSQL中发生,在Mysql里面是不成立的。这个例子来源于《SQL Hacks》。下面是他的解释:
当关系数据库执行更新时,它必须在某个位置维护一份所有原始值的副本,以便确保隔离事务。一条UPDATE语句可能影响数千行数据,也可能要花上数分钟的时间才能完成。如果在更新过程中发生失败,系统确保能够回滚,不提供任何修改。
系统在第一次修改发生之前能够访问所有值。并且,正常情况下你也无法预测更新发生的次序,因此,明智的行为是,相对于原始值应用修改,而不考虑命令执行过程中产生的修改。


相关文档:

SQL UNIQUEIDENTIFIER

当你正在处理被多个站点(像在跨国公司条件下)使用的大数据库时,你也许会遇到保证表格对象唯一性这样的棘手问题。在这种情形下,可能只能靠UNIQUEIDENTIFIER来解决。UNIQUEIDENTIFIER是一个保存全局唯一标识符的GUID数据类型。GUID是一个保证唯一的二进制数,因此几乎没有别的计算机会产生同一个值。
GUID的唯一值是由计 ......

SQL一个存储过程调用另一个存储过程 获得返回值问题

第一种方法: 使用output参数
USE AdventureWorks;
GO
IF OBJECT_ID ( 'Production.usp_GetList', 'P' ) IS NOT NULL
    DROP PROCEDURE Production.usp_GetList;
GO
CREATE PROCEDURE Production.usp_GetList @product varchar(40)
    , @maxprice money
    , ......

动态SQL基本语法

1 :普通SQL语句可以用exec执行
Select * from tableName
exec('select * from tableName')
exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N
2:字段名,表名,数据库名之类作为变量时,必须用动态SQL
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tab ......

sql 里的 update 实现联合表更新

 1.update a set a.nickname=b.nickname from tab1 a,tab2 b where a.username=b.username
2.Update student_score set
student_score.level=level_about.level from
level_about where student.score
between level_about.start_score and level_about.end_score ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号