अन्य स्कीमा ऑब्जेक्ट बनाना

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

विचारों

एक डेटाबेस दृश्य एक तार्किक या वर्चुअल टेबल है जो एक क्वेरी पर आधारित है। व्यूज को टेबल की तरह ही क्वियर किया जाता है। इसका मतलब है कि आपके नजरिए से डेवलपर के रूप में या डेटाबेस सिस्टम यूजर के नजरिए से, एक व्यू टेबल की तरह दिखता है। एक व्यू की परिभाषा किसी ऑब्जेक्ट को डेटाबेस के डेटा शब्दकोश में संग्रहीत किया जाता है; हालाँकि, कोई दृश्य स्वयं कोई डेटा संग्रहीत नहीं करता है। डेटाबेस दृश्य बनाने के लिए निष्पादन योजना को भी संग्रहीत करता है-इसका मतलब है कि दृश्य के उपयोग के माध्यम से डेटा को तेजी से पुनर्प्राप्त किया जा सकता है, भले ही दृश्य के चयन क्वेरी द्वारा प्रस्तुत वास्तविक डेटा संग्रहीत नहीं है। एक दृश्य के भाग के रूप में। डेटा को हर बार "एक साथ इकट्ठा किया जाता है" डेटाबेस तालिकाओं से एक दृश्य को देखा जाता है जिसके लिए एक दृश्य को परिभाषित किया जाता है-जिन्हें आधार तालिका कहा जाता है।

सामान्य सिंटैक्स नीचे दिया गया है।

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW [ViewName]
[(Column Alias Name...)] 
AS [Query]
[WITH [CHECK OPTION] [READ ONLY] [CONSTRAINT]];

वाक्य रचना से,

बल विकल्प एक दृश्य तालिका बनाने की अनुमति देता है, भले ही एक आधार तालिका हो जो दृश्य संदर्भ पहले से मौजूद नहीं है। यह विकल्प आधार तालिका के वास्तविक निर्माण से पहले और डेटा के साथ एक दृश्य बनाने के लिए उपयोग किया जाता है।

NOFORCE विकल्प FORCE के विपरीत है और सिस्टम उपयोगकर्ता को एक दृश्य बनाने की अनुमति देता है यदि उनके पास एक दृश्य बनाने के लिए आवश्यक विशेषाधिकार हैं, और यदि तालिका जिसमें से दृश्य बनाया गया है, पहले से मौजूद हैं। यह डिफॉल्ट विकल्प है।

केवल पढ़ें विकल्प के साथ एक दृश्य के निर्माण की अनुमति देता है, जो पढ़ा जाता है। केवल। आप केवल पढ़ने के लिए डेटा को संशोधित करने के लिए DELETE, INSERT, या UPDATE आदेशों का उपयोग नहीं कर सकते।

चेक विकल्प खंड के साथ उन पंक्तियों के अद्यतन की अनुमति देता है जिन्हें दृश्य के माध्यम से चुना जा सकता है। यह आपको मूल्यों पर अवरोधों को निर्दिष्ट करने में सक्षम बनाता है। CONSTRAINT खंड एक अद्वितीय नाम असाइन करने के लिए डेटाबेस व्यवस्थापक को सक्षम करने के लिए CHECK OPTION खंड के साथ संयोजन के रूप में काम करता है। चेक विकल्प के लिए। यदि एक डेटाबेस प्रशासक CONSTRAINT क्लॉज को छोड़ देता है, तो ओरेकल अपने आप एक सिस्टम-जनित नाम को बाधा बना देगा जो बहुत सार्थक नहीं होगा।

दृश्य के प्रकार

एक साधारण दृश्य केवल एक तालिका के शीर्ष पर बनाया गया है। यह एक सरल चयन क्वेरी है जिसमें कोई फ़ंक्शन या समूह खंड नहीं है, लेकिन बिना किसी परिवर्तन के केवल तालिका से स्तंभों का चयन किया जाता है। यदि DML दृश्य पर किया जाता है, तो यह सीधे रूप में परिलक्षित होता है बेस टेबल में।

