Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

thay đổi cột đổi tên bảng trong cơ sở dữ liệu oracle

Oracle cho phép bạn đổi tên các cột hiện có trong bảng. Sử dụng mệnh đề RENAME COLUMN của câu lệnh ALTER TABLE để đổi tên cột i, e thay đổi cột đổi tên bảng trong oracle

Cú pháp

ALTER TABLE table_name
RENAME COLUMN old_name to new_name;

Hãy xem ví dụ này

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

Hãy đổi tên cột ngay bây giờ

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

SQL>Desc DEPT_MASTER

Giới hạn và Điều gì được Cho phép

(1) Bạn không thể đổi tên nhiều lần trong một câu lệnh duy nhất

Hãy xem với ví dụ.

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

Vì vậy, bạn gặp lỗi ORA khi cố gắng bao gồm hai cột trong đó. Bạn phải thực hiện các câu lệnh riêng biệt để thay đổi nhiều cột.

ALTER TABLE DEPT_MASTER
RENAME COLUMN DEPT_NR_NEW to DEPT_NR;

ALTER TABLE DEPT_MASTER
RENAME COLUMN DEPT_NAME to DEPT_N;

(2) Bạn có thể đổi tên cột ngay cả khi chúng tôi có khóa chính, có ràng buộc về nó.

Nó sẽ tự động bắt đầu trỏ đến tên cột mới

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

Bạn có thể thấy từ ví dụ trước, kiểm tra ràng buộc được thay đổi thành tên cột mới và khóa chính cũng được thay đổi thành một cột mới

Hãy lấy một ví dụ khác với các ràng buộc khóa ngoại

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"

Chúng ta có thể thấy từ ví dụ trước, ràng buộc khóa ngoại bắt đầu tự động trỏ đến tên cột mới.

(3) Bạn có thể đổi tên cột nếu bạn có thủ tục, dạng xem trên bảng và cột đó.

Nhưng sau khi đổi tên, các đối tượng này sẽ trở nên không hợp lệ và bạn phải sửa đổi chế độ xem và gói để biên dịch nó. Hãy xem điều này với một ví dụ

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

Hy vọng bạn thích bài đăng này trên cột đổi tên bảng thay đổi trong oracle. Vui lòng cung cấp phản hồi

Cũng đã đọc
thay đổi bảng trong oracle:Thay đổi bảng trong oracle được sử dụng để sửa đổi một cột, thả và thêm các ràng buộc, thay đổi kiểu dữ liệu của cột bảng, thay đổi các thông số lưu trữ bảng
thay đổi bảng thêm cột oracle:Hữu ích thông tin chi tiết về Cách thay đổi bảng thêm oracle cột. Thông tin chi tiết về tính năng thêm cột nhanh được giới thiệu trong oracle 11g cũng đã
oracle tạo bảng:Các bảng là đơn vị lưu trữ dữ liệu cơ bản trong Cơ sở dữ liệu Oracle. chúng tôi đề cập đến cách sử dụng lệnh tạo bảng của Oracle để tạo bảng có khóa ngoại / khóa chính
thay đổi cột thả bảng trong oracle:Kiểm tra cách thả cột bằng cách sử dụng oracle thả cột bảng thay đổi, thay đổi bảng đặt cột không sử dụng oracle và thay đổi bảng thả các cột không sử dụng
cách kiểm tra tất cả các ràng buộc trên một bảng trong oracle:cách kiểm tra tất cả các ràng buộc trên một bảng trong oracle bằng cách sử dụng các chế độ xem từ điển dữ liệu dba_constraints và dba_cons_columns trong cơ sở dữ liệu Oracle
sửa đổi kiểu dữ liệu cột trong oracle:Kiểm tra bài đăng này về cách bỏ cột trong oracle bằng cách sử dụng bảng thay đổi oracle sửa đổi cột. Cột sửa đổi có thể thay đổi giá trị mặc định, không cho phép giá trị rỗng
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. Cách thay đổi ngôn ngữ cho phiên Oracle của bạn

  2. Tạo Bảng tính Excel từ Cơ sở dữ liệu Oracle

  3. Ràng buộc các tham số truy vấn theo tên với ODP.NET

  4. Hướng dẫn sql Oracle:Câu lệnh Sql cơ bản

  5. Cách xử lý Tiết kiệm ánh sáng ban ngày trong cơ sở dữ liệu Oracle