Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Ändern Sie die Umbenennungsspalte der Tabelle in der Oracle-Datenbank

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