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

एसक्यूएल में टीसीएल कमांड

स्ट्रक्चर्ड क्वेरी लैंग्वेज में, TCL ट्रांजेक्शन कंट्रोल लैंग्वेज का संक्षिप्त नाम है। एक डेटाबेस में काम की एक इकाई का गठन आदेशों के लगातार निष्पादन के बाद होता है जिसे लेनदेन के रूप में जाना जाता है।

स्ट्रक्चर्ड क्वेरी लैंग्वेज में कुछ कमांड होते हैं, और ट्रांजेक्शन कंट्रोल लैंग्वेज कमांड SQL कमांड में से एक है। TCL कमांड डेटाबेस में लेनदेन को संभालता है

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

आइए अब कुछ उदाहरणों की सहायता से स्ट्रक्चर्ड क्वेरी लैंग्वेज में ट्रांजेक्शन कंट्रोल लैंग्वेज कमांड के काम करने के तरीके को समझते हैं और सीखते हैं। ट्रांजेक्शन कंट्रोल लैंग्वेज कमांड हैं:

  1. कमांड कमिट
  2. रोलबैक कमांड
  3. सेवपॉइंट कमांड

कमांड कमिट करें

SQL में कमिट कमांड का उपयोग उन सभी लेनदेन को सहेजने के लिए किया जाता है जो स्थायी रूप से डिस्क में बदल जाते हैं। जब भी हम डेटा डेफिनिशन लैंग्वेज कमांड (DDL) जैसे INSERT कमांड, UPDATE कमांड और DELETE कमांड पर ऑपरेशन करते हैं, तो इन कमांड द्वारा किए गए संशोधन स्थायी होते हैं लेकिन वर्तमान सत्र को बंद करने से पहले या सत्र के अंत तक। सत्र बंद होने से पहले हम डेटा परिभाषा भाषा का उपयोग करके किए गए ऑपरेशन को आसानी से पूर्ववत कर सकते हैं। कमिट कमांड का प्रयोग बिना सत्र समाप्त हुए संशोधन को स्थायी रूप से स्टोरेज में सेव करने के लिए किया जाता है।

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

COMMIT;

यदि आपके पास सिस्टम में एक मौजूदा डेटाबेस है, तो उस मौजूदा डेटाबेस का उपयोग करें या एक नया डेटाबेस बनाएं। हम मौजूदा डेटाबेस कंपनी का उपयोग करेंगे।

USE Company

पहले से मौजूद कर्मचारियों की टेबल पर विचार करें जिनमें कुछ निश्चित डेटा है:

कर्मचारी FIRST_NAME LAST_NAME वेतन शहर विभाग मैनेजरिड
1001 वैभवी मिश्रा 65000 पुणे ओरेकल 1
1002 वैभव शर्मा 60000 नोएडा ओरेकल 1
1003 निखिल वाणी 50000 जयपुर FMW 2
2001 प्राची शर्मा 55500 चंडीगढ़ ओरेकल 1
2002 भावेश जैन 65500 पुणे FMW 2
2003 रुचिका जैन 50000 मुंबई परीक्षण 4
3001 प्रानोटी शेंडे 55500 पुणे जावा 3
3002 अनुजा WANRE 50500 जयपुर FMW 2
3003 दीपम जौहारी 58500 मुंबई जावा 3
4001 राजेश GOUD 60500 मुंबई परीक्षण 4

SQL में, लेन-देन शुरू करने के लिए START TRANSACTION क्वेरी का उपयोग किया जाता है।

START TRANSACTION;           

अब, हम मौजूदा कर्मचारी तालिका में दो रिकॉर्ड डालेंगे। एकाधिक रिकॉर्ड सम्मिलित करने के लिए, हम नीचे दिए गए कथन का उपयोग करेंगे:

INSERT INTO EMPLOYEES (EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY, DEPARTMENT, MANAGERID) VALUES (4002, 'ASHWINI', 'BAGHAT', 54500, 'JAIPUR', 'JAVA', 3), (4003, 'PURVA', 'DHANDEKAR', 57000, 'PUNE', 'TESTING', 4);

अब हम SELECT क्वेरी का उपयोग यह सत्यापित करने के लिए करेंगे कि रिकॉर्ड सफलतापूर्वक तालिका में डाले गए हैं या नहीं।

SELECT * FROM EMPLOYEES;

उपरोक्त क्वेरी पर आउटपुट:

