您的位置:首页 > 数据库

T-SQL入門攻略之14-获取DML语句的影响信息

2010-10-22 14:29 281 查看
首先把上节没讲完的讲完:

多列更新



UPDATE
testbook

SET
price =
price *
0.3,
--

打折

remark =
'

过时图书
'
--

备注

WHERE
date<=
'2000-01-01'
;

大容量数据更新



GO

UPDATE
file_table

SET
FileName
=
'Img100.jpg'
,

DOCUMENT
=(

SELECT
*

FROM
OPENROWSET
(
BULK
'C:/Img100.jpg'
,
SINGLE_BLOB)
AS
Document

)

WHERE
FileType=
'.jpg'
;

删除数据



(1)

删除部分数据

DELETE
FROM
book2
--

删除部分数据

WHERE
DATE<
'2000/1/1'
;

(2)

删除全部数据

DELETE
FROM
book2
--

删除全部数据

当然也可以这样删除全部数据

truncate
table
book2

注:

这里从效果上看

truncate
table


DELETE
是一样的
,
都是删除表中的所有数据,但是不包括表结构。但是他们有不同:

(1)

执行
delete
语句

系统将逐行对数据进行删除

并记录日志信息。

(2)

执行
truncate
语句时候

系统将一次性删除与表有关的所有数据页,且不记录日志,不形成日志文件。

基于以上亮点可以看出
truncate table
要比
delete
快的多,因为前者不记录日志。但是这也说明了
truncate table
语句删除的数据不能用
rollback
语句来恢复
.
相反
delete
可以

查看数据表



SELECT
a.
name

字段名
,

b.
name

字段类型
,

a.
max_length
字段长度

FROM
sys.all_columns
as
a

JOIN
sys.types
as
b

ON
a.
system_type_id =
b.
system_type_id

WHERE
object_id
=
object_id
(
'dbo.student'
);

删除数据表


Drop
table
T1,
T2,
T3

2005


及以上版本在操纵语句中使用
output


可以获取具体的影响信息


以下分别说明


Output



Insert


语句中的应用


INSERT
book

OUTPUT
INSERTED.*

SELECT
106,
'

数字图像处理
'
,
'

宋青书
'
,
'

科学出版社
'
,
'2006/7/1'
,
'200607100'
,
25.00,
'

较差
'

当然也可以把返回的结果保存起来但是必须用表

或者表变量

不能用变量来接受

感兴趣的可以试验下

IF
OBJECT_ID
(
'T2'
,
'U'
)
IS
NOT
NULL
DROP
TABLE
T2;
--

建立表结构

GO

CREATE
TABLE
T2

(

bkno
int
,

bkname
nvarchar
(
50),

author
nvarchar
(
8)

);

INSERT
book

OUTPUT
INSERTED.
bkno,
INSERTED.
bkname,
INSERTED.
author

INTO
T2

SELECT
104,
'JSP

网站开发教程
'
,
'

赵敏
'
,
'

电子工业出版社
'
,
'2002/10/11'
,
'200210201'
,
35.00,
'

较好
'

UNION
ALL

SELECT
105,
'C++Builder

程序设计
'
,
'

俞莲舟
'
,
'

人民邮电出版社
'
,
'2007/1/1'
,
'200701111'
,
53.00,
'

一般
'

Output



delete


语句中的应用


DELETE
FROM
book

OUTPUT
DELETED.*

WHERE
bkno=
104;

Output



update


语句中的应用


DECLARE
@MyTableVar TABLE
--

建立表变量作用类似表

(

preprice
numeric
(
10,
2),

posprice
numeric
(
10,
2)

)

UPDATE
book

SET
price =
price*
1.3

OUTPUT

DELETED.
price,

INSERTED.
price

INTO
@MyTableVar;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