Mit Oracle können Sie vorhandene Spalten in einer Tabelle umbenennen. Verwenden Sie die Klausel RENAME COLUMN der Anweisung ALTER TABLE , um die Spalte umzubenennen, z. B. die Spalte zur Umbenennung der Tabelle in Oracle
Syntax
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Sehen wir uns dieses Beispiel an
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
Lassen Sie uns die Spalte jetzt umbenennen
SQL> ALTER TABLE DEPT_MASTER RENAME COLUMN DEPT_NR to DEPT_NR_NEW; Table altered. SQL>Desc DEPT_MASTER
Beschränkung und was erlaubt ist
(1) Sie können in der Einzelanweisung nicht mehrfach umbenennen
Mal sehen mit dem Beispiel.
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
Sie erhalten also den ORA-Fehler, wenn Sie versuchen, zweispaltig darin einzuschließen. Sie müssen separate Anweisungen ausführen, um die mehreren Spalten zu ändern.
ALTER TABLE DEPT_MASTER RENAME COLUMN DEPT_NR_NEW to DEPT_NR; ALTER TABLE DEPT_MASTER RENAME COLUMN DEPT_NAME to DEPT_N;
(2) Sie können die Spalte umbenennen, selbst wenn wir einen Primärschlüssel und eine Einschränkung darauf haben.
Es wird automatisch beginnen, auf den neuen Spaltennamen zu zeigen
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
Sie können aus dem vorherigen Beispiel sehen, dass die Check-Einschränkung in den neuen Spaltennamen geändert wird und auch der Primärschlüssel in eine neue Spalte geändert wird
Nehmen wir auch ein weiteres Beispiel mit Fremdschlüsselbeschränkungen
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"
Wir können aus dem vorherigen Beispiel sehen, dass die Fremdschlüsselbeschränkung automatisch auf den neuen Spaltennamen zeigt.
(3) Sie können die Spalte umbenennen, wenn Sie die Prozedur, Ansichten für diese Tabelle und Spalte haben.
Aber nach der Umbenennung werden diese Objekte ungültig und Sie müssen die Ansicht und das Paket ändern, um sie zu kompilieren. Sehen wir uns das anhand eines Beispiels an
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
Ich hoffe, Ihnen gefällt dieser Beitrag zur Spalte zum Umbenennen von Tabellen in Oracle. Bitte geben Sie Feedback
Liest auch
Tabelle in Oracle ändern :Tabelle ändern in Oracle wird verwendet, um eine Spalte zu ändern, Einschränkungen zu löschen und hinzuzufügen, den Datentyp der Tabellenspalte zu ändern, die Speicherparameter der Tabelle zu ändern
Tabelle ändern, Spalte hinzufügen Oracle:Nützlich Einblick in das Orakel zum Ändern von Tabellenspalten hinzufügen. Details über die in Oracle 11g eingeführte Funktion zum schnellen Hinzufügen von Spalten werden ebenfalls gegeben
oracle create a table:Tabellen sind die grundlegende Einheit der Datenspeicherung in einer Oracle-Datenbank. Wir behandeln, wie Sie den Oracle-Befehl „Tabelle erstellen“ verwenden, um eine Tabelle mit Fremdschlüssel /Primärschlüssel
Änderung der Tabellenspalte in Oracle zu erstellen:Sehen Sie sich an, wie man Spalten mit „Alter Table Drop Column Oracle“ löscht, „Ändere Table Set“ und „Ungenutzte Spalte“. Tabelle ändern, unbenutzte Spalten löschen
alle Beschränkungen einer Tabelle in Oracle prüfen:alle Beschränkungen einer Tabelle in Oracle mit dba_constraints und dba_cons_columns Data Dictionary Views in der Oracle-Datenbank prüfen
Spaltendatentyp in Oracle ändern:In diesem Beitrag erfahren Sie, wie Sie eine Spalte in Oracle mithilfe von Oracle Alter Table löschen, um die Spalte zu ändern. Spalte ändern kann den Standardwert ändern, was nicht null zulässt
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables003.htm