डेटा हेरफेर का उपयोग करना

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

एक तार्किक एसक्यूएल लेनदेन में तीन प्रकार के डीएमएल स्टेटमेंट शामिल हैं, सम्मिलित करें, अपडेट करें, हटाएं और विलय करें। लेनदेन एक डेटाबेस सत्र के भीतर डीएमएल क्रियाओं का तार्किक संग्रह है।

INSERT बयान

INSERT कमांड का उपयोग तालिकाओं में डेटा को स्टोर करने के लिए किया जाता है। INSERT कमांड का उपयोग अक्सर उच्च स्तरीय प्रोग्रामिंग भाषाओं में किया जाता है, जैसे Visual Basic.NET या C ++ एक एम्बेडेड SQL कमांड के रूप में; हालाँकि, यह कमांड कमांड मोड में SQL * PLUS प्रॉम्प्ट पर भी निष्पादित किया जा सकता है। INSERT कमांड के दो अलग-अलग रूप हैं। पहले प्रपत्र का उपयोग किया जाता है यदि नई पंक्ति में पंक्ति के प्रत्येक कॉलम में एक मान डाला जाएगा। INSERT कमांड का दूसरा रूप उन पंक्तियों को सम्मिलित करने के लिए उपयोग किया जाता है जहां कुछ कॉलम डेटा अज्ञात है या किसी अन्य व्यावसायिक तर्क से डिफ़ॉल्ट है। INSERT कमांड के इस फॉर्म के लिए आवश्यक है कि आप कॉलम नाम निर्दिष्ट करें जिसके लिए डेटा संग्रहीत किया जा रहा है।

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

नीचे के सिंटैक्स का अनुसरण किया जा सकता है यदि तालिका के सभी स्तंभों के मान निश्चित और ज्ञात हैं।

INSERT INTO table
VALUES (column1 value, column2 value, 
...);

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

INSERT INTO table (column1 name, column2 name, . . .)
VALUES (column1 value, column2 value, . . .);

नीचे दिया गया INSERT स्टेटमेंट EMPLOYEES तालिका में एक नया कर्मचारी रिकॉर्ड बनाता है। ध्यान दें कि यह प्राथमिक कॉलम EMPLOYEE_ID, FIRST_NAME, SALARY और DEPARTMENTIDID के लिए मान सम्मिलित करता है।

INSERT INTO employees (EMPLOYEE_ID, FIRST_NAME, SALARY, DEPARTMENT_ID)
VALUES (130, 'KEMP', 3800, 10);

अन्यथा, INSERT स्टेटमेंट का उपयोग करके कॉलम सूची को निर्दिष्ट किए बिना पूरा कर्मचारी डेटा EMPLOYEES तालिका में डाला जा सकता है - बशर्ते मान पहले से ज्ञात हो और तालिका में डेटा प्रकार और स्तंभों की स्थिति के अनुपालन में होना चाहिए।

INSERT INTO employees
VALUES (130, 'KEMP','GARNER', '[email protected]', '48309290',TO_DATE ('01-JAN-2012'), 'SALES', 3800, 0, 110, 10);

सम्मिलित किए जाने वाले मान स्तंभ के डेटा प्रकार के अनुरूप होना चाहिए। साहित्य, निश्चित मान और विशेष मान जैसे फ़ंक्शन, SYSDATE, CURRENT_DATE, SEQ.CURRVAL (NEXTVAL), या USER को स्तंभ मान के रूप में उपयोग किया जा सकता है। निर्दिष्ट मानों को सामान्य नियमों का पालन करना चाहिए। स्ट्रिंग शाब्दिक और दिनांक मान उद्धरण के भीतर संलग्न होने चाहिए। दिनांक मान को DD-MON-RR या D-MON-YYYY प्रारूप में आपूर्ति की जा सकती है, लेकिन YYYY को प्राथमिकता दी जाती है क्योंकि यह स्पष्ट रूप से सदी को निर्दिष्ट करता है और आंतरिक RR सदी गणना तर्क पर निर्भर नहीं करता है।