कर्मचारी FIRST_NAME LAST_NAME वेतन शहर विभाग मैनेजरिड
1001 वैभवी मिश्रा 65000 पुणे ओरेकल 1
1002 वैभव शर्मा 60000 नोएडा ओरेकल 1
1003 निखिल वाणी 50000 जयपुर FMW 2
2001 प्राची शर्मा 55500 चंडीगढ़ ओरेकल 1
2002 भावेश जैन 65500 पुणे FMW 2
2003 रुचिका जैन 50000 मुंबई परीक्षण 4
3001 प्रानोटी शेंडे 55500 पुणे जावा 3
3002 अनुजा WANRE 50500 जयपुर FMW 2
3003 दीपम जौहारी 58500 मुंबई जावा 3
4001 राजेश GOUD 60500 मुंबई परीक्षण 4
4002 अश्विनी बगत 54500 जयपुर जावा 3
4003 पूर्वा धंडेकर 5700 पुणे परीक्षण 4

आउटपुट दिखाता है कि सभी रिकॉर्ड सफलतापूर्वक डाले गए हैं।

कर्मचारी टेबल पर INSERT ऑपरेशन को सेव करने के लिए, हम COMMIT कमांड को निष्पादित करेंगे।

COMMIT;

SQL में, डिफ़ॉल्ट रूप से, ऑटो-कमिट चालू होता है। SQL में स्वतः-प्रतिबद्धता को बंद करने के लिए, स्वतः-प्रतिबद्ध मान को 0 पर सेट करें।

हम कर्मचारी आईडी 4002 को अपडेट करेंगे और शहर को 'नोएडा' के रूप में सेट करेंगे। कर्मचारी रिकॉर्ड को अपडेट करने के लिए नीचे दी गई क्वेरी का उपयोग करें।

UPDATE EMPLOYEES SET CITY = 'NOIDA' WHERE EMPLOYEEID = 4002;

अब हम SELECT क्वेरी का उपयोग यह सत्यापित करने के लिए करेंगे कि तालिका में रिकॉर्ड सफलतापूर्वक अपडेट किया गया है या नहीं।

SELECT * FROM EMPLOYEES;

उपरोक्त क्वेरी पर आउटपुट:

कर्मचारी FIRST_NAME LAST_NAME वेतन शहर विभाग मैनेजरिड
1001 वैभवी मिश्रा 65000 पुणे ओरेकल 1
1002 वैभव शर्मा 60000 नोएडा ओरेकल 1
1003 निखिल वाणी 50000 जयपुर FMW 2
2001 प्राची शर्मा 55500 चंडीगढ़ ओरेकल 1
2002 भावेश जैन 65500 पुणे FMW 2
2003 रुचिका जैन 50000 मुंबई परीक्षण 4
3001 प्रानोटी शेंडे 55500 पुणे जावा 3
3002 अनुजा WANRE 50500 जयपुर FMW 2
3003 दीपम जौहारी 58500 मुंबई जावा 3
4001 राजेश GOUD 60500 मुंबई परीक्षण 4
4002 अश्विनी बगत 54500 नोएडा जावा 3
4003 पूर्वा धंडेकर 5700 पुणे परीक्षण 4

जैसा कि हम आउटपुट में देख सकते हैं, कर्मचारी आईडी 4002 शहर को संशोधित किया गया था।

कर्मचारियों की मेज पर परिवर्तनों को सहेजने के लिए, हम एक COMMIT कमांड लिखेंगे।

COMMIT;

अब, हम कर्मचारी तालिका से कर्मचारी आईडी 4003 हटा देंगे। कर्मचारी रिकॉर्ड को हटाने के लिए नीचे दी गई क्वेरी का उपयोग करें।

DELETE FROM EMPLOYEES WHERE EMPLOYEEID = 4003;

अब हम SELECT क्वेरी का उपयोग यह सत्यापित करने के लिए करेंगे कि तालिका में रिकॉर्ड सफलतापूर्वक हटा दिया गया है या नहीं।

SELECT * FROM EMPLOYEES;

उपरोक्त क्वेरी पर आउटपुट:

कर्मचारी FIRST_NAME LAST_NAME वेतन शहर विभाग मैनेजरिड
1001 वैभवी मिश्रा 65000 पुणे ओरेकल 1
1002 वैभव शर्मा 60000 नोएडा ओरेकल 1
1003 निखिल वाणी 50000 जयपुर FMW 2
2001 प्राची शर्मा 55500 चंडीगढ़ ओरेकल 1
2002 भावेश जैन 65500 पुणे FMW 2
2003 रुचिका जैन 50000 मुंबई परीक्षण 4
3001 प्रानोटी शेंडे 55500 पुणे जावा 3
3002 अनुजा WANRE 50500 जयपुर FMW 2
3003 दीपम जौहारी 58500 मुंबई जावा 3
4001 राजेश GOUD 60500 मुंबई परीक्षण 4
4002 अश्विनी बगत 54500 नोएडा जावा 3

