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

उदाहरण के साथ Oracle में प्राथमिक कुंजी पर शीर्ष प्रश्न

हम ओरेकल में प्राथमिक कुंजी के परिचय के साथ शुरू करेंगे और फिर हम इस पर विभिन्न प्रश्नों में गोता लगाएंगे।

प्राथमिक कुंजी का परिचय

प्राथमिक कुंजी तालिका में एक स्तंभ या स्तंभों का समूह है जो तालिका में एक पंक्ति की विशिष्ट रूप से पहचान करता है।

प्राथमिक कुंजी के गुण

  1. आप इसमें डुप्लिकेट मान नहीं रख सकते हैं। यानी यह तालिका में अद्वितीय होना चाहिए
  2. यह अशक्त नहीं हो सकता है या इसमें खाली तार नहीं हो सकते हैं
  3. इसे समय के साथ नहीं बदला जाना चाहिए
  4. हमारे पास तालिका में केवल एक प्राथमिक कुंजी हो सकती है

सुझाव

  1. संख्यात्मक मानों को प्राथमिक कुंजी के रूप में रखने का सुझाव दिया गया है क्योंकि यह तेज़ है
  2. सभी तालिकाओं में प्राथमिक कुंजी होनी चाहिए

ओरेकल में प्राथमिक कुंजी कैसे जोड़ें

प्राथमिक कुंजी को तालिका निर्माण में जोड़ा जा सकता है या तालिका निर्माण के बाद बनाया जा सकता है।
आइए पहले तालिका निर्माण के लिए जाँच करें

तालिका निर्माण में प्राथमिक कुंजी

इसे स्तंभ स्तर या तालिका स्तर पर परिभाषित किया जा सकता है। समग्र प्राथमिक कुंजी केवल तालिका स्तर पर परिभाषित की जाती हैं। जब ओरेकल प्राथमिक कुंजी बनाता है, तो यह प्राथमिक कुंजी बाधाओं को लागू करने के लिए तालिका में उस कॉलम पर अद्वितीय अनुक्रमणिका बनाता है।

आइए पहले कॉलम स्तर देखें

Column Level
 SQL> CREATE TABLE DEPT_MASTER (
     dept_nr NUMBER PRIMARY KEY,
     dept_name varchar2(100) NOT NULL,
     dept_status NUMBER(1,0) NOT NULL,
     created_at date
   2  );  
 Table created.
 SQL> desc DEPT_MASTER
  Name                                      Null?    Type
 
  DEPT_NR                                   NOT NULL NUMBER
  DEPT_NAME                                 NOT NULL VARCHAR2(100)
  DEPT_STATUS                               NOT NULL NUMBER(1)
  CREATED_AT                                         DATE
 
SQL>  select index_name from dba_indexes where table_name='DEPT_MASTER';
INDEX_NAME
**********
 SYS_C0013850522

SQL> select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='DEPT_MASTER';
 CONSTRAINT_NAME      INDEX_NAME           CONSTRAINT_TYPE
 
 SYS_C00478605                             C
 SYS_C00478606                             C
 SYS_C00478607        SYS_C00478607        P

आइए अब तालिका स्तर के लिए देखें

Table Level
SQL> CREATE TABLE DEPT_MASTER (
     dept_nr NUMBER ,
     dept_name varchar2(100) NOT NULL,
     dept_status NUMBER(1,0) NOT NULL,
     created_at date,
 PRIMARY KEY ("DEPT_NR")
    );   2    3    4    5    6    7
 Table created.
 
SQL>  select index_name from dba_indexes where table_name='DEPT_MASTER';
 INDEX_NAME
 SYS_C0013850525

SQL> select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='DEPT_MASTER';
 CONSTRAINT_NAME      INDEX_NAME           CONSTRAINT_TYPE
 
 SYS_C00478605                             C
 SYS_C00478606                             C
 SYS_C00478607        SYS_C00478607        P

जैसा कि नीचे दिखाया गया है, हम ऐड बाधा क्लॉज का उपयोग करके प्राथमिक कुंजी बाधा का कस्टम नाम भी दे सकते हैं

SQL> CREATE TABLE DEPT_MASTER (
     dept_nr NUMBER ,
     dept_name varchar2(100) NOT NULL,
     dept_status NUMBER(1,0) NOT NULL,
     created_at date,
 CONSTRAINT PK_DEPT_NR PRIMARY KEY ("DEPT_NR") ); 
 Table created.

 SQL> select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='DEPT_MASTER';
 CONSTRAINT_NAME      INDEX_NAME           CONSTRAINT_TYPE
 
 SYS_C00478609                             C
 SYS_C00478608                             C
 PK_DEPT_NR           PK_DEPT_NR           P