किसी कॉम्प्लेक्स व्यू को जॉइन करके कई टेबल पर बनाया जाता है। इसमें SQL फंक्शन्स, ग्रुप बाय फंक्शन्स शामिल हो सकते हैं। लेकिन चूंकि व्यू कई डेटा पर है और कॉलम का चयन भी सरल नहीं है, इसलिए यह इस पर DML ऑपरेशन की अनुमति नहीं देता है।

चित्रण

Simple View: नीचे दिए गए सरल दृश्य में कर्मचारी नाम, विभाग आईडी और DEV के रूप में JOB आईडी वाले कर्मचारियों के लिए वेतन का चयन करें।

CREATE OR REPLACE VIEW v_emp_dev
AS
SELECT first_name, department_id, salary
FROM employees
WHERE job_id = 'DEV';

Complex view: नीचे दिए गए उदाहरण से विभाग का नाम, विभाग में निकाला गया औसत वेतन और उसमें काम करने वाले कर्मचारियों की गिनती का पता चलता है।

CREATE OR REPLACE VIEW EMP_VU
AS
SELECT department_name, AVG (salary) avg_sal, COUNT (first_name) count
FROM employees E, departments D
WHERE E.department_id = D.department_id
GROUP BY department_name;

DESCRIBE [view name]दृश्य संरचना का वर्णन करता है। स्तंभों को उसी क्रम में सूचीबद्ध किया जाता है जैसे दृश्य परिभाषा में।

एक दृश्य पर डीएमएल संचालन

डीएमएल ऑपरेशंस को सरल विचारों पर आसानी से प्रयोग किया जा सकता है। जैसा कि पहले कहा गया है, इनसर्व, अपडेट और डिलीट ऑपरेशन वास्तव में बेस टेबल पर होते हैं।

जब आप किसी दृश्य पर एक अद्यतन, DELETE, या INSERT DML कथन निष्पादित करते हैं, तो आप वास्तव में आधार तालिका या तालिकाओं के लिए डेटा पंक्तियों में हेरफेर कर रहे हैं जिस पर दृश्य परिभाषित किया गया है। UPDATE, DELETE और INSERT विवरणों के उपयोग पर प्रतिबंध हैं दृश्यों के साथ। किसी दृश्य के साथ UPDATE, DELETE, या INSERT स्टेटमेंट का उपयोग करने के लिए, दृश्य को अपडेट करने योग्य होना चाहिए। यदि चयन खंड सूची में किसी भी समुच्चय को निर्दिष्ट नहीं करता है, तो देखने योग्य है। दृश्य, दृश्य नहीं हो सका एक ग्रुप BY, DISTINCT, या UNION क्लॉज़ या क्लॉज़ के उपयोग के माध्यम से बनाया गया है। यह एक FROM क्लॉज में सेलेक्ट सबक्वेरी में उपयोग किए जाने वाले कुल कार्यों के लिए अनुमत है। इसके अलावा, दृश्य का चयन सूची में कोई व्युत्पन्न कॉलम नहीं हो सकता है। अगला, यदि कोई दृश्य JOIN ऑपरेशन (एक सम्मिलित दृश्य) के परिणाम के रूप में बनाया गया है, तो अद्यतन और INSERT विवरण एक समय में एक आधार तालिका में पंक्तियों को संशोधित या सम्मिलित कर सकते हैं। आप एकल डेटा हेरफेर भाषा (डीएमएल) स्टेटमेंट के साथ दो या अधिक तालिकाओं से पंक्तियों को संशोधित नहीं कर सकते। आमतौर पर, एक DELETE कथन केवल एक दृश्य के खिलाफ निष्पादित कर सकता है यदि तालिका से FROM खंड में संदर्भित किया जाता है। इसका सीधा सा अर्थ है कि आप किसी तालिका से पंक्तियों को हटा नहीं सकते जिन्हें निर्दिष्ट नहीं किया गया है।

चेक विकल्प खंड के साथ

