रेकॉर्ड जोडण्यासाठी आणि काढण्यासाठी SQL क्वेरी. डेटा घालणे, सुधारणे आणि हटवणे यासाठी sql क्वेरी MySQL डेटाबेसमध्ये साध्या अपडेट क्वेरी
सामान्य वाक्यरचना:
अ) टेबलमध्ये एक नवीन पंक्ती घालणे:
घाला<таблица>[(स्तंभ)]
मूल्ये
b) सबक्वेरीमध्ये निर्दिष्ट केलेल्या स्त्रोतावरून घेतलेल्या सारणीमध्ये एक किंवा अधिक पंक्ती समाविष्ट करणे:
घाला<таблица>[(स्तंभ)]
नियम:
"स्तंभ" विभागातील घटकांची संख्या "मूल्य" विभागातील घटकांच्या संख्येशी जुळली पाहिजे; डेटा प्रकार जुळले पाहिजेत किंवा अव्यक्त रूपांतरणास परवानगी द्यावी;
"स्तंभ" विभाग नसलेल्या बाबतीत, "मूल्ये" विभागात सारणीमध्ये एकूण स्तंभ संपादित केल्या जात असलेल्या मूल्यांची संख्या समान असणे आवश्यक आहे, त्याव्यतिरिक्त, मूल्ये समान सूचीबद्ध करणे आवश्यक आहे ज्या क्रमाने टेबल स्तंभ घोषित केले जातात; म्हणून, नेहमी स्पष्टपणे स्तंभांची सूची निर्दिष्ट करण्याची शिफारस केली जाते ज्यामध्ये नवीन मूल्ये जोडली जातील;
सिंटॅक्स (b) वापरताना, SELECT सबक्वेरी एकाच टेबलवर किंवा डेटाबेसमधील दुसऱ्या टेबलवर किंवा सर्व्हरवरील दुसऱ्या डेटाबेसला संबोधित केली जाऊ शकते;
जर एखाद्या विशिष्ट टेबल स्तंभासाठी डीफॉल्ट मूल्य निर्दिष्ट केले असेल आणि तुम्हाला हे मूल्य जोडलेल्या रेकॉर्डमध्ये वापरायचे असेल, तर या स्तंभासाठी "मूल्य" विभागात तुम्हाला डीफॉल्ट कीवर्ड लिहावा लागेल.
उदाहरणे :
तपशील प्रविष्ट करा (तपशील_नाव)
मूल्ये
पुरवठ्यामध्ये घाला (पुरवठादार_आयडी, पुरवठा_मात्रा, पुरवठा_किंमत,
पुरवठा_तारीख, तपशील_आयडी)
मूल्ये (४, १७७, ४५३.४५, "२५.०९.२००९", १)
INSERT पुरवठादार (पुरवठादार_प्रकार, पुरवठादार_नाव)
मूल्ये (डीफॉल्ट, "स्मिरनोव एस. एस.")
विद्यमान नोंदींमध्ये बदल (अद्यतन)
सामान्य वाक्यरचना:
अपडेट करा<таблица>
सेट<столбец> = <значение> [, <столбец> = <значение>]
उदाहरणे :
SET वजन = 210
SET material_name = "टिन"
WHERE material_id = 2
SET Department_id = NULL,
वितरण_तारीख = वितरण_तारीख + 1 /*डिलीव्हरीची तारीख एका दिवसाने वाढवा
डिलिव्हरी_आयडी = १ किंवा विभाग_आयडी > ३
SET detail_name = detail_name + "!!!"
कुठे तपशील_नाव सारखे "_а%" आणि वजन 6 आणि 10 च्या दरम्यान आहे
टेबलमधून रेकॉर्ड काढून टाकणे (हटवा)
सामान्य वाक्यरचना:
हटवा<таблица>
<условие>
उदाहरणे :
WHERE detail_id IN (2, 5, 8)
जेथे वजन शून्य आहे
व्यायाम:
मॅनेजमेंटस्टुडिओ वापरून डेटाबेस तयार करा. हे करण्यासाठी, "ऑब्जेक्ट ब्राउझर" (चित्र 4.1) मधील टेबल संदर्भ मेनूमधील "ओपन टेबल" कमांड वापरा.
पुनर्प्राप्ती क्वेरी
सामान्य निवडा क्वेरी वाक्यरचना
निवडा<список столбцов>
पासून<таблица(-ы) источник>
प्रत्येक क्वेरीमध्ये SELECT आणि FROM कलम उपस्थित असणे आवश्यक आहे; इतर विभाग अनुपस्थित किंवा अंशतः उपस्थित असू शकतात.
क्वेरी अंमलबजावणीची उदाहरणे
सर्वात सोप्या प्रश्नः
1. भागांचे नाव आणि वजन निवडा
तांदूळ. ५.१. क्वेरी क्रमांक 1 चे परिणाम
2. सामग्रीच्या सारणीतून सर्व माहिती निवडा
तांदूळ. ५.२. क्वेरी क्रमांक 2 चे परिणाम
DISTINCT चे वेगळेपण
3. पुरवठा सारणीमधून अद्वितीय पुरवठादार कोड निवडा
तांदूळ. ५.३. क्वेरी क्रमांक 3 चे परिणाम
कुठे मर्यादा
4. कोड 1 सह भागाचे प्रमाण आणि वितरण तारखा निवडा
तांदूळ. ५.४. क्वेरी क्रमांक 4 चे परिणाम
5. कोड 1, 4 आणि 6 सह पुरवठादारांची नावे निवडा
तांदूळ. ५.५. क्वेरी क्रमांक 5 चे परिणाम
6. 1 ऑक्टोबर 2009 पूर्वी केलेल्या डिलिव्हरीबद्दल सर्व माहिती निवडा
तांदूळ. ५.६. क्वेरी क्रमांक 6 चे परिणाम
7. जे भाग "B" अक्षराने सुरू होत नाहीत (कोणत्याही परिस्थितीत) आणि ज्यांचे वजन 50 पेक्षा कमी आहे त्यांच्याबद्दल सर्व माहिती निवडा.
तांदूळ. ५.७. प्रश्न क्रमांक 7 चे परिणाम
8. 5 ते 10 ग्रॅम वजनाच्या किंवा नावाच्या तिसऱ्या क्रमांकावर "n" अक्षर असलेल्या भागांसाठी नाव आणि सामग्री कोड निवडा.
तांदूळ. ५.८. प्रश्न क्रमांक 8 चे परिणाम
9. 15 वर्णांपेक्षा जास्त नसलेल्या पुरवठादारांची नावे निवडा
तांदूळ. ५.९. प्रश्न क्रमांक 9 चे परिणाम
10. भाग पुरवठा करण्यासाठी महिने आणि वर्षे निवडा
तांदूळ. ५.१०. क्वेरी क्रमांक 10 चे परिणाम
क्रमवारीनुसार क्रमवारी लावत आहे
11. प्रथम पुरवठादार कोड आणि नंतर वितरण तारखेनुसार वितरण क्रमवारी लावा
तांदूळ. ५.११. क्वेरी क्रमांक 11 चे परिणाम
12. 4, 6, 8, 9 कोडसह पुरवठादारांची नावे निवडा, उलट क्रमाने वर्णक्रमानुसार क्रमवारी लावा
तांदूळ. ५.१२. क्वेरी क्रमांक 12 चे परिणाम
एकत्रीकरण आणि गटीकरण GROUP BY
तांदूळ. ५.१३. क्वेरी क्रमांक 13 चे परिणाम
14. कोड 2 सह सामग्रीपासून बनवलेल्या भागांचे सरासरी वजन निश्चित करा
तांदूळ. ५.१४. क्वेरी क्रमांक 2 चे परिणाम
15. 1 ऑक्टोबर 2009 पूर्वी केलेल्या डिलिव्हरीमधून, सर्वात मोठी आणि सर्वात लहान डिलिव्हरी निवडा
तांदूळ. ५.१५. क्वेरी क्रमांक 15 चे परिणाम
16. 5 - 8 श्रेणीतील कोड असलेल्या पुरवठादारांसाठी, त्यांनी पुरवलेल्या भागांची एकूण संख्या मोजा
तांदूळ. ५.१६. क्वेरी क्रमांक 16 चे परिणाम
तांदूळ. ५.१७. क्वेरी क्रमांक 17 चे परिणाम
गट असण्यावर निर्बंध
18. सामग्री निवडा ज्यासाठी त्यांच्यापासून बनवलेल्या भागांचे एकूण वजन 20 पेक्षा जास्त नाही
तांदूळ. ५.१८. क्वेरी क्रमांक 18 चे परिणाम
19. 2008 मध्ये डिलिव्हरी पासून, एकापेक्षा जास्त वेळा पुरवलेले भाग निवडा
तांदूळ. ५.१९. प्रश्न क्रमांक 19 चे निकाल
प्रकार रूपांतरणकास्ट करा
20. मजकूर स्वरूपात वितरण तारखांची माहिती प्राप्त करा
तांदूळ. ५.२०. क्वेरी क्रमांक 20 चे परिणाम
21. भागांच्या तक्त्यामधून माहिती मिळवा पंक्तींच्या स्वरूपात “भाग X चे वजन Y आहे”
तांदूळ. ५.२१. क्वेरी क्रमांक 21 चे परिणाम
पर्यायकेस
22. भाग हलके (20 पर्यंत वजनाचे), मध्यम (20 ते 50 दरम्यान) आणि जड मध्ये विभाजित करा
तांदूळ. ५.२२. क्वेरी क्रमांक 22 चे परिणाम
NULL मूल्ये हाताळणे
23. भाग आणि त्यांचे वजन याबद्दल माहिती मिळवा आणि जर भागाचे वजन निर्दिष्ट केले नसेल तर NULL ऐवजी -100 लिहा.
तांदूळ. ५.२३. क्वेरी क्रमांक 23 चे परिणाम
अस्तित्व कार्य अस्तित्वात आहे
24. फक्त त्या भागांचे नाव आणि साहित्य कोड निवडा जे कधीही पुरवले गेले होते
तांदूळ. ५.२४. क्वेरी क्रमांक 24 चे परिणाम
25. ज्या पदार्थांपासून एकही भाग बनवला जात नाही अशा सामग्रीची नावे निवडा
तांदूळ. ५.२५. क्वेरी क्रमांक 25 चे परिणाम
सबक्वेरी
26. नवीनतम (तारीखानुसार) वितरणाबद्दल माहिती मिळवा
तांदूळ. ५.२६. क्वेरी क्रमांक 26 चे परिणाम
27. मटेरियल कोड 2 मधून बनवलेल्या भागांच्या सर्व डिलिव्हरी प्राप्त करा
तांदूळ. ५.२७. क्वेरी क्रमांक 27 चे परिणाम
28. प्रत्येक पुरवठादारासाठी, त्याच्या वितरणाच्या अगदी पहिल्या (तारीखानुसार) माहिती मिळवा
तांदूळ. ५.२८. क्वेरी क्रमांक 28 चे परिणाम
29. प्रत्येक पुरवठादारासाठी, त्याचे नाव आणि शेवटच्या ऑर्डरची तारीख मिळवा
तांदूळ. ५.२९. प्रश्न क्रमांक 29 चे निकाल
JOIN सह सामील होणारे टेबल
30. फॉर्मची एक सारणी मिळवा: भागाचे नाव, ज्या सामग्रीपासून हा भाग बनविला जातो त्याचे नाव
तांदूळ. ५.३०. क्वेरी क्रमांक 30 चे परिणाम
31. एक टेबल मिळवा जसे: पुरवठादार, भागाचे नाव, प्रमाण आणि निर्दिष्ट वजन असलेल्या भागांसाठी वितरण तारीख
तांदूळ. ५.३१. क्वेरी क्रमांक 31 चे परिणाम
32. त्या भागांबद्दलची सर्व माहिती निवडा जी कधीही पुरवली गेली आहेत
तांदूळ. ५.३२. क्वेरी क्रमांक 32 चे परिणाम
तांदूळ. ५.३३. क्वेरी क्रमांक 33 चे परिणाम
34. साहित्य आणि त्यांच्यापासून बनवलेल्या भागांची नावे निवडा
तांदूळ. ५.३४. क्वेरी क्रमांक 34 चे परिणाम
35. पुरवठादार, पुरवठा आणि भागांवरील सर्व डेटा मिळवा
तांदूळ. ५.३५. क्वेरी क्रमांक 35 चे परिणाम
युनियन टेबलमध्ये सामील होत आहे
३६. भागांची नावे आणि वजनाचा तक्ता मिळवा आणि सारणीच्या शेवटच्या ओळीत सर्व भागांच्या एकूण वजनाच्या रूपात बेरीज असावी.
तांदूळ. ५.३६. क्वेरी क्रमांक 36 चे परिणाम
37. दोन फील्डचे टेबल मिळवा, जिथे पहिले फील्ड भागाचे नाव, सामग्री, पुरवठादार किंवा वितरण तारीख आहे आणि दुसरे फील्ड पहिल्या फील्डमधील रेषेची लांबी आहे
तांदूळ. ५.३७. क्वेरी क्रमांक 37 चे परिणाम
हा लेख डेटाबेस टेबल्स डेटासह भरण्यासाठी समर्पित आहे, म्हणजेच आम्ही नवीन रेकॉर्ड घालण्यासाठी SQL कमांड्सचा अभ्यास करू. असे म्हटले पाहिजे की टेबलमध्ये रेकॉर्डिंग दोन प्रकारे केले जाऊ शकते:
पद्धत क्रमांक १.
देशांच्या टेबलमध्ये नवीन देशाबद्दलची नोंद जोडण्याचा प्रयत्न करूया. ॲडिंग सिंटॅक्स खालीलप्रमाणे असेल:
टेबल_नाव मध्ये घाला (फील्ड_1, फील्ड_2, ...) मूल्ये (मूल्य_1, मूल्य_2, ...); आमच्या सारणीच्या संरचनेवर आधारित, SQL क्वेरी अशी असेल:
देशांत घाला (देश_नाव, संक्षेप_नाव) मूल्ये ("रशिया", "RU"); अशाप्रकारे आम्ही आमच्या टेबलमध्ये "रशिया" देशाबद्दलची नोंद जोडली. येथे सर्व काही स्पष्ट आणि सोपे असले पाहिजे, मुख्य गोष्ट म्हणजे आपण पहिल्या कंसात कोणती फील्ड दर्शवित आहात ते काळजीपूर्वक पहा आणि दुसऱ्या कंसात त्याच क्रमाने मूल्ये लिहा.
पद्धत क्रमांक 2.
दुसरी पद्धत, माझ्या मते, थोडी सोपी आहे, कारण तुम्ही काय नियुक्त करता आणि कोणत्या क्षेत्रात करता ते तुम्ही पाहता. माझ्यावर विश्वास ठेवा, जर टेबलमध्ये मोठ्या संख्येने स्तंभ असतील, तर पहिल्यामधील फील्डचा क्रम आणि दुसऱ्या कंसातील मूल्यांचा क्रम गोंधळात टाकणे किंवा त्याकडे दुर्लक्ष करणे खूप सोपे आहे. दुसऱ्या पद्धतीची वाक्यरचना अशी आहे:
टेबल_नाम मध्ये घाला SET फील्ड_1 = मूल्य_1, फील्ड_2 = मूल्य_2, ... ; टेबलमध्ये काही माहिती जोडण्यासाठी हे उदाहरण वापरू. व्यक्ती, कारण तेथे अधिक फील्ड आहेत आणि दुसऱ्या पद्धतीचा फायदा लगेच जाणवेल:
व्यक्तींमध्ये समाविष्ट करा SET first_name="Ivan", last_name="Dulin", registration_date="2012-06-14", country="1"; आता आमच्या टेबलमध्ये खालील डेटा आहे:
तुमच्या लक्षात आले असेल की आम्ही वयासाठी मूल्य निर्दिष्ट केले नाही, परंतु ते भरले गेले आहे... सर्व काही बरोबर आहे - या फील्डसाठी आम्ही डीफॉल्ट मूल्य 25 असे सेट केले आहे. म्हणून आता आमचे इव्हान ड्युलिन यासह डेटाबेसमध्ये सूचीबद्ध आहे वय 25 वर्षे. वय फील्डसाठी डीफॉल्ट मूल्य सेट करणे हे सर्वोत्तम उदाहरण असू शकत नाही, परंतु तुम्ही अशा गुणधर्मांना फील्डवर सेट करू शकता, उदाहरणार्थ, साइट वापरकर्ता रेटिंग किंवा पृष्ठ दृश्यांची संख्या. ते सुरुवातीला 0 वर सेट केले जातात.
तुम्ही MySQL: YYYY-MM-DD मधील तारीख स्वरूपाकडे देखील लक्ष दिले पाहिजे. आपण त्याचे पालन न केल्यास, आपल्या नोंदी फक्त टेबलमध्ये प्रविष्ट केल्या जाणार नाहीत.
तुम्ही बघू शकता, प्रोफेशन फील्ड NULL म्हणून भरले आहे, हे रिक्त मूल्य आहे. या क्षेत्रासाठी.
अतिरिक्त म्हणून, खालील आदेशाचा विचार करा:
डेटा लोकल इनफाईल "D:\zapros.txt" टेबल व्यक्तींमध्ये लोड करा; आम्ही आता काय केले असे तुम्हाला वाटते ?! आणि आम्ही खालील गोष्टी केल्या: टेबलमध्ये डेटा जोडला व्यक्तीफाइलमधून requests.txt, जे ड्राइव्ह D वर स्थित आहे. फाइलमधील माहितीची खालील रचना असावी:
फाइल डेटा संरचना खालील आवश्यकता पूर्ण करणे आवश्यक आहे:
- प्रत्येक नवीन एंट्रीचे वर्णन नवीन ओळीवर करणे आवश्यक आहे
- पूर्णपणे सर्व फील्डसाठी डेटा निर्दिष्ट करणे आवश्यक आहे. तुम्ही बघू शकता, आम्ही आयडी फील्डसाठी NULL मूल्य निर्दिष्ट केले आहे, कारण ते स्वयं-वाढ होत आहे, म्हणून MySQL स्वतः आवश्यक मूल्य प्रविष्ट करेल.
- फील्ड एकमेकांपासून टॅब कॅरेक्टर (टॅब की) द्वारे विभक्त केले जातात.
- तुम्ही प्रविष्ट केलेली माहिती विशिष्ट फील्डच्या डेटा प्रकारांशी जुळली पाहिजे. म्हणजेच, उदाहरणार्थ, YYYY-MM-DD फॉरमॅटमधील तारीख, पूर्णांकासाठी पूर्णांक इ.
प्रोफेशन टेबल:
व्यक्ती सारणी:
पहिले नाव | आडनाव | वय | नोंदणी दिनांक | देश | व्यवसाय |
लिओनिड | बिलक | 45 | 2012-06-20 | 2 | 1 |
युरी | नाझारोव | 22 | 2012-06-21 | 3 | 1 |
अल्ला | सावेन्को | 25 | 2012-06-22 | 2 | 3 |
इरिना | निकोलायवा | 31 | 2012-06-22 | 1 | 3 |
या नोंदी जोडण्याची खात्री करा, कारण आम्हाला SELECT स्टेटमेंटचा अभ्यास करणे आवश्यक आहे (डेटाबेसमधून माहिती निवडणे), जे आम्ही पुढील (चौथ्या) लेखात SQL प्रश्नांचा अभ्यास करणार आहोत.
टेबलमध्ये नवीन पंक्ती घालण्यासाठी SQL INSERT INTO आणि INSERT SELECT विधाने वापरली जातात. सूचना वापरण्याचे दोन मार्ग आहेत:
- केवळ मूल्ये: पहिल्या पद्धतीमध्ये स्तंभाच्या नावांशिवाय फक्त डेटा मूल्ये समाविष्ट करणे समाविष्ट आहे.
मांडणी:
table_name VALUES मध्ये घाला (value1, value2, value3,...); टेबल_नाव: टेबलचे नाव. व्हॅल्यू1, व्हॅल्यू2,... : नवीन रेकॉर्डसाठी पहिल्या कॉलमची व्हॅल्यू, दुसरा कॉलम,...
- स्तंभ नावे आणि मूल्ये: दुसरी पद्धत समाविष्ट करण्यासाठी स्तंभ नावे आणि पंक्ती मूल्ये निर्दिष्ट करते:
मांडणी:
टेबल_नाव मध्ये घाला (स्तंभ 1, स्तंभ2, स्तंभ3,..) मूल्ये (मूल्य1, मूल्य2, मूल्य3,...); टेबल_नाव: टेबलचे नाव. स्तंभ 1: पहिल्या स्तंभाचे नाव, द्वितीय स्तंभ... मूल्य1, मूल्य2,.. : पहिल्या स्तंभाची मूल्ये, द्वितीय स्तंभ,... नवीन रेकॉर्डसाठी
विनंत्या:
पद्धत 1 ( फक्त मूल्ये घालत आहे):
विद्यार्थी मूल्यांमध्ये घाला ("5","हर्ष","पश्चिम बंगाल","8759770477","19");
परिणाम:
INSERT INTO SELECT वापरल्यानंतर, विद्यार्थी टेबल आता यासारखे दिसेल:
ROLL_NO | NAME | पत्ता | फोन | वय |
1 | रॅम | दिल्ली | 9455123451 | 18 |
2 | रमेश | गुडगाव | 9562431543 | 18 |
3 | सुजित | रोहतक | 9156253131 | 20 |
4 | सुरेश | दिल्ली | 9156768971 | 18 |
3 | सुजित | रोहतक | 9156253131 | 20 |
2 | रमेश | गुडगाव | 9562431543 | 18 |
5 | हर्ष | पश्चिम बंगाल | 8759770477 | 19 |
पद्धत 2 ( केवळ निर्दिष्ट स्तंभांमध्ये मूल्ये समाविष्ट करणे):
विद्यार्थ्यामध्ये घाला (ROLL_NO, NAME, वय) मूल्ये ("5","PRATIK","19");
परिणाम:
विद्यार्थी टेबल आता यासारखे दिसेल:
ROLL_NO | NAME | पत्ता | फोन | वय |
1 | रॅम | दिल्ली | 9455123451 | 18 |
2 | रमेश | गुडगाव | 9562431543 | 18 |
3 | सुजित | रोहतक | 9156253131 | 20 |
4 | सुरेश | दिल्ली | 9156768971 | 18 |
3 | सुजित | रोहतक | 9156253131 | 20 |
2 | रमेश | गुडगाव | 9562431543 | 18 |
5 | प्रतीक | निरर्थक | निरर्थक | 19 |
लक्षात घ्या की ज्या स्तंभांसाठी कोणतीही मूल्ये निर्दिष्ट केलेली नाहीत ते null वर सेट केले आहेत.
INSERT INTO विधानात SELECT वापरणे
तुम्ही MySQL INSERT SELECT स्टेटमेंट वापरू शकता एका टेबलमधून पंक्ती कॉपी करा आणि त्या दुसऱ्या टेबलमध्ये घाला.
हे विधान वापरणे INSERT INTO वापरण्यासारखे आहे. फरक असा आहे की SELECT स्टेटमेंटचा वापर दुसऱ्या टेबलमधून डेटा निवडण्यासाठी केला जातो. INSERT INTO SELECT वापरण्याचे वेगवेगळे मार्ग खाली दिले आहेत:
- सर्व टेबल स्तंभ घाला: तुम्ही टेबलमधील सर्व डेटा कॉपी करून दुसऱ्या टेबलमध्ये पेस्ट करू शकता.
मांडणी:
first_table मध्ये INSERT SELECT * FROM second_table; first_table: पहिल्या सारणीचे नाव. second_table: दुसऱ्या सारणीचे नाव.
एका टेबलमधून डेटा कॉपी करण्यासाठी आम्ही SELECT स्टेटमेंट वापरले आणि दुसऱ्या टेबलमध्ये टाकण्यासाठी INSERT INTO स्टेटमेंट वापरले.
- वैयक्तिक सारणी स्तंभ घालत आहे. तुम्ही फक्त ते टेबल कॉलम कॉपी करू शकता जे तुम्हाला दुसऱ्या टेबलमध्ये पेस्ट करायचे आहेत.
मांडणी:
first_table(column_names1) मध्ये INSERT second_table मधून column_names2 निवडा; first_table: पहिल्या सारणीचे नाव. second_table: दुसऱ्या सारणीचे नाव. col_names1: टेबल 1 साठी स्वल्पविराम(,) विभक्त स्तंभ नावे. col_names2: स्वल्पविराम(,) टेबल 2 साठी विभक्त स्तंभ नावे.
आम्ही फक्त दुसऱ्या टेबलच्या निवडलेल्या कॉलममधून डेटा कॉपी करण्यासाठी SELECT स्टेटमेंट वापरतो आणि पहिल्या टेबलमध्ये टाकण्यासाठी MySQL INSERT INTO SELECT स्टेटमेंट वापरतो.
- टेबलमधून विशिष्ट पंक्ती कॉपी करणे. तुम्ही SELECT क्लॉजसह WHERE क्लॉज वापरून नंतर दुसऱ्या टेबलमध्ये पेस्ट करण्यासाठी टेबलमधून विशिष्ट पंक्ती कॉपी करू शकता. या प्रकरणात, आपण WHERE मध्ये योग्य स्थिती वापरणे आवश्यक आहे.
मांडणी:
तक्ता 2: पार्श्व विद्यार्थी
ROLL_NO | NAME | पत्ता | फोन | वय |
7 | सौविक | डमडम | 9876543210 | 18 |
8 | निरज | नोएडा | 9786543210 | 19 |
9 | सोमेश | रोहतक | 9687543210 | 20 |
विनंत्या:
पद्धत 1 ( सर्व पंक्ती आणि स्तंभ घाला):
लेटरल स्टुडंटमधून विद्यार्थी निवड * इन्सर्ट करा;
परिणाम:
ही क्वेरी LateralStudent टेबलमधील सर्व डेटा विद्यार्थी टेबलमध्ये समाविष्ट करेल. SQL INSERT INTO SELECT वापरल्यानंतर, स्टुडंट टेबल असे दिसेल:
ROLL_NO | NAME | पत्ता | फोन | वय |
1 | रॅम | दिल्ली | 9455123451 | 18 |
2 | रमेश | गुडगाव | 9562431543 | 18 |
3 | सुजित | रोहतक | 9156253131 | 20 |
4 | सुरेश | दिल्ली | 9156768971 | 18 |
3 | सुजित | रोहतक | 9156253131 | 20 |
2 | रमेश | गुडगाव | 9562431543 | 18 |
7 | सौविक | डमडम | 9876543210 | 18 |
8 | निरज | नोएडा | 9786543210 | 19 |
9 | सोमेश | रोहतक | 9687543210 | 20 |
पद्धत 2 ( वैयक्तिक स्तंभ घालत आहे):
विद्यार्थ्यामध्ये घाला(ROLL_NO,NAME,वय) ROLL_NO, NAME, वय लेटरल स्टुडंटमधून निवडा;
परिणाम:
ही क्वेरी लॅटरल स्टुडंट टेबलच्या ROLL_NO, NAME आणि वय स्तंभांमधील डेटा विद्यार्थी टेबलमध्ये समाविष्ट करेल. विद्यार्थी सारणीचे उर्वरित स्तंभ शून्य वर सेट केले जातील. SQL INSERT SELECT वापरल्यानंतर, टेबल असे दिसेल:
ROLL_NO | NAME | पत्ता | फोन | वय |
1 | रॅम | दिल्ली | 9455123451 | 18 |
2 | रमेश | गुडगाव | 9562431543 | 18 |
3 | सुजित | रोहतक | 9156253131 | 20 |
4 | सुरेश | दिल्ली | 9156768971 | 18 |
3 | सुजित | रोहतक | 9156253131 | 20 |
2 | रमेश | गुडगाव | 9562431543 | 18 |
7 | सौविक | निरर्थक | निरर्थक | 18 |
8 | निरज | निरर्थक | निरर्थक | 19 |
9 | सोमेश | निरर्थक | निरर्थक | 20 |
- घालण्यासाठी विशिष्ट पंक्ती निवडणे:
परिणाम:
ही क्वेरी विद्यार्थी टेबलमध्ये घालण्यासाठी LateralStudent टेबलमधून फक्त पहिली पंक्ती निवडेल. INSERT SELECT वापरल्यानंतर, टेबल असे दिसेल:
ROLL_NO | NAME | पत्ता | फोन | वय |
1 | रॅम | दिल्ली | 9455123451 | 18 |
2 | रमेश | गुडगाव | 9562431543 | 18 |
3 | सुजित | रोहतक | 9156253131 | 20 |
4 | सुरेश | दिल्ली | 9156768971 | 18 |
3 | सुजित | रोहतक | 9156253131 | 20 |
2 | रमेश | गुडगाव | 9562431543 | 18 |
7 | सौविक | डमडम | 9876543210 | 18 |
हे प्रकाशन “SQL INSERT INTO Statement” या लेखाचे भाषांतर आहे, जो अनुकूल प्रकल्प संघाने तयार केला आहे.
मागील विभागांमध्ये, आम्ही आधीच तयार केलेल्या सारण्यांमधून डेटा पुनर्प्राप्त करण्याचे काम पाहिले. आता आम्ही टेबल कसे तयार/हटवू शकतो, नवीन रेकॉर्ड कसे जोडू शकतो आणि जुने हटवू शकतो हे शोधण्याची वेळ आली आहे. मध्ये या हेतूंसाठी SQLअसे ऑपरेटर आहेत जसे: तयार करा- एक टेबल तयार करतो, बदल- टेबलची रचना बदलते, थेंब- टेबल किंवा फील्ड हटवते, घाला- टेबलमध्ये डेटा जोडतो. चला ऑपरेटरकडून ऑपरेटरच्या या गटाशी परिचित होऊया घाला.
1. संपूर्ण ओळी जोडणे
नावाप्रमाणेच ऑपरेटर घालाडेटाबेस टेबलमध्ये पंक्ती घालण्यासाठी (जोडण्यासाठी) वापरले जाते. जोडणे अनेक प्रकारे केले जाऊ शकते:
- - एक पूर्ण ओळ जोडा
- - एका ओळीचा भाग जोडा
- - क्वेरी परिणाम जोडा.
तर, टेबलमध्ये नवीन पंक्ती जोडण्यासाठी, आम्हाला टेबलचे नाव निर्दिष्ट करावे लागेल, स्तंभांची नावे द्यावी लागतील आणि रचना वापरून प्रत्येक स्तंभासाठी मूल्य निर्दिष्ट करावे लागेल. आत घाला टेबल_नाव (फील्ड1, फील्ड2 ...) मूल्ये (मूल्य1, मूल्य2...). एक उदाहरण पाहू.
विक्रेत्यांमध्ये घाला (आयडी, पत्ता, शहर, विक्रेता_नाव, देश) मूल्ये("6", "फर्स्ट स्ट्रीट", "लॉस एंजेलिस", "हॅरी मन्रो", "यूएसए")
तुम्ही स्तंभांच्या नावांचा क्रम देखील बदलू शकता, परंतु त्याच वेळी तुम्हाला पॅरामीटरमधील मूल्यांचा क्रम बदलण्याची आवश्यकता आहे. मूल्ये.
2. ओळींचा भाग जोडणे
मागील उदाहरणामध्ये, ऑपरेटर वापरताना घालाआम्ही टेबल कॉलमची नावे स्पष्टपणे चिन्हांकित केली आहेत. या वाक्यरचना वापरून, आपण काही स्तंभ वगळू शकतो. याचा अर्थ तुम्ही काही स्तंभांसाठी मूल्ये प्रविष्ट करता परंतु ती इतरांसाठी प्रदान करत नाही. उदाहरणार्थ:
विक्रेत्यांमध्ये घाला (आयडी, शहर, विक्रेता_नाव) मूल्ये("6", "लॉस एंजेलिस", "हॅरी मनरो")
या उदाहरणात, आम्ही दोन स्तंभांसाठी मूल्य निर्दिष्ट केलेले नाही पत्ताआणि देश. तुम्ही विधानातून काही स्तंभ वगळू शकता आत घाला, जर हे सारणीच्या व्याख्येला अनुमती देत असेल. या प्रकरणात, अटींपैकी एक पूर्ण करणे आवश्यक आहे: हा स्तंभ वैध म्हणून परिभाषित केला आहे निरर्थक(कोणत्याही मूल्याची अनुपस्थिती) किंवा टेबल व्याख्येमध्ये निर्दिष्ट डीफॉल्ट मूल्य. याचा अर्थ असा की कोणतेही मूल्य निर्दिष्ट न केल्यास, डीफॉल्ट मूल्य वापरले जाईल. जर तुम्हाला सारणीमध्ये एखादा स्तंभ गहाळ असेल जो त्याच्या पंक्तीमध्ये मूल्य दिसू देत नाही निरर्थकआणि डीफॉल्ट मूल्य परिभाषित केलेले नाही, DBMS एक त्रुटी संदेश निर्माण करेल आणि ही ओळ जोडली जाणार नाही.
3. निवडलेला डेटा जोडणे
मागील उदाहरणात, आम्ही क्वेरीमध्ये मॅन्युअली प्रविष्ट करून टेबलमध्ये डेटा समाविष्ट केला. तथापि, ऑपरेटर आत घालाआम्हाला दुसऱ्या सारणीवरून डेटा घालायचा असल्यास ही प्रक्रिया स्वयंचलित करण्याची परवानगी देते. या उद्देशासाठी एसक्यूएलमध्ये असे बांधकाम आहे मध्ये घाला ... निवडा .... हे डिझाइन आपल्याला एकाच वेळी एका टेबलमधून डेटा निवडण्याची आणि दुसऱ्या टेबलमध्ये घालण्याची परवानगी देते. समजा आपल्याकडे अजून एक टेबल आहे Sellers_EUयुरोपमधील आमच्या वस्तूंच्या विक्रेत्यांच्या यादीसह आणि आम्हाला ते सामान्य सारणीमध्ये जोडणे आवश्यक आहे विक्रेते. या सारण्यांची रचना समान आहे (स्तंभांची संख्या आणि समान नावे), परंतु डेटा भिन्न आहे. हे करण्यासाठी, आम्ही खालील क्वेरी लिहू शकतो:
विक्रेत्यांमध्ये घाला (आयडी, पत्ता, शहर, विक्रेता_नाव, देश) निवडाआयडी, पत्ता, शहर, विक्रेता_नाव, विक्रेते_EU पासून देश
आपल्याला लक्ष देणे आवश्यक आहे जेणेकरून अंतर्गत की ची मूल्ये पुनरावृत्ती होणार नाहीत (फील्ड आयडी), अन्यथा एक त्रुटी येईल. ऑपरेटर निवडासूचना देखील समाविष्ट करू शकतात कुठेडेटा फिल्टर करण्यासाठी. हे देखील लक्षात घ्यावे की डीबीएमएस स्टेटमेंटमध्ये समाविष्ट असलेल्या स्तंभांच्या नावांकडे लक्ष देत नाही. निवडा, फक्त ते ज्या क्रमाने मांडले आहेत ते तिच्यासाठी महत्त्वाचे आहे. म्हणून, पहिल्या निर्दिष्ट स्तंभातील डेटा ज्यामुळे निवडला गेला निवडा, कोणत्याही परिस्थितीत सारणीच्या पहिल्या स्तंभात भरले जाईल विक्रेते, ऑपरेटर नंतर निर्दिष्ट आत घालाफील्ड नावाची पर्वा न करता.
4. एका टेबलवरून दुसऱ्या टेबलवर डेटा कॉपी करणे
अनेकदा डेटाबेससह काम करताना, बॅकअप किंवा बदल करण्याच्या हेतूने कोणत्याही टेबलच्या प्रती तयार कराव्या लागतात. सारणीची संपूर्ण प्रत तयार करण्यासाठी, SQL एक वेगळे विधान प्रदान करते मध्ये निवडा. उदाहरणार्थ, आम्हाला टेबलची एक प्रत तयार करण्याची आवश्यकता आहे विक्रेते, तुम्हाला खालीलप्रमाणे विनंती लिहावी लागेल:
निवडा * विक्रेत्यांकडून_नवीन विक्रेत्यांमध्ये
मागील डिझाइनच्या विपरीत मध्ये घाला ... निवडा ...जेव्हा अस्तित्वात असलेल्या टेबलमध्ये डेटा जोडला जातो, तेव्हा डिझाइन नवीन टेबलवर डेटा कॉपी करते. तुम्ही असेही म्हणू शकता की पहिली रचना डेटा आयात करते आणि दुसरी निर्यात करते. डिझाइन वापरताना निवडा ... मध्ये ... पासून ...खालील गोष्टींचा विचार केला पाहिजे:
- - तुम्ही ऑपरेटरमध्ये कोणतीही वाक्ये वापरू शकता निवडा, जसे गट करूनआणि असणे
- - तुम्ही एकाधिक सारण्यांमधून डेटा जोडण्यासाठी जॉईन वापरू शकता
- - डेटा केवळ एका टेबलमध्ये जोडला जाऊ शकतो, तो कितीही टेबलमधून घेतला गेला तरीही.
हा लेख डेटाबेस टेबल्स डेटासह भरण्यासाठी समर्पित आहे, म्हणजेच आम्ही नवीन रेकॉर्ड घालण्यासाठी SQL कमांड्सचा अभ्यास करू. असे म्हटले पाहिजे की टेबलमध्ये रेकॉर्डिंग दोन प्रकारे केले जाऊ शकते:
पद्धत क्रमांक १.
देशांच्या टेबलमध्ये नवीन देशाबद्दलची नोंद जोडण्याचा प्रयत्न करूया. ॲडिंग सिंटॅक्स खालीलप्रमाणे असेल:
टेबल_नाव मध्ये घाला (फील्ड_1, फील्ड_2, ...) मूल्ये (मूल्य_1, मूल्य_2, ...); आमच्या सारणीच्या संरचनेवर आधारित, SQL क्वेरी अशी असेल:
देशांत घाला (देश_नाव, संक्षेप_नाव) मूल्ये ("रशिया", "RU"); अशाप्रकारे आम्ही आमच्या टेबलमध्ये "रशिया" देशाबद्दलची नोंद जोडली. येथे सर्व काही स्पष्ट आणि सोपे असले पाहिजे, मुख्य गोष्ट म्हणजे आपण पहिल्या कंसात कोणती फील्ड दर्शवित आहात ते काळजीपूर्वक पहा आणि दुसऱ्या कंसात त्याच क्रमाने मूल्ये लिहा.
पद्धत क्रमांक 2.
दुसरी पद्धत, माझ्या मते, थोडी सोपी आहे, कारण तुम्ही काय नियुक्त करता आणि कोणत्या क्षेत्रात करता ते तुम्ही पाहता. माझ्यावर विश्वास ठेवा, जर टेबलमध्ये मोठ्या संख्येने स्तंभ असतील, तर पहिल्यामधील फील्डचा क्रम आणि दुसऱ्या कंसातील मूल्यांचा क्रम गोंधळात टाकणे किंवा त्याकडे दुर्लक्ष करणे खूप सोपे आहे. दुसऱ्या पद्धतीची वाक्यरचना अशी आहे:
टेबल_नाम मध्ये घाला SET फील्ड_1 = मूल्य_1, फील्ड_2 = मूल्य_2, ... ; टेबलमध्ये काही माहिती जोडण्यासाठी हे उदाहरण वापरू. व्यक्ती, कारण तेथे अधिक फील्ड आहेत आणि दुसऱ्या पद्धतीचा फायदा लगेच जाणवेल:
व्यक्तींमध्ये समाविष्ट करा SET first_name="Ivan", last_name="Dulin", registration_date="2012-06-14", country="1"; आता आमच्या टेबलमध्ये खालील डेटा आहे:
तुमच्या लक्षात आले असेल की आम्ही वयासाठी मूल्य निर्दिष्ट केले नाही, परंतु ते भरले गेले आहे... सर्व काही बरोबर आहे - या फील्डसाठी आम्ही डीफॉल्ट मूल्य 25 असे सेट केले आहे. म्हणून आता आमचे इव्हान ड्युलिन यासह डेटाबेसमध्ये सूचीबद्ध आहे वय 25 वर्षे. वय फील्डसाठी डीफॉल्ट मूल्य सेट करणे हे सर्वोत्तम उदाहरण असू शकत नाही, परंतु तुम्ही अशा गुणधर्मांना फील्डवर सेट करू शकता, उदाहरणार्थ, साइट वापरकर्ता रेटिंग किंवा पृष्ठ दृश्यांची संख्या. ते सुरुवातीला 0 वर सेट केले जातात.
तुम्ही MySQL: YYYY-MM-DD मधील तारीख स्वरूपाकडे देखील लक्ष दिले पाहिजे. आपण त्याचे पालन न केल्यास, आपल्या नोंदी फक्त टेबलमध्ये प्रविष्ट केल्या जाणार नाहीत.
तुम्ही बघू शकता, प्रोफेशन फील्ड NULL म्हणून भरले आहे, हे रिक्त मूल्य आहे. या फील्डसाठी, आम्ही गुणधर्म "पर्यायी (NULL)" सेट करतो.
अतिरिक्त म्हणून, खालील आदेशाचा विचार करा:
डेटा लोकल इनफाईल "D:\zapros.txt" टेबल व्यक्तींमध्ये लोड करा; आम्ही आता काय केले असे तुम्हाला वाटते ?! आणि आम्ही खालील गोष्टी केल्या: टेबलमध्ये डेटा जोडला व्यक्तीफाइलमधून requests.txt, जे ड्राइव्ह D वर स्थित आहे. फाइलमधील माहितीची खालील रचना असावी:
फाइल डेटा संरचना खालील आवश्यकता पूर्ण करणे आवश्यक आहे:
- प्रत्येक नवीन एंट्रीचे वर्णन नवीन ओळीवर करणे आवश्यक आहे
- पूर्णपणे सर्व फील्डसाठी डेटा निर्दिष्ट करणे आवश्यक आहे. तुम्ही बघू शकता, आम्ही आयडी फील्डसाठी NULL मूल्य निर्दिष्ट केले आहे, कारण ते स्वयं-वाढ होत आहे, म्हणून MySQL स्वतः आवश्यक मूल्य प्रविष्ट करेल.
- फील्ड एकमेकांपासून टॅब कॅरेक्टर (टॅब की) द्वारे विभक्त केले जातात.
- तुम्ही प्रविष्ट केलेली माहिती विशिष्ट फील्डच्या डेटा प्रकारांशी जुळली पाहिजे. म्हणजेच, उदाहरणार्थ, YYYY-MM-DD फॉरमॅटमधील तारीख, पूर्णांकासाठी पूर्णांक इ.
प्रोफेशन टेबल:
व्यक्ती सारणी:
पहिले नाव | आडनाव | वय | नोंदणी दिनांक | देश | व्यवसाय |
लिओनिड | बिलक | 45 | 2012-06-20 | 2 | 1 |
युरी | नाझारोव | 22 | 2012-06-21 | 3 | 1 |
अल्ला | सावेन्को | 25 | 2012-06-22 | 2 | 3 |
इरिना | निकोलायवा | 31 | 2012-06-22 | 1 | 3 |
या नोंदी जोडण्याची खात्री करा, कारण आम्हाला SELECT स्टेटमेंटचा अभ्यास करणे आवश्यक आहे (डेटाबेसमधून माहिती निवडणे), जे आम्ही पुढील (चौथ्या) लेखात SQL प्रश्नांचा अभ्यास करणार आहोत.