प्राथमिक वाली तालिका को आरेख के रूप में दर्शाया जा सकता है

तालिका बदलें प्राथमिक कुंजी जोड़ें

आइए देखें कि तालिका निर्माण के बाद प्राथमिक को कैसे जोड़ा जाए

CREATE TABLE DEPT_MASTER (
     dept_nr NUMBER ,
     dept_name varchar2(100) NOT NULL,
     dept_status NUMBER(1,0) NOT NULL,
     created_at date
     );  

 SQL> alter table DEPT_MASTER add primary  key ( dept_nr);
 Table altered.

 SQL>  select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='DEPT_MASTER';

 CONSTRAINT_NAME      INDEX_NAME           CONST
 
 SYS_C00485778                             C
 SYS_C00485779                             C
 SYS_C00485780        SYS_C00485780        P

हम प्राथमिक कुंजी जोड़ते समय कस्टम नाम भी दे सकते हैं

SQL> alter table DEPT_MASTER add constraint DEPT_MASTER_ID  primary  key ( dept_nr);
 Table altered.
 
SQL>  select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='DEPT_MASTER';
 CONSTRAINT_NAME      INDEX_NAME           CONST
 
 SYS_C00485778                             C
 SYS_C00485779                             C
 DEPT_MASTER_ID       DEPT_MASTER_ID       P

ओरेकल में समग्र प्राथमिक कुंजी कैसे बनाएं

आइए अब देखें कि समग्र कुंजी के लिए प्राथमिक कुंजी कैसे जोड़ें

CREATE TABLE CUSTOMER(
    CUSTOMER_ID   NUMBER(6,0),  
    NAME VARCHAR (20)     NOT NULL,
    AGE  NUMBER(6,0)    NOT NULL,
    ADDRESS   VARCHAR2(25), 
    SALARY   NUMBER(6,0),     
    PRIMARY KEY (CUSTOMER_ID, NAME)
 );
 
 SQL> col CONSTRAINT_NAME  format a20
 SQL>  col INDEX_NAME format a20
 SQL> col CONSTRAINT_TYPE format a5
 SQL>  select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='CUSTOMER'; 
 CONSTRAINT_NAME      INDEX_NAME           CONST
 
 SYS_C00485772                             C
 SYS_C00485773                             C
 SYS_C00485774        SYS_C00485774        P

हम समग्र कुंजी पर भी प्राथमिक कुंजी बाधाओं के लिए कस्टम नाम दे सकते हैं

SQL>CREATE TABLE CUSTOMER(
    CUSTOMER_ID   NUMBER(6,0),
    NAME VARCHAR (20)     NOT NULL,
    AGE  NUMBER(6,0)    NOT NULL,
    ADDRESS   VARCHAR2(25), SQL>
    SALARY   NUMBER(6,0),
  CONSTRAINT PK_CUSTOMER  PRIMARY KEY (CUSTOMER_ID, NAME)
 );
 Table created.
 
SQL> select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='CUSTOMER';
 CONSTRAINT_NAME      INDEX_NAME           CONST
 
 SYS_C00485776                             C
 SYS_C00485775                             C
 PK_CUSTOMER          PK_CUSTOMER          P

समग्र प्राथमिक को इस रूप में दर्शाया जा सकता है

प्राथमिक कुंजी को oracle में कैसे छोड़ें

हम नीचे दिए गए कमांड का उपयोग करके प्राथमिक कुंजी को छोड़ सकते हैं। हम ड्रॉप प्राथमिक कुंजी या ड्रॉप बाधाओं का उपयोग कर सकते हैं

SQL>  select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='DEPT_MASTER';
 CONSTRAINT_NAME      INDEX_NAME           CONST
 
 SYS_C00485778                             C
 SYS_C00485779                             C
 DEPT_MASTER_ID       DEPT_MASTER_ID       P
 
SQL> alter table DEPT_MASTER  drop  primary  key;
 Table altered.

SQL> select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='DEPT_MASTER';
 CONSTRAINT_NAME      INDEX_NAME           CONST
 
 SYS_C00485778                             C
 SYS_C00485779                             C

SQL> alter table DEPT_MASTER add constraint DEPT_MASTER_ID  primary  key ( dept_nr);
 Table altered.

SQL>  alter table DEPT_MASTER  drop constraint DEPT_MASTER_ID;
 Table altered.

SQL>  select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='DEPT_MASTER';
 CONSTRAINT_NAME      INDEX_NAME           CONST
 
 SYS_C00485778                             C
 SYS_C00485779                             C

प्राथमिक कुंजी बाधाओं को कैसे सक्षम/अक्षम करें

SQL> alter table DEPT_MASTER enable  primary key;  
Table altered.   

