oracle中drop语法,Oracle Drop列

oracle函数 的 Oracle Drop列

在本教程中,将学习如何使用Oracle删除列语句从表中删除一个或多个列。

Oracle使用SET UNUSED COLUMN子句删除列

从大表中删除列的过程可能耗费时间和资源。 因此,通常使用ALTER TABLE SET UNUSED COLUMN语句来逻辑删除列,如下所示:

ALTER TABLE table_name

SET UNUSED COLUMN column_name;

当执行了该语句,该列就不再可见。在非高峰时段,可以使用以下语句在物理上删除未使用的列:

ALTER TABLE table_name

DROP UNUSED COLUMNS;

如果要减少累积的撤消日志量,可以使用CHECKPOINT选项,该选项在指定的行数已被处理后强制检查点。

ALTER TABLE table_name

DROP UNUSED COLUMNS CHECKPOINT 250;

Oracle SET UNUSED COLUMN示例

下面来创建一个名为suppliers的示例表:

-- 12c语法

CREATE TABLE suppliers (

supplier_id NUMBER GENERATED BY DEFAULT AS IDENTITY,

contact_name VARCHAR2(255) NOT NULL,

company_name VARCHAR2(255),

phone VARCHAR2(100) NOT NULL,

email VARCHAR2(255) NOT NULL,

fax VARCHAR2(100) NOT NULL,

PRIMARY KEY(supplier_id)

);

以下语句将示例数据插入到suppliers表中:

INSERT INTO suppliers (contact_name,company_name,phone,email,fax)

VALUES ('Solomon F. Zamora',

'Elit LLP',

'1-245-616-6781',

'enim.condimentum@pellentesqueeget.org',

'1-593-653-6421');

INSERT INTO suppliers (contact_name,company_name,phone,email,fax)

VALUES ('Haley Franco',

'Ante Vivamus Limited',

'1-754-597-2827',

'Nunc@ac.com',

'1-167-362-9592');

INSERT INTO suppliers (contact_name,company_name,phone,email,fax)

VALUES ('Gail X. Tyson',

'Vulputate Velit Eu Inc.',

'1-331-448-8406',

'sem@gravidasit.edu',

'1-886-556-8494');

INSERT INTO suppliers (contact_name,company_name,phone,email,fax)

VALUES ('Alec N. Strickland',

'In At Associates',

'1-467-132-4527',

'Lorem@sedtortor.com',

'1-735-818-0914');

INSERT INTO suppliers (contact_name,company_name,phone,email,fax)

VALUES ('Britanni Holt',

'Magna Cras Convallis Corp.',

'1-842-554-5106',

'varius@seddictumeleifend.ca',

'1-381-532-1632');

INSERT INTO suppliers (contact_name,company_name,phone,email,fax)

VALUES ('Audra O. Ingram',

'Commodo LLP',

'1-934-490-5667',

'dictum.augue.malesuada@idmagnaet.net',

'1-225-217-4699');

INSERT INTO suppliers (contact_name,company_name,phone,email,fax)

VALUES ('Cody K. Chapman',

'Tempor Arcu Inc.',

'1-349-383-6623',

'non.arcu.Vivamus@rutrumnon.co.uk',

'1-824-229-3521');

INSERT INTO suppliers (contact_name,company_name,phone,email,fax)

VALUES ('Tobias Merritt',

'Amet Risus Company',

'1-457-675-2547',

'felis@ut.net',

'1-404-101-9940');

INSERT INTO suppliers (contact_name,company_name,phone,email,fax)

VALUES ('Ryder G. Vega',

'Massa LLC',

'1-655-465-4319',

'dui.nec@convalliserateget.co.uk',

'1-282-381-9477');

INSERT INTO suppliers (contact_name,company_name,phone,email,fax)

VALUES ('Arthur Woods',

'Donec Elementum Lorem Foundation',

'1-406-810-9583',

'eros.turpis.non@anteMaecenasmi.co.uk',

'1-462-765-8157');

INSERT INTO suppliers (contact_name,company_name,phone,email,fax)

VALUES ('Lael Snider',

'Ultricies Adipiscing Enim Corporation',

'1-252-634-4780',

'natoque.penatibus@in.com',

'1-986-508-6373');

要从suppliers表中逻辑删除fax列,请使用以下语句:

ALTER TABLE suppliers

SET UNUSED COLUMN fax;

从现在开始,就再不能访问fax列了,如下查询所示 -

SELECT

*

FROM

suppliers;

执行上面语句,结果如下 -

d1cca86e1b056c53f39ebdbdcba14e37.png

可以从DBA_UNUSED_COL_TABS视图查看每个表中未使用的列的数量:

SELECT

*

FROM

DBA_UNUSED_COL_TABS;

如上所见,suppliers表有一个未使用的列。要从suppliers表中删除所有未使用的列,请使用以下语句:

ALTER TABLE suppliers

DROP UNUSED COLUMNS;

再次查询DBA_UNUSED_COL_TABS视图中的数据,将得到一个空的结果集。

Oracle使用DROP COLUMN子句删除列

要从物理表中删除列,请使用以下语句:

ALTER TABLE table_name

DROP COLUMN column_name;

要删除多个列,请使用以下语句:

ALTER TABLE table_name

DROP (

column_name_1,

column_name_2

);

Oracle DROP COLUMN子句的例子

以下语句从suppliers表中删除email和fax列:

ALTER TABLE

suppliers

DROP (

email,

phone

);

在本教程中,您学习了如何使用Oracle drop column语句从表中删除一列或多列。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值