आउटपुट पुष्टि करता है कि हमने कर्मचारी आईडी 4003 विवरण हटा दिए हैं।

कर्मचारियों की मेज पर परिवर्तनों को सहेजने के लिए, हम एक COMMIT कमांड लिखेंगे।

COMMIT;

सेवपॉइंट कमांड

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

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

SAVEPOINT savepoint name; 

रोलबैक आदेश

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

हम अपने द्वारा किए गए ऑपरेशन को वापस ले सकते हैं या पूरे सेवपॉइंट लेनदेन को वापस रोल कर सकते हैं।

ऑपरेशन को रोलबैक करने के लिए सिंटैक्स:

ROLLBACK;

लेन-देन को रोलबैक करने के लिए सिंटैक्स:

ROLLBACK TO savepoint;

SAVEPOINT और ROLLBACK कमांड के उदाहरण:

यदि आपके पास सिस्टम में एक मौजूदा डेटाबेस है, तो उस मौजूदा डेटाबेस का उपयोग करें या एक नया डेटाबेस बनाएं। हम कंपनी नाम के पहले से मौजूद डेटाबेस का चयन करेंगे।

USE Company

मौजूदा कर्मचारी तालिका पर विचार करें जिसमें निम्नलिखित रिकॉर्ड हैं:

कर्मचारी FIRST_NAME LAST_NAME वेतन शहर विभाग मैनेजरिड
1001 वैभवी मिश्रा 65000 पुणे ओरेकल 1
1002 वैभव शर्मा 60000 नोएडा ओरेकल 1
1003 निखिल वाणी 50000 जयपुर FMW 2
2001 प्राची शर्मा 55500 चंडीगढ़ ओरेकल 1
2002 भावेश जैन 65500 पुणे FMW 2
2003 रुचिका जैन 50000 मुंबई परीक्षण 4
3001 प्रानोटी शेंडे 55500 पुणे जावा 3
3002 अनुजा WANRE 50500 जयपुर FMW 2
3003 दीपम जौहारी 58500 मुंबई जावा 3
4001 राजेश GOUD 60500 मुंबई परीक्षण 4
4002 अश्विनी बगत 54500 नोएडा जावा 3

SQL में, लेन-देन शुरू करने के लिए START TRANSACTION क्वेरी का उपयोग किया जाता है।

START TRANSACTION;           

अब, हम मौजूदा कर्मचारी तालिका में दो रिकॉर्ड डालेंगे। एकाधिक रिकॉर्ड सम्मिलित करने के लिए हम नीचे दिए गए कथन का उपयोग करेंगे:

INSERT INTO EMPLOYEES (EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY, DEPARTMENT, MANAGERID) VALUES (4003, 'PURVA', 'DHANDEKAR', 57000, 'PUNE', 'TESTING', 4), (5001, 'ASHWIN', 'PATEL', 54500, 'JAIPUR', 'JAVA', 3);

अब हम SELECT क्वेरी का उपयोग यह सत्यापित करने के लिए करेंगे कि रिकॉर्ड सफलतापूर्वक तालिका में डाले गए हैं या नहीं।

SELECT * FROM EMPLOYEES;

उपरोक्त क्वेरी पर आउटपुट:

कर्मचारी FIRST_NAME LAST_NAME वेतन शहर विभाग मैनेजरिड
1001 वैभवी मिश्रा 65000 पुणे ओरेकल 1
1002 वैभव शर्मा 60000 नोएडा ओरेकल 1
1003 निखिल वाणी 50000 जयपुर FMW 2
2001 प्राची शर्मा 55500 चंडीगढ़ ओरेकल 1
2002 भावेश जैन 65500 पुणे FMW 2
2003 रुचिका जैन 50000 मुंबई परीक्षण 4
3001 प्रानोटी शेंडे 55500 पुणे जावा 3
3002 अनुजा WANRE 50500 जयपुर FMW 2
3003 दीपम जौहारी 58500 मुंबई जावा 3
4001 राजेश GOUD 60500 मुंबई परीक्षण 4
4002 अश्विनी बगत 54500 नोएडा जावा 3
4003 पूर्वा धंडेकर 5700 पुणे परीक्षण 4
5001 अश्विन पटेल 54500 जयपुर जावा 3

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

SAVEPOINT Insertion;

अब, हम कर्मचारी टेबल पर UPDATE ऑपरेशन करेंगे, और हम कर्मचारी आईडी 2003 के लिए कर्मचारी वेतन 1.2 से अपडेट करेंगे।

