数据库教程-Oracle删除列

跨零代码为大家提供高品质的解决方案,请大家多多来访,跨零不胜感激,在此谢过。

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

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; 

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

Oracle删除列

可以从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表中删除emailfax列:

ALTER TABLE     suppliers  DROP (         email,         phone     ); 

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

  

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 只为你绽放。

本文固定链接: http://kua0.com/2019/01/18/数据库教程-oracle删除列/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注