INSERT-AS-SELECT (IAS) स्टेटमेंट

डेटा को स्रोत तालिका से INSERT..AS..SELECT (IAS) ऑपरेशन का उपयोग करके लक्ष्य तालिका में पॉप्युलेट किया जा सकता है। इसका एक सीधा पथ संचालन है। डेटा की प्रतिलिपि एक तालिका से दूसरे तालिका में बनाने या तालिका की बैकअप प्रतिलिपि बनाने का एक सरल तरीका है जो स्रोत तालिका संचालन ऑनलाइन है।

उदाहरण के लिए, डेटा को EMPLOYEES तालिका से EMP_HISTORY तालिका में कॉपी किया जा सकता है।

INSERT INTO EMP_HISTORY
SELECT EMPLOYEE_ID, EMPLOYEE_NAME, SALARY, DEPARTMENT_ID
FROM employees;

अद्यतन कथन

अद्यतन आदेश स्तंभ में संग्रहीत डेटा को संशोधित करता है। यह एक समय में एकल या कई पंक्तियों को अपडेट कर सकता है, जो WHERE क्लॉज में निर्दिष्ट शर्तों द्वारा फ़िल्टर किए गए परिणाम सेट पर निर्भर करता है। ध्यान दें कि कॉलम अद्यतन करना स्तंभों को बदलने से अलग है। इस अध्याय में पहले, आपने ALTER कमांड का अध्ययन किया था। ALTER कमांड तालिका संरचना को बदलता है, लेकिन तालिका डेटा को अप्रभावित छोड़ देता है। अद्यतन तालिका में डेटा बदलता है, तालिका संरचना नहीं।

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

UPDATE table
SET column = value [, column = value ...]
[WHERE condition]

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

सेट कॉलम = अभिव्यक्ति वर्णों, सूत्रों या फ़ंक्शंस का कोई संयोजन हो सकता है जो निर्दिष्ट कॉलम नाम में डेटा को अपडेट करेगा। जहां क्लॉज़ वैकल्पिक है, लेकिन यदि इसे शामिल किया गया है, तो यह निर्दिष्ट करता है कि कौन सी पंक्तियों को अपडेट किया जाएगा। केवल एक तालिका हो सकती है एक अद्यतन आदेश के साथ एक समय में अद्यतन किया जाएगा।

नीचे दिए गए स्टेटमेंट में कर्मचारी के वेतन को 5000 तक अपडेट किया गया है।

UPDATE employees
SET salary = 5000
WHERE UPPER (first_name) = 'JOHN';

हालाँकि, जहाँ भविष्यवाणी की गई है, वैकल्पिक है, लेकिन तार्किक रूप से जोड़ा जाना चाहिए ताकि तालिका में केवल आवश्यक पंक्ति को संशोधित किया जा सके। नीचे दिया गया अद्यतन विवरण तालिका के सभी कर्मचारियों के वेतन को अद्यतन करता है।

UPDATE employees
SET salary = 5000;

अल्पविराम द्वारा अलग किए गए SET क्लॉज में कई स्तंभों को निर्दिष्ट करके कई कॉलमों को भी अपडेट किया जा सकता है। उदाहरण के लिए, यदि जॉइन के लिए वेतन और नौकरी दोनों को क्रमशः 5000 और SALES में बदलना पड़ता है, तो UPDATE नंबर दिखता है,

UPDATE employees
SET	SALARY = 5000,
	JOB_ID = 'SALES'
WHERE UPPER (first_name) = 'JOHN';

1 row updated.

एक ही पंक्ति के कई स्तंभों को अपडेट करने का दूसरा तरीका सबक्वेरी का उपयोग दर्शाता है।

UPDATE employees
SET (SALARY, JOB_ID) = (SELECT 5000, 'SALES' FROM DUAL)
WHERE UPPER (ENAME) = 'JOHN'

DELETE कथन

DELETE कमांड SQL कथनों में सबसे सरल है। यह एक तालिका से एक या अधिक पंक्तियों को निकालता है। SQL में मल्टीपल टेबल डिलीट ऑपरेशंस की अनुमति नहीं है। DELETE कमांड का सिंटैक्स नीचे दिया गया है।

