sql >> Databáze >  >> RDS >> Oracle

změnit sloupec přetažení tabulky v databázi Oracle

Č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


  1. Oprava:„Příkaz BACKUP LOG není povolen, když je model obnovy JEDNODUCHÝ“ v SQL Server (a SQL Edge)

  2. Způsob, jak extrahovat data hodnoty DateTime bez sekund

  3. Dotazy MySQL

  4. Možnosti Sniffing, Embedding a RECOMPILE