oracle数据库删除表中一条数据SQL语句

oracle数据库删除表中一条数据SQL语句,第1张

保留表,只删除数据

truncate table mytable

或者:

delete from mytable where 1 = 1

commit

删除表本身:

drop table mytable

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。

这个需要分情况。

1,你的数据库表中有主键,且主键上面的数据为唯一值。也就是没有重复值。

那么你在删除的时候,将这个唯一值作为条件进行删除。

如:

delete

from

[表名]

where

id=1

2.所有的数据相同,那么你只能打开数据表,手工选定其中某一条,进行删除。

如果所用的数据库是

Microsoft

SQL

Server的话,对于这种所有字段完全相同的数据记录,是无法做到只删除一条的,因为数据库无法定位这些相同的记录中的某一条!

所以,如果执行删除的话,只有两种可能(具体看你所使用的SQL查询工具了):1)报错,无法删除,比如在SQL企业管理器中直接选中数据并做删除 *** 作;2)相同的记录全部删除,比如用SQL查询分析器。

那么楼主的问题要如何解决呢,思路是这样:

1)去掉重复的:

select

distinct

*

into

#tmp

from

[tablename]

--将唯一性记录写入临时表

delete

from

[tablename]

--将原表数据清空(最好先备份一下原数据表)

insert

into

[tablename]

select

*

from

#tmp

--从临时表将数据插回

2)如果一定要数据重复,那请修改表[tablename]结构,增加一个[ID]字段,并让它自动增长,以便将相同记录区分开来。然后将需要重复的记录用如下语句重复插入:

insert

into

[tablename]

(字段列表-不包含那个ID字段)

select

(字段列表-不包含那个ID字段)from

[tablename]

where

[ID]=XXXX

(注:XXX是事先查到的需要重复的记录ID字段值)

GoodLuck!

希望对你能有所帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9966878.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存