UPDATE EMPLOYEES SET SALARY = SALARY * 1.2 WHERE EMPLOYEEID = 2003;

हम कर्मचारी टेबल पर सेलेक्ट क्वेरी को निष्पादित करके अपडेट ऑपरेशन को क्रॉस-चेक करेंगे:

SELECT * FROM EMPLOYEES WHERE EMPLOYEEID = 2003;
कर्मचारी FIRST_NAME LAST_NAME वेतन शहर विभाग मैनेजरिड
2003 रुचिका जैन 60000 मुंबई परीक्षण 4

उपरोक्त क्वेरी परिणाम दिखाते हैं कि कर्मचारी आईडी 2003 रिकॉर्ड सफलतापूर्वक अपडेट किया गया है।

हमारे लेन-देन के एक खंड के रूप में अद्यतन क्वेरी पर विचार करें। हम एक अद्यतन नाम के SAVEPOINT का उपयोग करके अद्यतन संचालन भाग को सहेजेंगे।

SAVEPOINT Updation;

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

DELETE FROM EMPLOYEES WHERE SALARY > 60000;

हम कर्मचारी टेबल पर सेलेक्ट क्वेरी को निष्पादित करके डिलीट ऑपरेशन को क्रॉस-चेक करेंगे:

SELECT * FROM EMPLOYEES;

उपरोक्त क्वेरी पर आउटपुट:

कर्मचारी FIRST_NAME LAST_NAME वेतन शहर विभाग मैनेजरिड
1002 वैभव शर्मा 60000 नोएडा ओरेकल 1
1003 निखिल वाणी 50000 जयपुर FMW 2
2001 प्राची शर्मा 55500 चंडीगढ़ ओरेकल 1
2003 रुचिका जैन 60000 मुंबई परीक्षण 4
3001 प्रानोटी शेंडे 55500 पुणे जावा 3
3002 अनुजा WANRE 50500 जयपुर FMW 2
3003 दीपम जौहारी 58500 मुंबई जावा 3
4002 अश्विनी बगत 54500 नोएडा जावा 3
4003 पूर्वा धंडेकर 5700 पुणे परीक्षण 4
5001 अश्विन पटेल 54500 जयपुर जावा 3

उपरोक्त क्वेरी से पता चलता है कि कर्मचारी रिकॉर्ड हटाना सफल रहा।

हमारे लेन-देन के एक खंड के रूप में हटाए गए प्रश्नों पर विचार करें। हम एक डिलीट नाम के SAVEPOINT का उपयोग करके अपडेट ऑपरेशन पार्ट को सेव करेंगे।

SAVEPOINT Deletion;

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

ROLLBACK TO Insertion;

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

क्रॉस-चेक करने के लिए कि हमें वही कर्मचारी तालिका मिली है जो हमारे पास अपडेशन और डिलीशन ऑपरेशन करने से पहले थी। कर्मचारियों के विवरण को पुनः प्राप्त करने के लिए कर्मचारियों की मेज पर सेलेक्ट ऑपरेशन करें।

SELECT * FROM EMPLOYEES;
कर्मचारी FIRST_NAME LAST_NAME वेतन शहर विभाग मैनेजरिड
1001 वैभवी मिश्रा 65000 पुणे ओरेकल 1
1002 वैभव शर्मा 60000 नोएडा ओरेकल 1
1003 निखिल वाणी 50000 जयपुर FMW 2
2001 प्राची शर्मा 55500 चंडीगढ़ ओरेकल 1
2002 भावेश जैन 65500 पुणे FMW 2
2003 रुचिका जैन 50000 मुंबई परीक्षण 4
3001 प्रानोटी शेंडे 55500 पुणे जावा 3
3002 अनुजा WANRE 50500 जयपुर FMW 2
3003 दीपम जौहारी 58500 मुंबई जावा 3
4001 राजेश GOUD 60500 मुंबई परीक्षण 4
4002 अश्विनी बगत 54500 नोएडा जावा 3
4003 पूर्वा धंडेकर 5700 पुणे परीक्षण 4
5001 अश्विन पटेल 54500 जयपुर जावा 3


  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. 9 सबसे आम डेटाबेस डिज़ाइन त्रुटियाँ

  3. टी-एसक्यूएल में वर्तमान तिथि और समय (समय क्षेत्र के बिना) कैसे प्राप्त करें

  4. झुंड क्लस्टर के साथ Azure कंटेनर सेवा पर डॉकर का उपयोग करना

  5. क्या आपका ODBC ड्राइवर उपयोगकर्ता डेटा स्रोतों का समर्थन करता है?