DELETE FROM table_name
    [WHERE condition];

DELETE कमांड तालिका की सभी पंक्तियों को हटा देती है जो वैकल्पिक WHERE क्लॉज में स्थिति को संतुष्ट करती है। चूँकि WHOWN क्लॉज़ वैकल्पिक है, इसलिए कोई आसानी से एक WHERE क्लॉज़ को छोड़ कर टेबल से सभी पंक्तियों को हटा सकता है क्योंकि WHERE क्लॉज़ DELETE ऑपरेशन के दायरे को सीमित करता है।

नीचे दिए गए DELETE स्टेटमेंट में EMP तालिका से EDWIN का विवरण हटा दिया जाएगा।

DELETE employees
WHERE UPPER (ENAME) = 'EDWIN'

1 row deleted.

नोट: DELETE [TABLE NAME] और DELETE FROM [TABLE NAME] एक ही अर्थ रखते हैं।

सशर्त डिलीट स्टेटमेंट में WHERE की स्थिति नीचे दिखाए अनुसार सबक्वेरी का उपयोग कर सकती है।

DELETE FROM employees
WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID
				    FROM LOCATIONS
				    WHERE LOCATION_CODE = 'SFO')

काट-छांट

Truncate एक DDL कमांड है, जिसका उपयोग टेबल से सभी रिकॉर्ड को फ्लश करने के लिए किया जाता है, लेकिन टेबल संरचना को बनाए रखता है। यह चयनित रिकॉर्ड को हटाने के लिए WHERE की स्थिति का समर्थन नहीं करता है।

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

TRUNCATE [table name]

यह ऑटो कमिट है यानी यह सत्र में वर्तमान सक्रिय लेनदेन करता है। तालिका को रौंदने पर निर्भर इंडेक्स, ट्रिगर्स या टेबल की कमी नहीं होती है। यदि तालिका A डेटाबेस में तालिका B के संदर्भ बाधा का जनक है, तो तालिका A को छोटा नहीं किया जा सकता है।

लेन-देन

लेन-देन डेटाबेस में किए गए कार्य की एक तार्किक इकाई है। इसमें या तो शामिल हो सकते हैं -

  • एक टीसीएल कमांड यानी COMMIT या रोलबैक के साथ समाप्त होने वाले कई DML कमांड

  • एक डीडीएल कमांड

  • एक डीसीएल कमांड

लेन-देन की शुरुआत पहले डीएमएल कमांड के साथ चिह्नित है। यह एक बंधन, डीडीएल या डीसीएल कमांड के साथ समाप्त होता है। एक टीसीएल कमांड यानी COMMIT या रोलबैक एक सक्रिय लेनदेन को समाप्त करने के लिए स्पष्ट रूप से समस्या है। उनके मूल व्यवहार के आधार पर, यदि कोई DDL या DCL कमांड डेटाबेस सत्र में निष्पादित हो जाता है, तो सत्र में चल रहे सक्रिय लेनदेन को कम करें। यदि डेटाबेस आवृत्ति असामान्य रूप से क्रैश हो जाती है, तो लेन-देन रोक दिया जाता है।

COMMIT, ROLLBACK और SAVEPOINT लेन-देन नियंत्रण भाषा है। COMMIT डेटाबेस में डेटा परिवर्तनों को स्थायी रूप से लागू करता है जबकि रोलबैक एंटी-कमिट ऑपरेशन करता है। SAVEPOINT विभिन्न लेन-देन चरणों में मार्करों को सेट करके लेनदेन की श्रृंखला को नियंत्रित करता है। उपयोगकर्ता वर्तमान लेनदेन को वांछित बचत बिंदु पर वापस ला सकता है, जो पहले सेट किया गया था।

COMMIT- प्रतिबद्ध डेटा सक्रियता को डेटाबेस तालिकाओं में स्थायी रूप से लागू करके वर्तमान सक्रिय लेनदेन को समाप्त करता है। COMMIT एक बंधन कमांड है जो स्पष्ट रूप से लेनदेन को समाप्त करता है। हालाँकि, DDL और DCL आदेश निहित रूप से लेन-देन करते हैं।