चेक ऑप्शन के साथ एक वैकल्पिक क्लॉज़ है जो डेटा को व्यू के जरिए डालने या अपडेट करने के दौरान किए जाने वाले चेकिंग के स्तर को निर्दिष्ट करता है। यदि चेक व्यू ऑप्शन क्लॉज के साथ एक व्यू बनाया जाता है, जो हर पंक्ति को व्यू के माध्यम से बेस में डाला या अपडेट किया जाता है। दृश्य परिभाषा का अनुपालन करना चाहिए। ध्यान दें कि यदि दृश्य केवल-पढ़ने के लिए बनाया गया है तो विकल्प निर्दिष्ट नहीं किया जा सकता है।

उदाहरण के लिए, एक दृश्य V_EMP_DEV उन कर्मचारियों के लिए बनाया गया है जो डेवलपर्स (JOB_ID = DEV) हैं।

CREATE OR REPLACE VIEW v_emp_dev
AS
SELECT first_name, department_id, salary, 
FROM employees
WHERE job_id = 'DEV'
WITH CHECK OPTION empvu_dev;

उपयोगकर्ता एचआर कर्मचारी के वेतन को देखने के माध्यम से अपडेट करने का प्रयास करता है, लेकिन एक अपवाद का सामना करता है। इसकी वजह यह दृश्य CHECK OPTION के साथ बनाया गया था।

UPDATE v_emp_dev
SET salary = salary+500
WHERE JOB_ID = 'HR';
ORA-01402: view WITH CHECK OPTION where-clause violation

यदि यह एक सरल दृष्टिकोण होता, तो अद्यतन विवरण में कोई अपवाद नहीं होता।

दृश्य गिराना

एक डेटाबेस एडमिनिस्ट्रेटर (DBA) या व्यू ओनर, DROP VIEW स्टेटमेंट के साथ एक व्यू को ड्रॉप कर सकता है। यदि किसी व्यू ने बाधाओं को परिभाषित किया है, तो आपको व्यू ड्रॉप करते समय CASCADE CONSTRAINTS क्लॉज को निर्दिष्ट करना होगा; अन्यथा, DROP VIEW स्टेटमेंट प्रोसेस करने में विफल रहता है। यदि किसी अन्य दृश्य या अन्य डेटाबेस ऑब्जेक्ट जैसे कि एक पर्याय या भौतिक दृश्य (इन दोनों वस्तुओं पर बाद में इस अध्याय में चर्चा की गई है) एक गिरा हुआ दृश्य संदर्भित करता है, तो Oracle इन डेटाबेस ऑब्जेक्ट्स को नहीं छोड़ता है; बल्कि, ओरेकल उन्हें अमान्य के रूप में चिह्नित करता है। आप इन अमान्य वस्तुओं को छोड़ सकते हैं या उन्हें फिर से वैध बनाने के लिए उन्हें फिर से परिभाषित कर सकते हैं।

नीचे DROP VIEW कमांड डेटाबेस से EMP_VU दृश्य को गिरा देता है।

DROP VIEW EMP_VU;

दृश्यों

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

वाक्य - विन्यास

CREATE SEQUENCE <sequence name>
[INCREMENT BY < number >]
[START WITH < start value number>]
[MAXVALUE < MAXIMUM VLAUE NUMBER>]
[NOMAXVALUE]
[MINVALUE < minimum value number>]
[CYCLE | NOCYCLE]
[CACHE < number of sequence value to cache> | NOCACHE]
[ORDER | NOORDER];

वाक्य रचना से,

क्रिएट सीन विवरण में एक अद्वितीय अनुक्रम नाम निर्दिष्ट होना चाहिए। बयान में यह केवल आवश्यक क्लॉज है। यदि आप किसी अन्य खंड को निर्दिष्ट नहीं करते हैं, तो उत्पन्न सभी अनुक्रम संख्या ओरेकल डिफ़ॉल्ट सेटिंग्स का पालन करेंगे।

निर्देश द्वारा खंड यह निर्धारित करता है कि प्रत्येक संख्या के रूप में अनुक्रम वृद्धि कैसे होती है। डिफ़ॉल्ट वेतन वृद्धि एक है; हालाँकि, यदि आपके पास संख्याओं को छोड़ने के लिए अनुक्रम का एक अच्छा कारण है, तो आप एक अलग वेतन वृद्धि को निर्दिष्ट कर सकते हैं। सकारात्मक संख्यात्मक वेतन वृद्धि आपके द्वारा चुने गए अंतराल के बराबर अंतराल के साथ आरोही क्रम संख्या उत्पन्न करती है। नकारात्मक संख्यात्मक वेतन वृद्धि अवरोही क्रम संख्याएं उत्पन्न करती है।

