Č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
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