Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ubah tabel, ganti nama kolom di database Oracle

Oracle memungkinkan Anda untuk mengganti nama kolom yang ada dalam sebuah tabel. Gunakan klausa RENAME COLUMN dari pernyataan ALTER TABLE untuk mengganti nama kolom yaitu mengubah tabel rename kolom di oracle

Sintaks

ALTER TABLE table_name
RENAME COLUMN old_name to new_name;

Mari kita lihat contoh ini

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

Mari kita ganti nama kolom sekarang

SQL> ALTER TABLE DEPT_MASTER
RENAME COLUMN DEPT_NR to DEPT_NR_NEW;
Table altered.

SQL>Desc DEPT_MASTER

Batasan dan Apa yang Diizinkan

(1) Anda tidak dapat mengganti banyak nama dalam satu pernyataan

Mari kita lihat dengan contoh.

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

Jadi Anda mendapatkan kesalahan ORA saat mencoba memasukkan dua kolom di dalamnya. Anda harus menjalankan pernyataan terpisah untuk mengubah beberapa kolom.

ALTER TABLE DEPT_MASTER
RENAME COLUMN DEPT_NR_NEW to DEPT_NR;

ALTER TABLE DEPT_MASTER
RENAME COLUMN DEPT_NAME to DEPT_N;

(2) Anda dapat mengganti nama kolom meskipun kami memiliki kunci utama, batasan ada padanya.

Ini akan secara otomatis mulai menunjuk ke nama kolom baru

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

Anda dapat melihat dari contoh sebelumnya, centang kendala diubah ke nama kolom baru, dan juga kunci utama juga diubah ke kolom baru

Mari kita ambil contoh lain dengan batasan kunci asing juga

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"

Kita dapat melihat dari contoh sebelumnya, batasan kunci asing mulai menunjuk ke nama kolom baru secara otomatis.

(3) Anda dapat mengganti nama kolom jika Anda memiliki prosedur, tampilan pada tabel itu, dan kolom.

Tetapi setelah diganti namanya, objek-objek ini akan menjadi tidak valid dan Anda harus memodifikasi tampilan dan paket untuk mengompilasinya. Mari kita lihat ini dengan sebuah contoh

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

Semoga Anda menyukai posting ini di kolom alter table rename di Oracle. Harap berikan umpan balik

Juga Dibaca
ubah tabel di oracle :Ubah tabel di oracle digunakan untuk mengubah kolom, menghapus dan menambahkan batasan, mengubah tipe data kolom tabel, mengubah parameter penyimpanan tabel
mengubah tabel menambah kolom oracle:Berguna wawasan tentang Cara mengubah tabel tambahkan kolom Oracle. Detail tentang fitur penambahan kolom cepat yang diperkenalkan di oracle 11g juga diberikan
oracle create a table:Tabel adalah unit dasar penyimpanan data dalam Oracle Database. kami membahas cara menggunakan perintah buat tabel Oracle untuk membuat tabel dengan kunci asing / kunci utama
mengubah kolom drop tabel di oracle:Lihat cara menjatuhkan kolom menggunakan ubah tabel drop kolom oracle, ubah set tabel oracle kolom yang tidak digunakan dan ubah tabel jatuhkan kolom yang tidak digunakan
cara memeriksa semua batasan pada tabel di Oracle:cara memeriksa semua batasan pada tabel di Oracle menggunakan dba_constraints dan dba_cons_columns tampilan kamus data di database Oracle
modifikasi tipe data kolom di Oracle:Lihat posting ini tentang cara menjatuhkan kolom di Oracle menggunakan tabel ubah oracle, modifikasi kolom. Memodifikasi kolom dapat mengubah nilai default, memungkinkan tidak null
https://docs.Oracle.com/cd/B28359_01/server.111/b28310/tables003.htm


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah Oracle mengembalikan transaksi pada kesalahan?

  2. Bagaimana cara mengkonfigurasi DbContext agar berfungsi dengan Oracle ODP.Net dan EF CodeFirst?

  3. Pertarungan Urutan RAC

  4. Atasi Kesalahan PLS-00323 di Oracle

  5. Pengantar Native Dynamic SQL Di Oracle Database