免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5751 | 回复: 15
打印 上一主题 下一主题

怎么样清除数据库中表的记录? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-10 10:10 |只看该作者 |倒序浏览
怎么样清除数据库中表的记录?

我的那个表,是个临时表,我看表的记录都排到20多万了,
我想清除这个记录,从0开始,怎么弄呢?
假如这个临时表的叫 A,这个表里的字段有dea_count,c_1,c_2
现在就是dea_count这个字段每次都从累计增加,我删除这个表以后,插入新的纪录后,这个字段也要增加,不是从0开始,奇怪!

[ 本帖最后由 jxp2002 于 2006-4-10 15:09 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-04-10 11:37 |只看该作者
1.db2 import from /dev/null of del replace into tabname //unix环境
2.db2 alter table table_name activate not logged initially with empty table //windows环境

论坛徽章:
0
3 [报告]
发表于 2006-04-10 15:09 |只看该作者

回复 2楼 令狐冰人 的帖子

好像你发给我的没有用啊

论坛徽章:
0
4 [报告]
发表于 2006-04-11 17:18 |只看该作者
1. 使用 DELETE 语句,即:
DELETE FROM <表名>
该语句将清除表中所有数据,但由于这一操作会记日志,因此执行速度会相对慢一些,另外要注意的是,如果表较大,为保证删除操作的成功,应考虑是否留有足够大的日志空间。

2. 使用 NOT LOGGED INITIALLY 选项,即:
ALTER TABLE <表名> ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE
这一方法仅在所操作的表在创建时选择了 NOT LOGGED INITIALLY 选项进行定义后才可使用。整个删除操作将不会记日志,因此执行速度是几种方法中最快的一种,但删除的数据是不可恢复的。

3. 使用 IMPORT 或 LOAD 命令,即:
IMPORT FROM /dev/null OF DEL REPLACE INTO <表名> --(Unix 系统)
或 IMPORT FROM <空文件> OF DEL REPLACE INTO <表名>
LOAD FROM /dev/null OF DEL REPLACE INTO <表名> NONRECOVERABLE --(Unix 系统)
或 LOAD FROM <空文件> OF DEL REPLACE INTO <表名> NONRECOVERABLE

在这一方法中,REPLACE 导入方式首先会将表中所有数据清空,然后 IMPORT/LOAD 又向表中导入了空数据,从而实现了数据的清除操作。

4. 使用 DROP/CREATE TABLE 语句,即:
DROP TABLE <表名>
CREATE TABLE <表名> <字段的定义>

如果保存有表的定义语句,或已利用 DB2LOOK 命令获得了表定义的脚本,也可先删除整个表,再重新创建表。如果表较大,用这种方法实现数据清空的速度会快于方法一。

论坛徽章:
0
5 [报告]
发表于 2006-04-11 17:21 |只看该作者
原帖由 jxp2002 于 2006-4-10 10:10 发表
怎么样清除数据库中表的记录?

我的那个表,是个临时表,我看表的记录都排到20多万了,
我想清除这个记录,从0开始,怎么弄呢?
假如这个临时表的叫 A,这个表里的字段有dea_count,c_1,c_2
现在就是dea_count这个 ...


直接清空表不能让你的identity 列归零, 除非你drop, 再create.

论坛徽章:
0
6 [报告]
发表于 2006-04-12 10:42 |只看该作者
原帖由 huyuhui001 于 2006-4-11 17:21 发表


直接清空表不能让你的identity 列归零, 除非你drop, 再create.

能否谈谈identity的意思,为什么会有纪录呢?

论坛徽章:
0
7 [报告]
发表于 2006-04-12 11:07 |只看该作者
identity列是类似于sequence的, 建议使用sequence来代替identity. 其实就是自增列.

论坛徽章:
0
8 [报告]
发表于 2006-04-12 14:28 |只看该作者
原帖由 famous 于 2006-4-11 17:18 发表
2. 使用 NOT LOGGED INITIALLY 选项,即:
ALTER TABLE <表名> ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE
这一方法仅在所操作的表在创建时选择了 NOT LOGGED INITIALLY 选项进行定义后才可使用。


不用在建表时NOT LOGGED INITIALLY ,直接就能用吧

论坛徽章:
0
9 [报告]
发表于 2006-04-12 16:19 |只看该作者
sequence相较于identity有什么优点? 为什么建议用sequence

论坛徽章:
0
10 [报告]
发表于 2006-04-14 15:06 |只看该作者
IDENTITY 在每个表中是唯一的。SEQUENCE 序列在整个数据库中是独一无二的 . 这对于在多个表中使用的值很有用。我理解是这样的,但是为什么斑竹建议“建议使用sequence来代替identity”我就不知道了,我觉得SEQUENCE是可以多个表都受到影响,可能反而不是很好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP