删除表数据有两种方法:delete和truncate。具体语句如下:
一、RUNCATETABLEname:
删除表中的所有行,而不记录单个行删除 *** 作。在这个指令之下,表格中的资料会完全消失,可是表格本身会继续存在。
TRUNCATETABLE的语法:TRUNCATETABLEname,参数name是要截断的表的名称或要删除其全部行的表的名称。
二、Deletefromtablenamewhere1=1
1、delete语法:
DELETEFROM表名称WHERE列名称=值。
2、删除所有行:
可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:DELETEFROMtable_name。
扩展资料:
truncate和delete的共同点及区别:
1、truncate和delete只删除数据不删除表的结构(定义)。
2、delete语句是dml,这个 *** 作会放到rollbacksegement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发。
truncate是ddl, *** 作立即生效,原数据不放到rollbacksegment中,不能回滚 *** 作不触发trigger。
3、delete语句不影响表所占用的extent,高水线(highwatermark)保持原位置不动。truncate语句缺省情况下见空间释放到minextents个extent,除非使用reusestorage;truncate会将高水线复位(回到最开始)。
4、速度,一般来说:truncate
使用 TRUNCATE TABLE 删除所有行。
若要删除表中的所有行,则 TRUNCATE TABLE 语句是一种快速、无日志记录的方法。该语句总是比不带条件的 DELETE 语句要快,因为 DELETE 语句要记录对每行的删除 *** 作。
而 TRUNCATE TABLE 语句只记录整个数据页的释放。TRUNCATE TABLE 语句立即释放由该表的数据和索引占用的所有空间。所有索引的分发页也将释放。
与 DELETE 语句相同,使用 TRUNCATE TABLE 清空的表的定义,同其索引和其它相关的对象一起仍保留在数据库中。必须使用 DROP TABLE 语句才能除去表的定义。
select id,max(c1) as c1,max(c2) as c2, into #temptable from b1 group by id
go
delete from b1
go
insert into b1 select from #temptable
go
drop table #temptable
go
请采用下列脚本
/删除索引/
declare @table table (keyId int identity,name1 varchar(100),name2 varchar(100))
insert into @table(name1,name2)
select object_name(object_id),name from sysindexes where name like 'IDX%'
declare @i int
declare @imax int
declare @name1 varchar(100)
declare @name2 varchar(100)
set @i =1
select @imax = max(keyId) from @table t
while @i <=@imax
begin
set @name1 =''
set @name2 =''
select @name1 = name1,@name2=name2 from @table t where tkeyId =@i
print 'drop index ['+@name2 +'] on table ['+@name1+'] '
---exec ('drop index '+@name2 +' on table '+@name1 )
set @i =@i+1
end
go
declare @table table(keyId int identity,name varchar(100))
insert into @table (name) select name from systables where type='u'
/修理表结构/
declare @i int
declare @imax int
declare @name varchar(100)
set @i =1
select @imax = max(keyId) from @table t
while @i <=@imax
begin
set @name =''
select @name = name from @table t where tkeyId =@i
print 'alter table ['+@name +'] drop column [_MASK_FROM_V2]'
--exec ('alter table '+@name +' drop column [_MASK_FROM_V2]')
set @i =@i+1
end
分两步 *** 作
1 删除索引
2 修改表结构
有疑问及时沟通。
先在测试机上 *** 作,请采纳!
如果 是主键索引,和唯一索引,并且为其他表数据外键 ,是不能删除,,先取消外键索引才行。CREATE UNIQUE INDEX 终止,因为发现了索引 ID 2 的重复键。最重要的主键为 'type 6c, len 9'。
这个原因是你你创建索引的列 表中存在重复值,
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)