खंड के साथ स्टार्ट अनुक्रम के लिए प्रारंभिक सांख्यिक मान को निर्दिष्ट करता है-डिफ़ॉल्ट प्रारंभिक संख्या एक है। आमतौर पर, आपको प्रारंभ मूल्य निर्दिष्ट करना होगा यदि आपके पास पहले से कॉलम में डेटा के साथ कुछ पंक्तियां हैं जो अब अनुक्रम मान संग्रहीत करेंगे।

MAXVALUE क्लॉज अधिकतम मान निर्दिष्ट करता है जिसके लिए अनुक्रम बढ़ाया जा सकता है। एक MAXVALUE की अनुपस्थिति में, एक अनुक्रम के लिए उत्पन्न होने वाले अधिकतम स्वीकार्य मूल्य काफी बड़ा है, 10 से 27 वीं शक्ति - 1. डिफ़ॉल्ट NOMAXVALUE है।

न्यूनतम खंड एक क्रमिक अनुक्रम के लिए अनुक्रम के न्यूनतम मूल्य को निर्दिष्ट करता है (एक जो अवरोही क्रम में संख्या उत्पन्न करता है)। डिफ़ॉल्ट NOMINVALUE है।

CYCLE क्लॉज निर्दिष्ट करता है कि यदि अनुक्रम निर्दिष्ट MAXVALUE तक पहुंचता है तो अनुक्रम मान का पुन: उपयोग किया जा सकता है। यदि अनुक्रम चक्र, संख्या फिर से शुरू कर रहे हैं मूल्य के साथ शुरू हो रहा है।

CACHE क्लॉज Oracle को कैश मेमोरी में स्टोर किए जाने वाले अनुक्रमित संख्याओं के एक बैच को उत्पन्न करने में सक्षम करके सिस्टम के प्रदर्शन को बेहतर बना सकता है।

यदि आप किसी संख्या को निर्दिष्ट किए बिना CACHE निर्दिष्ट करते हैं, तो डिफ़ॉल्ट कैश आकार 20 अनुक्रम संख्या है। आमतौर पर, आप अनुक्रम संख्या के कैश को रोकने के लिए NOCACHE निर्दिष्ट कर सकते हैं।

आदेश खंड निर्दिष्ट करता है कि अनुक्रम संख्या को सटीक कालानुक्रमिक क्रम में आवंटित किया गया है जिसमें वे अनुरोध किए गए हैं।

NEXTVAL और CURRVAL

अनुक्रम मान का निर्माण दो छद्म स्तंभों के नाम के माध्यम से किया जाता है जिनका नाम कर्वल और नेवल है। छद्म स्तंभ एक तालिका स्तंभ की तरह व्यवहार करता है, लेकिन छद्म स्तंभ वास्तव में एक तालिका में संग्रहीत नहीं किए जाते हैं। पहली बार जब आप अगले अंतराल छद्म कॉलम का चयन करते हैं, तो प्रारंभिक मूल्य अनुक्रम वापस आ गया है। अगले छद्म स्तंभ के बाद के चयन अनुक्रम के द्वारा क्रम में वृद्धि के कारण होता है खंड द्वारा निर्दिष्ट और नए उत्पन्न अनुक्रम मान लौटाते हैं। वक्र छद्म स्तंभ अनुक्रम के वर्तमान मूल्य को लौटाता है, जो मान द्वारा लौटाया गया मूल्य है अगले संदर्भ के लिए अंतिम।

एक सत्र में, NEXTVAL, और CURRVAL अनुक्रम पर पहली कार्रवाई नहीं होनी चाहिए। ऐसा इसलिए है क्योंकि एक सत्र में, जब NEXTVAL अनुक्रम से सत्र की पहली संख्या उत्पन्न करता है, तो Oracle CURRVAL में वर्तमान मूल्य रखता है।

वाक्य - विन्यास:

