在oracle中如何删除表中的一个列

在oracle中如何删除表中的一个列,第1张

oracle中删除一个列的方法:

ALTER TABLE 表名 DROP COLUMN 列名。

oracle简介

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。

特点

1、完整的数据管理功能:

1)数据的大量性。

2)数据的保存的持久性。

3)数据的共享性。

4)数据的可靠性。

2、完备关系的产品:

1)信息准则---关系型DBMS的所有信息都应在逻辑上用一种方法,即表中的值显式地表示。

2)保证访问的准则。

3)视图更新准则---只要形成视图的表中的数据变化了,相应的视图中的数据同时变化。

4)数据物理性和逻辑性独立准则。

3、分布式处理功能:

ORACLE数据库自第5版起就提供了分布式处理能力,到第7版就有比较完善的分布式数据库功能了,一个ORACLE分布式数据库由oraclerdbms、sqlNet、SQLCONNECT和其他非ORACLE的关系型产品构成。

4、用ORACLE能轻松的实现数据仓库的 *** 作。

这是一个技术发展的趋势,不在这里讨论。

优点

1、可用性强

2、可扩展性强

3、数据安全性强

4、稳定性强

我们可能会出现这种情况,某个表原来设计不周全,导致表里面的数据数据重复,那么,如何对重复的数据进行删除呢? 重复的数据可能有这样两种情况,第一种时表中只有某些字段一样,第二种是两行记录完全一样。 一、对于部分字段重复数据的删除 先来谈谈如何查询重复的数据吧。 下面语句可以查询出那些数据是重复的: select 字段1,字段2,count() from 表名 group by 字段1,字段2 having count() > 1 将上面的>号改为=号就可以查询出没有重复的数据了。 想要删除这些重复的数据,可以使用下面语句进行删除 delete from 表名 a where 字段1,字段2 in(select 字段1,字段2,count() from 表名 group by 字段1,字段2 having count() > 1) 上面的语句非常简单,就是将查询到的数据删除掉。不过这种删除执行的效率非常低,对于大数据量来说,可能会将数据库吊死。所以我建议先将查询到的重复的数据插入到一个临时表中,然后对进行删除,这样,执行删除的时候就不用再进行一次查询了。如下: CREATE TABLE 临时表 AS(select 字段1,字段2,count() from 表名 group by 字段1,字段2 having count() > 1) 上面这句话就是建立了临时表,并将查询到的数据插入其中。 下面就可以进行这样的删除 *** 作了: delete from 表名 a where 字段1,字段2 in (select 字段1,字段2 from 临时表); 这种先建临时表再进行删除的 *** 作要比直接用一条语句进行删除要高效得多。 这个时候,大家可能会跳出来说,什么?你叫我们执行这种语句,那不是把所有重复的全都删除吗?而我们想保留重复数据中最新的一条记录啊!大家不要急,下面我就讲一下如何进行这种 *** 作。

oracle中删除一个列可用如下语句
1

ALTER TABLE 表名 DROP COLUMN 列名;
oracle简介:
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。

删除无任何数据对象的表空间:
首先使用PL/SQL界面化工具,或者使用oracle自带的SQL
PLUS工具,连接需要删除的表空间的oracle数据局库。
确认当前用户是否有删除表空间的权限,如果没有
drop
tablespace,请先用更高级的用户(如sys)给予授权或者直接用更高级的用户。
用drop
tablespace
xxx
,删除需要删除的表空间。
删除有任何数据对象的表空间
使用drop
tablespace
xxx
including
contents
and
datafiles;来删除表空间。
注意事项:
如果drop
tablespace语句中含有datafiles,那datafiles之前必须有contents关键字,不然会提示ora-01911错误

删除表内容的两种方法
truncate table 表名;
delete from 表名 where 条件;
两种方法的区别:
truncate,意思为截断表,能够不占用资源的全部删除表,优点是速度快,缺点是删除不能恢复,不能按条件删除。
delete,意思为删除,此 *** 作占用redolog,优点能够快速恢复和选择删除,缺点是删除慢,大批量的删除不建议使用。

删除数据库的表,关键点不在删除的 *** 作,而是在授权 *** 作删除。
为什么要删除?谁让删除的?这些都要形成文字的相关内容,不然在生产系统中,如果你是最后 *** 作的,那么板子只能打到你身上。
至于删除的语句很简单,最好用表所属于的用户登陆,然后drop table tablename;就可以了。
这样删除有一个好处,就是表在该用户的回收站(10g版本以及以后)中,如果想恢复还有办法。但是如果加了purge这个参数,那么你想恢复都没有办法了。(除非有备份)
oracle回收站的恢复方式:flashback table tablename to before drop;如果该用户没有flashback的权限,那么可以考虑以dba身份的用户登陆。
查看回收站的表,本用户登陆sqlplus连接,show recyclebin;

设定dept表deptno列为主键。
alter table dept add constraint pk_deptno primary key (deptno);
在emp表deptno列上建立外键引用dept表deptno,指定外键类型为级联删除。
alter table emp add constraint fk_deptno foreign key (deptno) references dept(deptno) on delete cascade;
这样删除dept表 只需:delete from dept where city='shanghai'; 就可以自动删除对应emp表内容。


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

原文地址: https://outofmemory.cn/yw/13344627.html

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

发表评论

登录后才能评论

评论列表(0条)

保存