Oracle ви позволява да преименувате съществуващи колони в таблица. Използвайте клаузата RENAME COLUMN от оператора ALTER TABLE , за да преименувате колона i, т.е. да промените колоната за преименуване на таблица в oracle
Синтаксис
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Нека видим този пример
SQL> CREATE TABLE DEPT_MASTER ( dept_nr NUMBER UNIQUE, dept_name varchar2(100) NOT NULL, dept_status NUMBER(1,0) NOT NULL, created_at date ); Table created. SQL> Desc DEPT_MASTER
Нека сега преименуваме колоната
SQL> ALTER TABLE DEPT_MASTER RENAME COLUMN DEPT_NR to DEPT_NR_NEW; Table altered. SQL>Desc DEPT_MASTER
Ограничение и какво е разрешено
(1) Не можете да преименувате многократно в един израз
Да видим с примера.
SQL> ALTER TABLE DEPT_MASTER RENAME COLUMN DEPT_NR_NEW to DEPT_NR, DEPT_NAME to DEPT_N; 2 ALTER TABLE DEPT_MASTER * ERROR at line 1: ORA-23290: This operation may not be combined with any other operation SQL> ALTER TABLE DEPT_MASTER RENAME COLUMN DEPT_NR_NEW to DEPT_NR,COLUMN DEPT_NAME to DEPT_N; 2 ALTER TABLE DEPT_MASTER * ERROR at line 1: ORA-23290: This operation may not be combined with any other operation
Така че получавате грешката ORA, когато се опитвате да включите две колони в нея. Трябва да изпълните отделни оператори, за да промените множеството колони.
ALTER TABLE DEPT_MASTER RENAME COLUMN DEPT_NR_NEW to DEPT_NR; ALTER TABLE DEPT_MASTER RENAME COLUMN DEPT_NAME to DEPT_N;
(2) Можете да преименувате колоната, дори да имаме първичен ключ, ограничение върху нея.
Тя автоматично ще започне да сочи към името на новата колона
SQL> CREATE TABLE "EMP" ( "EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) check(SAL > 1000), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") ); Table created. SQL> alter table emp rename column EMPNO to EMP_NO; Table altered. SQL> desc emp Name Null? Type --- ---- --- EMP_NO 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) SQL> alter table emp rename column sal to salary; Table altered SQL> desc emp Name Null? Type --- ----- ---- EMP_NO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SALARY NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) SQL> set long 2000 SQL> select dbms_metadata.get_ddl('TABLE','EMP','SCOTT') from dual; CREATE TABLE "SCOTT"."EMP" ( "EMP_NO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SALARY" NUMBER(7,2), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CHECK ("SALARY">1000) ENABLE, CONSTRAINT "PK_EMP" PRIMARY KEY ("EMP_NO") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 TABLESPACE "TOOLS" ENABLE ) SEGMENT CREATION DEFERRED PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
Можете да видите от предишния пример, проверка на ограничението се променя на новото име на колона, а също така първичният ключ също се променя на нова колона
Нека вземем и друг пример с ограничения на външния ключ
SQL> CREATE TABLE "DEPT" ( "DEPTNO" NUMBER(2,0), "DNAME" VARCHAR2(14), "LOC" VARCHAR2(13), CONSTRAINT "PK_DEPT" PRIMARY KEY ("DEPTNO") ) Table created. SQL> CREATE TABLE "EMP" ( "EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"), CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO") REFERENCES "DEPT" ("DEPTNO") ENABLE ); Table created. SQL> insert into DEPT values(10, 'ACCOUNTING', 'NEW YORK'); insert into dept values(20, 'RESEARCH', 'DALLAS'); insert into dept values(30, 'RESEARCH', 'DELHI'); insert into dept values(40, 'RESEARCH', 'MUMBAI'); SQL> insert into emp values( 7698, 'Blake', 'MANAGER', 7839, to_date('1-5-2007','dd-mm-yyyy'), 2850, null, 10 ); SQL> insert into emp values( 7782, 'Clark', 'MANAGER', 7839, to_date('9-6-2008','dd-mm-yyyy'), 2450, null, 10 ); insert into emp values( 7788, 'Scott', 'ANALYST', 7566, to_date('9-6-2012','dd-mm-yyyy'), 3000, null, 20 ); insert into emp values( 7789, 'TPM', 'ANALYST', 7566, to_date('9-6-2017','dd-mm-yyyy'), 3000, null, null ); insert into emp values( 7560, 'T1OM', 'ANALYST', 7567, to_date('9-7-2017','dd-mm-yyyy'), 4000, null, 20 ); insert into emp values( 7790, 'TOM', 'ANALYST', 7567, to_date('9-7-2017','dd-mm-yyyy'), 4000, null, null ); SQL> SQL> commit; Commit complete. SQL> ALTER TABLE DEPT RENAME COLUMN DEPTNO to DEPTNO_NEW; Table altered. SQL> select dbms_metadata.get_ddl('TABLE','EMP','SCOTT') from dual; CREATE TABLE "SCOTT"."EMP" ( "EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"), CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO") REFERENCES "SCOTT"."DEPT" ("DEPTNO_NEW") ENABLE ) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "TOOLS"
От предишния пример можем да видим, че ограничението на външния ключ започва автоматично да сочи към името на новата колона.
(3) Можете да преименувате колоната, ако имате процедурата, изгледите на тази таблица и колоната.
Но след преименуването тези обекти ще станат невалидни и трябва да промените изгледа и пакета, за да го компилирате. Нека видим това с пример
SQL> CREATE TABLE DEPT_MASTER ( dept_nr NUMBER UNIQUE, dept_name varchar2(100) NOT NULL, dept_status NUMBER(1,0) NOT NULL, created_at date ); Table created. SQL> create view dept_vw as select dept_nr,dept_name from DEPT_MASTER; View created. SQL> ALTER TABLE DEPT_MASTER RENAME COLUMN DEPT_NR to DEPT_NR_NEW; Table altered. SQL> select status from user_objects where object_name='DEPT_VW'; STATUS ------ INVALID SQL> alter view DEPT_VW compile; Warning: View altered with compilation errors. SQL> create or replace view dept_vw as select dept_nr_new,dept_name from DEPT_MASTER; View created. SQL> select status from user_objects where object_name='DEPT_VW'; STATUS ------ VALID
Надяваме се, че ви харесва тази публикация за колоната за преименуване на таблицата в oracle. Моля, дайте обратна връзка
Също чете
alter table in oracle :Alter table in oracle се използва за промяна на колона, пускане и добавяне на ограничения, промяна на типа данни на колоната на таблицата, промяна на параметрите за съхранение на таблицата
alter table add column oracle:Полезно поглед върху Как да промените таблицата, добавите колона оракул. Подробности за функцията за бързо добавяне на колони, въведена в oracle 11g, също са дадени
оракул създава таблица:Таблиците са основната единица за съхранение на данни в базата данни на Oracle. ние разглеждаме как да използвате командата за създаване на таблица на Oracle за създаване на таблица с външен ключ /първичен ключ
променете колона за отпадане на таблицата в oracle:Вижте как да премахнете колона с помощта на alter table drop column oracle, alter table set неизползвана колона oracle и alter table drop неизползвани колони
как да проверите всички ограничения на таблица в oracle:как да проверите всички ограничения на таблица в oracle, използвайки dba_constraints и dba_cons_columns изгледи на речник на данни в базата данни на Oracle
променете типа данни на колоната в oracle:Вижте тази публикация за това как да пуснете колона в oracle с помощта на oracle alter table, модифицирайте колоната. Колоната Modify може да променя стойността по подразбиране, позволявайки да не е null
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables003.htm