SAVEPOINT- सत्र में वर्तमान लेनदेन में एक विशिष्ट बिंदु को चिह्नित करने के लिए Savepoint का उपयोग किया जाता है। चूंकि यह लेन-देन में तार्किक मार्कर है, इसलिए डेटा शब्दकोशों में सेवपॉइंट को क्वेर नहीं किया जा सकता है।

ROLLBACK- ROLLBACK कमांड का उपयोग डेटा परिवर्तनों को समाप्त करके संपूर्ण लेनदेन को समाप्त करने के लिए किया जाता है। यदि लेन-देन में सहेजे गए सहेजे गए बिंदु होते हैं, तो रोलओप्लेट टू SAVEPOINT [नाम] का उपयोग केवल निर्दिष्ट बचत बिंदु तक लेनदेन को रोलबैक करने के लिए किया जा सकता है। नतीजतन, निर्दिष्ट सहेजने तक के सभी डेटा परिवर्तन को छोड़ दिया जाएगा।

प्रदर्शन

EMPLOYEES तालिका पर विचार करें जो हर साल की पहली तिमाही के दौरान नए काम पर रखे गए कर्मचारियों के विवरण के साथ आबाद हो जाती है। लिपिक कर्मचारी प्रत्येक कर्मचारी को एक बचत बिंदु के साथ विस्तार देता है, ताकि डेटा फीडिंग गतिविधि के दौरान किसी भी समय किसी भी दोषपूर्ण डेटा को रोलबैक कर सके। ध्यान दें कि वह कर्मचारी के नाम के समान savepoint नाम रखता है।

INSERT INTO employees (employee_id, first_name, hire_date, job_id, salary, department_id)
VALUES (105, 'Allen',TO_DATE ('15-JAN-2013','SALES',10000,10);

SAVEPOINT Allen;

INSERT INTO employees (employee_id, first_name, hire_date, job_id, salary, department_id)
VALUES (106, 'Kate',TO_DATE ('15-JAN-2013','PROD',10000,20);

SAVEPOINT Kate;

INSERT INTO employees (employee_id, first_name, hire_date, job_id, salary, department_id)
VALUES (107, 'McMan',TO_DATE ('15-JAN-2013','ADMIN',12000,30);

SAVEPOINT McMan;

मान लीजिए, डेटा फीडिंग ऑपरेटर को पता चलता है कि उसने गलत तरीके से 'केट' और 'मैकमैन' के वेतन में प्रवेश किया है। वह बचत केट के लिए सक्रिय लेन-देन को वापस करता है और केट और मैकमैन के लिए कर्मचारी के विवरण को फिर से दर्ज करता है।

ROLLBACK TO SAVEPOINT Kate;

INSERT INTO employees (employee_id, first_name, hire_date, job_id, salary, department_id)
VALUES (106, 'Kate',TO_DATE ('15-JAN-2013','PROD',12500,20);

SAVEPOINT Kate;

INSERT INTO employees (employee_id, first_name, hire_date, job_id, salary, department_id)
VALUES (107, 'McMan',TO_DATE ('15-JAN-2013','ADMIN',13200,30);

SAVEPOINT McMan;

एक बार जब वह डेटा प्रविष्टि के साथ किया जाता है, तो वह चालू सत्र में COMMIT जारी करके संपूर्ण लेनदेन कर सकता है।

संगति पढ़ें

ओरेकल प्रत्येक सत्र में डेटा एक्सेस और पढ़ने / लिखने के कार्यों के संदर्भ में उपयोगकर्ताओं के बीच स्थिरता बनाए रखता है।

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

पाठकों के लिए रीड-सुसंगत विचारों के लिए प्रारंभ बिंदु उत्पन्न होता है

नियंत्रण जब संशोधित डेटा को पढ़ने या अपडेट करने के लिए डेटाबेस के अन्य लेनदेन द्वारा देखा जा सकता है