Sequence.NEXTVAL
Sequence.CURRVAL

ध्यान देने योग्य बात -

  • CURRVAL और NEXTVAL का उपयोग केवल चुनिंदा स्टेटमेंट के आउटर एसक्यूएल में किया जा सकता है।

  • CURRVAL और NEXTVAL का उपयोग INSERT स्टेटमेंट में एक कॉलम प्राइमरी की को बदलने के लिए किया जा सकता है। इसका इस्तेमाल सबकुछ क्लॉज और VALUES क्लॉज में भी किया जा सकता है।

  • CURRVAL और NEXTVAL का उपयोग तालिकाओं में मूल्यों को अद्यतन करने के लिए किया जा सकता है।

  • CURRVAL और NEXTVAL, DISTINCT कीवर्ड के साथ, ग्रुप BY, HAVING, या ORDER BY क्लॉज़ और एक क्रिएटिव टेबल या अन्य वैकल्पिक स्टेटमेंट में अभिव्यक्ति के साथ VIEW चुनिंदा सूची में नहीं हो सकता।

क्रम को संशोधित करना

अनुक्रम स्वामी, INCREMENT BY मान, MINVALUE, MAXVALUE, CYCLE या CACHE क्लॉस जैसी विशेषताओं को बदलने के लिए एक अनुक्रम को संशोधित कर सकता है। ध्यान दें कि किए गए परिवर्तन आगामी संख्याओं में परिलक्षित होंगे।

वाक्य - विन्यास:

ALTER SEQUENCE [sequence name]
INCREMENT BY n
MAXVALUE n
NOCACHE
NOCYCLE

क्रम से गिरना

DROP SEQUENCE कमांड अनुक्रमों को गिरा देता है जिन्हें फिर से बनाने की आवश्यकता होती है या जिनकी आवश्यकता नहीं होती है।

DROP SEQUENCE [sequence name]

इंडेक्स

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

इंडेक्स स्वचालित रूप से या मैन्युअल रूप से बनाए जा सकते हैं। जब आप एक प्राथमिक कुंजी बाधा या UNIQUE बाधा निर्दिष्ट करते हैं, तो Oracle स्वचालित रूप से निर्दिष्ट तालिका के लिए तेजी से डेटा पुनर्प्राप्ति का समर्थन करने के लिए एक अद्वितीय सूचकांक बनाएगा।

वैकल्पिक रूप से, उपयोगकर्ता क्वेरी प्रदर्शन को अनुकूलित करने के लिए मैन्युअल रूप से इंडेक्स बना सकता है। आमतौर पर बनाए गए इंडेक्स अद्वितीय या गैर अद्वितीय हो सकते हैं। कोई भी यूनिक इंडेक्स बी-ट्री, बिटमैप या फ़ंक्शन आधारित इंडेक्स हो सकता है। डिफ़ॉल्ट रूप से, Oracle कॉलम में बी-ट्री इंडेक्स बनाता है .यहाँ वाक्य रचना है

वाक्य - विन्यास

CREATE [UNIQUE][BITMAP]INDEX index
ON table (column [, column]...);

ध्यान दें कि UNIQUE और BITMAP को केवल विशिष्ट और बिटमैप अनुक्रमित के लिए निर्दिष्ट किया जाना चाहिए। डिफ़ॉल्ट रूप से, Oracle सामान्य अनुक्रमित के लिए B-Tree अनुक्रमणिका बनाता है।

एक समग्र सूचकांक (जिसे एक संक्षिप्त सूचकांक भी कहा जाता है) एक तालिका के कई स्तंभों पर बनाया गया सूचकांक है। एक समग्र सूचकांक में कॉलम किसी भी क्रम में दिखाई दे सकते हैं और तालिका में आसन्न कॉलम नहीं होने चाहिए। समग्र सूचकांक प्रश्नों के लिए पंक्ति पुनर्प्राप्ति गति को बढ़ाता है जिसमें समग्र खंड में स्तंभ के सभी या प्रमुख भाग को संदर्भित करता है। एक इंडेक्स में अधिकतम 32 कॉलम हो सकते हैं।

