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

Jak změnit tabulku v Oracle

Často potřebujeme změnit tabulku v Oracle v závislosti na změnách požadavků a upgradu. Zde jsou některé důležité body o příkazu Alter table

  • Tabulku můžete upravit nebo upravit pomocí ALTER TABLE  prohlášení.
  • Tabulka musí být obsažena ve vašem schématu, chcete-li změnit tabulku, nebo byste měli mít pro tabulku oprávnění objektu ALTER nebo systémové oprávnění ALTER ANY TABLE.
  • Pokud zobrazení, materializovaný pohled, spouštěč, index založený na funkcích, kontrolní omezení, funkce, procedura balíčku závisí na základní tabulce, může změna základní tabulky nebo jejích sloupců ovlivnit závislý objekt. Například objekty plsql se stanou neplatné  pokud se objekt závislé tabulky změní a musíte je znovu nastavit na platnost

Upravte fyzické vlastnosti (INITRANS nebo parametry úložiště)

Parametr úložiště tabulky můžeme upravit pomocí příkazu Alter table. Inittrans můžeme upravit takto

ALTER TABLE TABLE_NAME INITRANS 10;

Přesun tabulky do nových segmentů nebo tabulkového prostoru

V případě potřeby můžeme přesunout tabulku bez oddílů nebo oddíl tabulky do nového segmentu nebo nového tabulkového prostoru

Alter table table_name move tablespace <tablespace name>

Můžeme dokonce použít příkaz move ke změně libovolného parametru úložiště tabulek, které nejsou upraveny pomocí příkazu alter table

Změňte tabulku v oracle za účelem změny datového typu

Datový typ libovolného sloupce můžeme změnit pomocí příkazu alter table modify

ALTER TABLE <table_name>
MODIFY (<column_name>  <new_data_type>);
Before
SQL> desc emp
 Name                                      Null?    Type
 ----------------------------------------- -------- -----------------------
 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)


After
SQL> desc emp
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                              VARCHAR2(20)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)

upravit datový typ sloupce v oracle

Přidat nový sloupec/vypustit sloupec/přejmenovat sloupec

Můžeme přidat nový sloupec do definice tabulky

Pomocí příkazu alter table add 

ALTER TABLE <table_name>
ADD (<New column_name>  <new_data_type>);

Oracle umožňuje přejmenovat existující sloupce v tabulce. K přejmenování sloupce použijte klauzuli RENAME COLUMN příkazu ALTER TABLE .

Oracle umožňuje vypustit sloupec v tabulce pomocí příkazu

Změnit tabulku drop column;
Prostudujte si níže uvedený článek, kde se o nich dozvíte podrobněji

změnit tabulku přidat sloupec oracle

Nastavte sloupec jako nepoužitý  a nepoužitý sloupec zrušte

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.
Example
ALTER TABLE <table_name>
SET UNUSED COLUMN <column_name>;

Nepoužitý sloupec můžeme vypustit později, když bude zdroj nižší, pomocí příkazu

ALTER TABLE <table_name>
Drop  UNUSED COLUMN ;

Přidejte, upravte nebo zrušte omezení integrity spojená s tabulkou  nebo můžete omezení také povolit/zakázat

Přidat omezení  se provádí pomocí alter table add constraints

ALTER TABLE EMP ADD CONSTRAINT EMP_FK FOREIGN KEY (DEPT_NO) REFERENCES 
DEPT(DEPT_NO);

Odstranění omezení – se provádí pomocí

ALTER TABLE DROP CONSTRAINT <constraint_name> command;

Povolení/zakázání omezení – omezení lze vytvořit v režimu DISABLE/ENABLE nebo je lze deaktivovat či povolit pomocí příkazu

ALTER TABLE ENABLE/DISABLE CONSTRAINT <constraint_name>

Přejmenovat název tabulky

Oracle vám také umožňuje přejmenovat název tabulky

Rename <table name>  to <new table name>;

Změna mezipaměti tabulky/bez mezipaměti,  komprese, paralelismus

Oracle umožňuje Změna mezipaměti tabulky/bez mezipaměti,  komprese, paralelismus

Související články

Vypsat všechny tabulky v Oracle
vytvořit tabulku oracle
ora-20005:statistika objektů je uzamčena
změnit přesun tabulky
jak zkontrolovat všechna omezení na tabulce v oracle
https ://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_3001.htm


  1. Připojte se k nám v Amsterdamu na setkání s OptimaData &VidaXL

  2. mysql - kolik sloupců je příliš mnoho?

  3. Dynamické maskování dat v SQL Server pro pokročilé uživatele

  4. Jak dám každému registrovanému uživateli jeho vlastní URL pomocí PHP?