SQL>  alter table DEPT_MASTER  disable primary key;  
Table altered. 

SQL> alter table DEPT_MASTER  disable constraint DEPT_MASTER_ID;  Table altered. 

SQL> alter table DEPT_MASTER enable constraint DEPT_MASTER_ID; 
 Table altered

इंडेक्स का उपयोग करके प्राथमिक कुंजी कैसे जोड़ें

जब ओरेकल प्राथमिक कुंजी बनाता है, तो यह प्राथमिक कुंजी बाधाओं को लागू करने के लिए तालिका में उस कॉलम पर अद्वितीय अनुक्रमणिका बनाता है। लेकिन अगर तालिका में प्राथमिक कुंजी जोड़ने से पहले एक इंडेक्स है, तो ओरेकल उस इंडेक्स का उपयोग प्राथमिक कुंजी बाधाओं के लिए भी कर सकता है। Oracle अद्वितीय, गैर-अद्वितीय और समग्र अनुक्रमणिका दोनों पर प्राथमिक कुंजी बाधाओं को लागू कर सकता है। Oracle पहले से मौजूद अनुक्रमणिका तालिका के आधार पर अनुक्रमणिका का उपयोग करेगा। यदि हम किसी विशेष इंडेक्स का उपयोग करके बाधा को लागू करना चाहते हैं तो हम प्राथमिक कुंजी निर्माण समय पर भी इंडेक्स क्लॉज का उपयोग कर सकते हैं

SQL> create index DEPT_MASTER_IDX on DEPT_MASTER(dept_nr);
 Index created.

 SQL> alter table DEPT_MASTER add constraint DEPT_MASTER_ID  primary  key ( dept_nr) using index DEPT_MASTER_IDX;
 Table altered.

 SQL> col CONSTRAINT_NAME  format a20
 SQL> col INDEX_NAME format a20
 SQL> col CONSTRAINT_TYPE format a5
 SQL> /
 CONSTRAINT_NAME      INDEX_NAME           CONST
 
 DEPT_MASTER_ID       DEPT_MASTER_IDX      P
 SYS_C00485779                             C
 SYS_C00485778                             C

यहां तक ​​​​कि अगर हम इस पहले के बयान में इंडेक्स का उपयोग नहीं करते हैं, तब भी ऑरेकल में प्राथमिक कुंजी बाधाओं को लागू करने के लिए एक ही गैर-अद्वितीय अनुक्रमणिका होगी

SQL> create index DEPT_MASTER_IDX on DEPT_MASTER(dept_nr);
 Index created.
 
SQL> alter table DEPT_MASTER add constraint DEPT_MASTER_ID  primary  key ( dept_nr);
 Table altered.
 
SQL> col CONSTRAINT_NAME  format a20
 SQL> col INDEX_NAME format a20
 SQL> col CONSTRAINT_TYPE format a5
 SQL> /
 CONSTRAINT_NAME      INDEX_NAME           CONST
 
 DEPT_MASTER_ID       DEPT_MASTER_IDX      P
 SYS_C00485779                             C
 SYS_C00485778      

ओरेकल में प्राथमिक कुंजी को कैसे संशोधित करें

हम केवल प्राथमिक कुंजी मान को संशोधित नहीं कर सकते। हमें पुरानी कुंजी को छोड़ना होगा और नया प्राथमिक बनाना होगा। अगर हमारे पास उनको संदर्भित करने वाली विदेशी कुंजी बाधाएं हैं। तो हमें पहले उन्हें छोड़ना होगा और प्राथमिक कुंजी को छोड़ना होगा और फिर से नई प्राथमिक कुंजी बनाना होगा

ऑरैकल में प्राथमिक कुंजी को ऑटो इंक्रीमेंट कैसे करें

12c के साथ, हमारे पास प्राथमिक कुंजी के लिए ऑटो इंक्रीमेंट को लागू करने के दो आसान तरीके हैं

पहचान कॉलम
Oracle Database 12c में, हम SQL कीवर्ड IDENTITY के साथ टेबल कॉलम को परिभाषित कर सकते हैं जो एक अमेरिकी राष्ट्रीय मानक संस्थान (ANSI) SQL कीवर्ड है। जो इंसर्शन के समय ऑटो-इन्क्रीमेंटेड होते हैं (जैसे MySQL में)।

Example:
create table test
(
id number generated as identity PRIMARY KEY,
name varchar2(100),
email varchar2(100),
password varchar2(100)firstname varchar2(100)lastname varchar2(100)
);

