0
点赞
收藏
分享

微信扫一扫

进度6-更新删除

知识点:

假设,创建表test1,test2。

drop  table  test1
create  table  test1
(
	FID  int  identity(1 ,  1),
	FBillNo varchar(10),
	FDate  datetime  default(getdate())
)
insert  into  test1(FBillNo ,  FDate) 
values('FB001' ,  '2018-6-1'),
	('FB002' ,  '2018-6-3'),
	('FB003' ,  '2018-2-1'),
	('FB003' ,  '2018-2-3')
drop  table  test2
create  table  test2
(
	FID  int  identity(1 ,  1),
	FBillNo  varchar(10),
	FDate  datetime  default(getdate())
)
insert  into  test2(FBillNo ,  FDate) 
values('FB2018001' ,  '2018-6-1'),
	('FB2018002' ,  '2018-6-3') ,
	('FB003' ,  '2018-2-1'),
	('FB004' ,  '2018-2-3')

1、单表更新

举例:在表test1,日期为‘2018-2-3’的记录,单据编号有错,需要更改为‘FB004’。

update  test1  set  FBillNo='FB004'  where  FDate='2018-2-3'


2、多表更新

举例:从2018-6-1开始,单据编号的规则发生改变,把表test2中,日期大于等于2018-6-1的单据编号更新到表test1。

update  t1  set  t1.FBillNo=t2.FBillNo

from  test1  t1

left  join  test2  t2  on  t1.FID=t2.FID

where  t2.FDate>='2018-6-1'

update test1set test1.name=test2.name,test1.age=test2.agefrom test1 inner join test2on test1.id=test2.id

https://www.cnblogs.com/willingtolove/p/10792713.html

3、删除记录

举例1:用truncate语法删除表test2所有记录

truncate  table  test2

举例2:用delete语法删除表test1第四条的记录

delete  from  test1  where  FID=4

举例3:用delete语法删除表test1所有记录

delete  from  test1

删除表

DROP TABLE employees;

4、delete和truncate区别

区别1:DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。在删除过程中激活与表有关的删除触发器。


TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。

区别2:表和索引所占空间。当表被TRUNCATE 后,这个表和索引所占用的空间会恢复到初始大小,而DELETE操作不会减少表或索引所占用的空间。drop语句将表所占用的空间全释放掉。

区别3:应用范围。TRUNCATE 只能对TABLE;DELETE可以是table和view。

区别4:对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。

区别5:DELETE自动编号不恢复到初始值。TRUNCATE自动编号恢复到初始值。


举报

相关推荐

0 条评论