हम ओरेकल में प्राथमिक कुंजी के परिचय के साथ शुरू करेंगे और फिर हम इस पर विभिन्न प्रश्नों में गोता लगाएंगे।
प्राथमिक कुंजी का परिचय
प्राथमिक कुंजी तालिका में एक स्तंभ या स्तंभों का समूह है जो तालिका में एक पंक्ति की विशिष्ट रूप से पहचान करता है।
प्राथमिक कुंजी के गुण
- आप इसमें डुप्लिकेट मान नहीं रख सकते हैं। यानी यह तालिका में अद्वितीय होना चाहिए
- यह अशक्त नहीं हो सकता है या इसमें खाली तार नहीं हो सकते हैं
- इसे समय के साथ नहीं बदला जाना चाहिए
- हमारे पास तालिका में केवल एक प्राथमिक कुंजी हो सकती है
सुझाव
- संख्यात्मक मानों को प्राथमिक कुंजी के रूप में रखने का सुझाव दिया गया है क्योंकि यह तेज़ है
- सभी तालिकाओं में प्राथमिक कुंजी होनी चाहिए
ओरेकल में प्राथमिक कुंजी कैसे जोड़ें
प्राथमिक कुंजी को तालिका निर्माण में जोड़ा जा सकता है या तालिका निर्माण के बाद बनाया जा सकता है।
आइए पहले तालिका निर्माण के लिए जाँच करें
तालिका निर्माण में प्राथमिक कुंजी
इसे स्तंभ स्तर या तालिका स्तर पर परिभाषित किया जा सकता है। समग्र प्राथमिक कुंजी केवल तालिका स्तर पर परिभाषित की जाती हैं। जब ओरेकल प्राथमिक कुंजी बनाता है, तो यह प्राथमिक कुंजी बाधाओं को लागू करने के लिए तालिका में उस कॉलम पर अद्वितीय अनुक्रमणिका बनाता है।
आइए पहले कॉलम स्तर देखें
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 प्रदर्शन ट्यूनिंग शुरू करने के लिए यह एक अच्छा कोर्स है