डिफ़ॉल्ट मान के रूप में अनुक्रम
Oracle डेटाबेस 12c के साथ, हम सीधे एक कॉलम के लिए डिफ़ॉल्ट मान के रूप में सीक्वेंस नेक्स्टवल असाइन कर सकते हैं, इसलिए अब आपको सीक्वेंस के अगले मान के साथ कॉलम को पॉप्युलेट करने के लिए ट्रिगर बनाने की आवश्यकता नहीं है, आपको बस इसे घोषित करने की आवश्यकता है तालिका परिभाषा। यह ओरेकल में एक कॉलम के लिए MySQL की तरह ऑटो-इन्क्रीमेंट फीचर का एक प्रकार है

Example:
create sequence tech_test_seq start with 1 increment by 1 nocycle;
create table test
(
id number default tech_test_seq.nextval primary key
name varchar(30)
);

ओरेकल में प्राथमिक कुंजी का नाम कैसे बदलें

हम आसानी से प्राथमिक कुंजी बाधाओं का नाम बदल सकते हैं तालिका का नाम बदलें sql बदलें। यह प्रसंस्करण और विदेशी कुंजी को प्रभावित नहीं करता है

CREATE TABLE DEPT_MASTER (
     dept_nr NUMBER ,
     dept_name varchar2(100) NOT NULL,
     dept_status NUMBER(1,0) NOT NULL,
     created_at date
     );
alter table DEPT_MASTER add constraint DEPT_MASTER_ID primary key ( dept_nr);
Table altered.

select CONSTRAINT_NAME from user_constraints where TABLE_NAME='DEPT_MASTER' and constraint_type = 'P';
CONSTRAINT_NAME
-------------
DEPT_MASTER_ID

ALTER TABLE DEPT_MASTER RENAME CONSTRAINT DEPT_MASTER_ID TO DEPT_MASTER_ID_PK;

select CONSTRAINT_NAME from user_constraints where TABLE_NAME='DEPT_MASTER' and constraint_type = 'P';
CONSTRAINT_NAME
-------------
DEPT_MASTER_ID_PK


I hope you like the content on  primary key and it clear all doubts about the Primary Key concept. Please do provide the feedback and what else can be added in this post 

यह भी पढ़ता है
Oracle में बाधा की जाँच करें:Oracle Check Constraint का उपयोग तार्किक अभिव्यक्तियों के आधार पर अखंडता नियमों को लागू करने के लिए किया जाता है, जैसे कि तुलना। चेक की स्थिति सही या गलत लौटनी चाहिए
Oracle में शून्य बाधा नहीं:
Oracle में NVL2 फ़ंक्शन:उदाहरणों के साथ Oracle में NVL2 फ़ंक्शन का उपयोग करना सीखें
तालिका बदलें कॉलम oracle संशोधित करें
https://en.wikipedia.org/wiki/Primary_key

अनुशंसित पाठ्यक्रम

यहाँ Oracle SQL के लिए अच्छा Udemy कोर्स है
Oracle-Sql-Step-by-step :इस कोर्स में बेसिक sql, जॉइन, टेबल बनाना और इसकी संरचना को संशोधित करना, व्यू, यूनियन, यूनियन -ऑल और बहुत कुछ शामिल है। . SQL स्टार्टर के लिए एक बढ़िया कोर्स और अनिवार्य कोर्स
पूर्ण Oracle SQL प्रमाणन पाठ्यक्रम :यह उन लोगों के लिए एक अच्छा कोर्स है जो SQL डेवलपर कौशल के लिए नौकरी के लिए तैयार होना चाहते हैं। एक अच्छा समझाया गया कोर्स
Oracle SQL Developer:Essentials, Tips and Tricks :Oracle Sql डेवलपर टूल का उपयोग कई डेवलपर्स द्वारा किया जा रहा है। यह कोर्स हमें प्रभावी ढंग से इसका उपयोग करने और एक उत्पादक sql डेवलपर बनने के तरीके के बारे में ट्रिक्स और सबक देता है
Oracle SQL प्रदर्शन ट्यूनिंग मास्टरक्लास 2020 :प्रदर्शन ट्यूनिंग एक महत्वपूर्ण और सर्वाधिक मांग वाला कौशल है। इसके बारे में जानने और sql प्रदर्शन ट्यूनिंग शुरू करने के लिए यह एक अच्छा कोर्स है


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL*Plus SQL स्क्रिप्ट निष्पादित नहीं करता है जो SQL डेवलपर करता है

  2. बाइट लंबाई के आधार पर UTF8 स्ट्रिंग को छोटा करने का सबसे अच्छा तरीका

  3. Oracle में LOWER () फंक्शन

  4. MySQL और Oracle के साथ ऑटो कुंजी पीढ़ी को हाइबरनेट करें

  5. प्रतीक्षा घटना:एसिंच डिस्क्रिप्टर का आकार बदलें