Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ऑरैकल डेटाबेस में तालिका का नाम बदलें कॉलम बदलें

Oracle आपको किसी तालिका में मौजूदा कॉलम का नाम बदलने की अनुमति देता है। कॉलम का नाम बदलने के लिए ALTER TABLE स्टेटमेंट के RENAME COLUMN क्लॉज का उपयोग करें i,e 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

तो इसमें दो-कॉलम शामिल करने का प्रयास करते समय आपको ओआरए त्रुटि मिलती है। एकाधिक कॉलम बदलने के लिए आपको अलग-अलग स्टेटमेंट निष्पादित करने होंगे।

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:उपयोगी तालिका जोड़ने के लिए कॉलम ऑरैकल को कैसे बदलें में अंतर्दृष्टि। Oracle 11g में पेश किए गए फास्ट ऐड कॉलम फीचर के बारे में विवरण भी दिया गया है
ओरेकल एक टेबल बनाएं:टेबल्स ओरेकल डेटाबेस में डेटा स्टोरेज की मूल इकाई हैं। हम विदेशी कुंजी/प्राथमिक कुंजी
ऑरैकल में टेबल ड्रॉप कॉलम को बदलने के लिए ओरेकल क्रिएट टेबल कमांड का उपयोग करने के तरीके को कवर करते हैं:टेबल ड्रॉप कॉलम ऑरैकल को बदलने के लिए कॉलम ड्रॉप करने का तरीका देखें, टेबल सेट अप्रयुक्त कॉलम ऑरैकल को बदलें और टेबल ड्रॉप अप्रयुक्त कॉलम बदलें
ऑरेकल में एक टेबल पर सभी बाधाओं की जांच कैसे करें:ओरेकल डेटाबेस में dba_constraints और dba_cons_columns डेटा डिक्शनरी व्यू का उपयोग करके ओरेकल में एक टेबल पर सभी बाधाओं की जांच कैसे करें
ओरेकल में कॉलम डेटाटाइप को संशोधित करें:इस पोस्ट को देखें कि कैसे ऑरैकल में कॉलम ड्रॉप करने के लिए ऑरैकल चेंज टेबल का उपयोग करके कॉलम को संशोधित करें। संशोधित कॉलम डिफ़ॉल्ट मान को बदल सकता है, शून्य की अनुमति नहीं देता
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. केस बनाम डिकोड

  2. ORA - 00933 इनर जॉइन और as . के साथ भ्रम

  3. Oracle स्कीमा उपयोगकर्ता प्रक्रिया में तालिका नहीं बना सकता

  4. पायथन मॉड्यूल cx_Oracle मॉड्यूल नहीं मिला

  5. हाइबरनेट में एक स्ट्रिंग को डीबी अनुक्रम में कैसे मैप करें?