Často potřebujeme sloupec v tabulce vypustit. Existují dva způsoby, jak zrušit sloupec v Oracle
(a) změnit sloupec zrušení tabulky v oracle
(b) změnit nepoužitý sloupec tabulky v oracle
PUSTIT SLOUPEC pomocí DROP COLUMN
Zde vypustíme sloupec z tabulky pomocí níže uvedeného příkazu .
ALTER TABLE table_name DROP COLUMN col_name;
Tento příkaz má výhradní zámek na tabulce a pokud je tabulka velká, provedení dotazu bude nějakou dobu trvat
Příklad
SQL> CREATE TABLE Books_master ( Book_Id NUMBER(6,0), Title VARCHAR2(50), Author VARCHAR2(50), ISBN VARCHAR2(25), BCost NUMBER(6,0), Publish_Year NUMBER(4,0), CONSTRAINT Books_master_PK PRIMARY KEY (Book_Id), CONSTRAINT Books_master_UK1 UNIQUE (Title, Author), CONSTRAINT Books_master_UK2 UNIQUE (ISBN) ) ; Table created. SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (10, 'Complete/Convenient', 'Ketan Bhagat', 'ISBN 978-93-80349-92-3', 195, 2013); SQL>INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (20, 'Deception Point', 'Dan Brown', 'ISBN 0-671-02738-7', 563,2001); SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (30, 'Angels-Demons', 'Dan Brown', 'ISBN 0-671-02736-0',563, 2000); SQL>INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (40, 'Harry Potter', 'J.K. Rowling', 'ISBN 0-7475-5100-6', 102,2003); SQL> commit; Commit complete. SQL> column TITLE format a10 SQL> column AUTHOR format a10 SQL> column ISBN format a15
SQL > Desc BOOKS_MASTER
Vypustíme sloupec z této tabulky
SQL> alter table books_master drop column PUBLISH_YEAR; Table altered. SQL > Desc BOOKS_MASTER
SQL> Select * from Books_master;
PUSTIT SLOUPEK pomocí SET UNUSED
- Pokud se obáváte o zdroje spotřebované při vypuštění sloupce, můžete použít příkaz ALTER TABLE…SET UNUSED .
- Tento příkaz označí jeden nebo více sloupců jako nepoužité, ale ve skutečnosti neodstraní data cílového sloupce ani neobnoví místo na disku obsazené těmito sloupci.
- Sloupec, který je označen jako nepoužitý, se nezobrazuje v dotazech ani v zobrazeních datového slovníku a jeho název je odstraněn, aby jej mohl znovu použít nový sloupec. Všechna omezení, indexy a statistiky definované ve sloupci jsou také odstraněny.
Syntaxe
ALTER TABLE
NASTAVIT NEPOUŽITÝ SLOUPEC
Nepoužitý sloupec můžeme vypustit později, když bude zdroj nižší, pomocí příkazu
ALTER TABLE
Zrušte UNUSED COLUMNS;
Pokud máte velké tabulky, můžete snížit množství nashromážděných protokolů zpět pomocí volby CHECKPOINT, která vynutí kontrolní bod po zpracování zadaného počtu řádků. Kontrolní bod omezuje množství protokolů zpět nashromážděných během operace sloupce zrušení, aby se zabránilo potenciálnímu vyčerpání místa pro vrácení zpět.
ALTER TABLE název_tabulky DROP UNUSED COLUMNS CHECKPOINT 500;
- Pokud jste s příkazem drop použili syntaxi kontrolního bodu, můžete relaci ukončit (nebo vypnout databázi) v polovině poklesu.
- Tabulka nebude dostupná pro DML nebo dotaz
- příkaz „drop columns“ můžete dokončit pomocí možnosti „continue“ (s volitelným kontrolním bodem).
alter table drop columns continue checkpoint; alter table drop columns continue checkpoint 5000;
Příklad
přejdeme k dříve vytvořené tabulce
SQL> alter table books_master set unused column ISBN; Table altered. SQL> desc books_master
SQL> Select * from Books_master;
Počet nevyužitých sloupců můžeme zkontrolovat dotazem na níže uvedený pohled USER_UNUSED_COL_TABS, ALL_UNUSED_COL_TABS nebo DBA_UNUSED_COL_TABS
SQL> select * from DBA_UNUSED_COL_TABS where TABLE_NAME='BOOKS_MASTER';
Nyní můžete sloupec vypustit během období nízké aktivity
SQL> alter table Books_master drop unused columns; Table altered. SQL> select * from DBA_UNUSED_COL_TABS where TABLE_NAME='BOOKS_MASTER'; no rows selected
Jak odstranit více sloupců
Během příkazu drop
můžeme zadat více sloupcůSQL> alter table books_master drop (AUTHOR,TITLE); Table altered.
Doufám, že se vám líbí příspěvek ve sloupci alter table drop v oracle. Uveďte prosím zpětnou vazbu
Také čte
Primární klíč Oracle
změna přesunutí tabulky
změna sloupce přejmenování tabulky v oracle
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables006. htm