उदाहरण के लिए, एक उपयोगकर्ता EMPLOYEES तालिका के HIRE_DATE कॉलम पर अनुक्रमणिका IDX_EMP बनाता है। अनुक्रमणिका उपयोग अनुक्रमणित पथ स्कैन को ट्रेस करके डिस्क I / O को कम कर देगा और उस डेटा को खोज लेगा जो HIY_DATE स्तंभ से फ़िल्टर किया गया है।

CREATE INDEX IDX_EMP ON employees(hire_date);

सूचकांक में गिरावट

अनुक्रमणिका को संशोधित नहीं किया जा सकता है, लेकिन विश्लेषण, पुनर्निर्माण या सांख्यिकी अभिकलन उद्देश्यों के लिए परिवर्तित किया जा सकता है। यदि सूचकांक परिभाषा को संशोधित किया जाना है, तो इसे छोड़ दिया जाना चाहिए और फिर से बनाया जाना चाहिए। DROP INDEX कमांड का सिंटैक्स सरल है।

DROP INDEX index_name;

समानार्थक शब्द

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

पर्यायवाची की दो श्रेणियां हैं, सार्वजनिक और निजी। सार्वजनिक पर्यायवाची शब्द का उपयोग सभी सिस्टम उपयोगकर्ताओं के लिए किसी वस्तु तक आसानी से पहुंचने के लिए किया जा सकता है। वास्तव में, एक सार्वजनिक पर्यायवाची बनाने वाला व्यक्ति पर्यायवाची शब्द का मालिक नहीं होता है, बल्कि वह PUBLIC उपयोगकर्ता समूह से संबंधित होता है जो Oracle.Pirt पर्यायवाची शब्दों के भीतर मौजूद होता है, दूसरी ओर, उस सिस्टम उपयोगकर्ता से संबंधित होता है जो उन्हें बनाता है और उसी में रहता है उपयोगकर्ता का स्कीमा।

वाक्य - विन्यास

CREATE [PUBLIC] SYNONYM [synonym name] 
FOR OBJECT;

एक सिस्टम उपयोगकर्ता निजी समानार्थी शब्द का उपयोग करने के लिए विशेषाधिकार प्रदान कर सकता है, जो कि वे अन्य सिस्टम उपयोगकर्ताओं के पास हैं। समानार्थी शब्द बनाने के लिए, आपको सृजन SYNONYM विशेषाधिकार प्राप्त करना होगा। सार्वजनिक रूप से समानार्थी शब्द बनाने के लिए, आपके पास आवश्यक सार्वजनिक SYNONYM विशेषाधिकार होना चाहिए। । यदि एक पर्याय को सार्वजनिक घोषित किया जाता है, तो पर्यायवाची नाम पहले से ही एक सार्वजनिक पर्याय के रूप में उपयोग में नहीं आ सकता है। पहले से मौजूद सार्वजनिक समानार्थी शब्द बनाने के लिए प्रयास करने से क्रिएट पब्लिक SYNONYM कमांड विफल हो जाएगी, और Oracle ORA-00955 वापस आ जाएगा: नाम पहले से ही एक मौजूदा ऑब्जेक्ट त्रुटि संदेश द्वारा उपयोग किया जाता है।

चित्रण

दो उपयोगकर्ताओं पर विचार करें U1 और U2.U1 की पहुंच EMPLOYEES तालिका तक है। तो EMPLOYEES टेबल पर U2 तक पहुंच को सक्षम करने के लिए, U2 स्कीमा में एक समानार्थी शब्द भी बनाया जा सकता है। प्रवेश U1 से U2 तक दिया जाना चाहिए।

CONN U2/U2
SQL> CREATE SYNONYM EMP_SYN	FOR U1.employees;

CONN U1/U1
SQL> GRANT ALL ON EMP_SYN TO U2;

CONN U2/U2
SQL> SELECT * FROM EMP_SYN;

एक पर्याय को छोड़ देना

एक यूयर पर्याय को छोड़ सकता है जो इसका मालिक है। एक सार्वजनिक पर्याय को छोड़ने के लिए, आपके पास DROP PUBLIC SYNONYM विशेषाधिकार होना चाहिए।

DROP SYNONYM EMP_SYN;