एसक्यूएल इन्सर्ट क्वेरी. Transact-SQL - डेटा घालणे

sql क्वेरी INSERT INTO ला अर्थ प्राप्त होतो जेव्हा डेटाबेस टेबल तयार केला जातो. म्हणजेच, टेबल अस्तित्वात आहे, त्याचे नाव आहे, पंक्ती आणि स्तंभ तयार केले आहेत. टेबल ऑपरेटरद्वारे तयार केले जाते: , टेबल ऑपरेटरद्वारे सुधारित केले जाते.

sql क्वेरी INSERT INTO - क्वेरी वाक्यरचना

sql क्वेरी INSERT INTO मध्ये खालील वाक्यरचना आहे:

INSERT INTO table_name (आवश्यक असल्यास कंसात, आपण जिथे डेटा घालू इच्छिता त्या स्तंभांची सूची घाला) VALUES घातलेला डेटा1, डेटा 2, डेटा घातला3.

तुम्ही INSERT आणि INTRO मध्ये IGNORE पर्याय टाकू शकता. त्याची गरज नाही. सारणी संपादित करताना प्राथमिक की संरक्षित करणे आवश्यक आहे. अन्यथा, संपादनादरम्यान प्राथमिक की ची डुप्लिकेशन आढळल्यास, IGNORE पर्याय समाविष्ट करताना, प्राथमिक की असलेली पहिली पंक्ती संपादित केल्या जात असलेल्या सारणीमध्ये राहील. डीफॉल्टनुसार, आम्ही हा पर्याय वगळतो.

LOW_PRIORITY आणि DELAYED पर्यायी पर्याय आहेत. ते डेटाबेसमध्ये माहिती जोडण्यासाठी प्राधान्यक्रम ठरवतात. प्रथम डेटाबेस रिलीझ होण्याची प्रतीक्षा निर्दिष्ट करते, दुसरा म्हणजे माहिती बफर करणे.

क्वेरीमधील ओळ: VALUES वाक्यांशासह INSERT तुम्हाला डेटाबेस टेबलमध्ये एकच पंक्ती जोडण्याची परवानगी देईल. VALUES क्लॉजमध्ये या डेटाची मूल्ये आहेत.

VALUES वाक्यांशाऐवजी, सबक्वेरी निर्दिष्ट केल्या जाऊ शकतात. सबक्वेरीसह INSERT सबक्वेरीद्वारे परत केलेल्या पंक्ती टेबलमध्ये जोडते. डेटाबेस सर्व्हर सबक्वेरीवर प्रक्रिया करतो आणि सर्व परत आलेल्या पंक्ती टेबलमध्ये समाविष्ट करतो. जोपर्यंत सबक्वेरी त्यांना निवडत नाही तोपर्यंत सर्व्हर पंक्ती घालत नाही.

  • subquery_1 - एक सबक्वेरी ज्यावर सर्व्हर दृश्याप्रमाणेच प्रक्रिया करतो
  • subquery_2 ही सबक्वेरी आहे जी टेबलमध्ये घातलेल्या पंक्ती परत करते. या सबक्वेरीच्या सूचीमध्ये INSERT स्तंभ सूचीप्रमाणेच स्तंभांची संख्या असणे आवश्यक आहे.

MySQL डेटाबेसमध्ये सबक्वेरी व्यावहारिकपणे वापरल्या जात नाहीत.

MySQL डेटाबेसमध्ये INSERT INTO sql क्वेरीची उदाहरणे

आम्ही INSERT INTRO कमांड वापरून MySQL डेटाबेसमध्ये नवीन पंक्ती समाविष्ट करतो.

पहिले उदाहरण.

टेबल table_name मध्ये नवीन पंक्ती घाला.

टेबल_नाम मूल्यांमध्ये घाला ('2′,'145′,'1′,'नाव');

याचा अर्थ आम्हाला 2,145,1,name ही व्हॅल्यू टेबल table_name columns मध्ये घालायची आहेत. स्तंभ निर्दिष्ट केलेले नसल्यामुळे, सारणीच्या सर्व स्तंभांमध्ये मूल्ये भरली जातात.

उदाहरण दोन.

table_name टेबलच्या आवश्यक (निर्दिष्ट) स्तंभांमध्ये माहिती घाला.

टेबल_नाव (क्लायंट_ग्राहक, क्लायंट_सबक्लायंट, क्लायंट_मेल) मूल्ये ('नाम1','सबनाम1',' मध्ये घाला [ईमेल संरक्षित]′), (‘name2′,’subname2′,’ [ईमेल संरक्षित]′), ('name3′,'subname3′,(' [ईमेल संरक्षित]′);

इगोर सेरोव विशेषतः साइटसाठी "".

INSERT विधान टेबलमध्ये नवीन रेकॉर्ड समाविष्ट करते. या प्रकरणात, स्तंभ मूल्ये शाब्दिक स्थिरांक असू शकतात किंवा सबक्वेरी कार्यान्वित करण्याचा परिणाम असू शकतात. पहिल्या प्रकरणात, प्रत्येक पंक्ती घालण्यासाठी स्वतंत्र INSERT विधान वापरले जाते; दुस-या प्रकरणात, सबक्वेरीद्वारे परत केल्या जातील तितक्या पंक्ती घातल्या जातील.

ऑपरेटर वाक्यरचना खालीलप्रमाणे आहे:

    आत घाला [ (,...) ]

    (मूल्य(,…))

  1. | (मुलभूत मुल्य)

तुम्ही सादर केलेल्या वाक्यरचनावरून पाहू शकता की, स्तंभांची सूची पर्यायी आहे (वाक्यरचना वर्णनातील चौरस कंस हे सूचित करतात). ते गहाळ असल्यास, घातलेल्या मूल्यांची सूची पूर्ण असणे आवश्यक आहे, म्हणजेच, सारणीच्या सर्व स्तंभांसाठी मूल्ये प्रदान करणे. या प्रकरणात, मूल्यांचा क्रम ज्या सारणीमध्ये पंक्ती घातल्या आहेत त्या सारणीसाठी CREATE TABLE विधानाद्वारे निर्दिष्ट केलेल्या क्रमाशी संबंधित असणे आवश्यक आहे. याव्यतिरिक्त, ही मूल्ये ज्या स्तंभांमध्ये प्रविष्ट केली आहेत त्याच डेटा प्रकाराची असणे आवश्यक आहे. उदाहरण म्हणून, खालील CREATE TABLE विधानाद्वारे तयार केलेल्या उत्पादन सारणीमध्ये एक पंक्ती घालण्याचा विचार करा:

    टेबल उत्पादन तयार करा

    मेकर चार (१) शून्य नाही,

    मॉडेल varchar(4) शून्य नाही,

    varchar(7) NOT NULL टाइप करा

समजा तुम्हाला या टेबलमध्ये निर्माता बी कडून पीसी मॉडेल 1157 जोडायचे आहे हे खालील विधानासह केले जाऊ शकते:

    उत्पादनात घाला

    मूल्ये ("B" , 1157 , "PC" );

तुम्ही स्तंभांची सूची निर्दिष्ट केल्यास, तुम्ही त्यांचा "नैसर्गिक" क्रम बदलू शकता:

    उत्पादनात घाला (प्रकार, मॉडेल, निर्माता)

    मूल्ये ("PC" , 1157 , "B" );

असे दिसते की हे पूर्णपणे अनावश्यक वैशिष्ट्य आहे, जे केवळ डिझाइनला अधिक अवजड बनवते. तथापि, स्तंभांमध्ये डीफॉल्ट मूल्ये असल्यास ती जिंकते. खालील सारणी रचना विचारात घ्या:

    CREATE TABLE उत्पादन_D

    मेकर चार (1) NULL,

    मॉडेल varchar(4) NULL,

    varchar (7 ) NOT NULL DEFAULT "PC" टाइप करा

लक्षात घ्या की येथे सर्व स्तंभांच्या मूल्यांमध्ये डीफॉल्ट मूल्ये आहेत (पहिले दोन NULL आहेत आणि शेवटचा स्तंभ प्रकार आहे - PC). आता आम्ही लिहू शकतो:

    Product_D मध्ये घाला (मॉडेल, निर्माता)

    VALUES(1157, "B");

या प्रकरणात, पंक्ती घालताना गहाळ मूल्य डीफॉल्ट मूल्य - पीसी द्वारे बदलले जाईल. लक्षात ठेवा की जर एखाद्या स्तंभाला CREATE TABLE स्टेटमेंटमध्ये डीफॉल्ट मूल्य दिलेले नसेल आणि त्या टेबल कॉलममध्ये NULL वापरण्यास प्रतिबंध करण्यासाठी NOT NULL मर्यादा निर्दिष्ट केली असेल, तर NULL चे डीफॉल्ट मूल्य गृहीत धरले जाईल.

प्रश्न उद्भवतो: स्तंभांची सूची निर्दिष्ट करणे शक्य नाही आणि तरीही, डीफॉल्ट मूल्ये वापरणे शक्य आहे का? उत्तर होय आहे. हे करण्यासाठी, मूल्य स्पष्टपणे निर्दिष्ट करण्याऐवजी, आरक्षित शब्द वापरा DEFAULT :

    उत्पादन_डी मध्ये घाला

    मूल्ये ("B" , 1158 , डीफॉल्ट ) ;

सर्व स्तंभांमध्ये डीफॉल्ट मूल्ये असल्याने, डीफॉल्ट मूल्यांसह एक पंक्ती घालण्यासाठी तुम्ही लिहू शकता:

    उत्पादन_डी मध्ये घाला

    मूल्ये(डीफॉल्ट, डीफॉल्ट, डीफॉल्ट);

तथापि, या प्रकरणात एक विशेष बांधकाम डीफॉल्ट मूल्ये आहेत (ऑपरेटर वाक्यरचना पहा), ज्यासह वरील ऑपरेटर फॉर्ममध्ये पुन्हा लिहिले जाऊ शकते.

    उत्पादन_डी डीफॉल्ट मूल्यांमध्ये घाला;

लक्षात ठेवा की टेबलमध्ये पंक्ती घालताना, या टेबलवर लादलेले सर्व निर्बंध तपासले जातात. हे प्राथमिक की किंवा अद्वितीय अनुक्रमणिका मर्यादा, तपासा प्रतिबंध किंवा संदर्भ अखंडता मर्यादा असू शकतात. कोणत्याही निर्बंधांचे उल्लंघन केल्यास, पंक्ती समाविष्ट करणे नाकारले जाईल. आता सबक्वेरी वापरण्याच्या बाबतीत विचार करूया. समजा, पर्सनल कॉम्प्युटर मॉडेल्सशी संबंधित प्रॉडक्ट टेबलमधील सर्व पंक्ती Product_D टेबलमध्ये समाविष्ट करायच्या आहेत (प्रकार = 'PC'). आम्हाला आवश्यक असलेली मूल्ये आधीपासूनच काही टेबलमध्ये असल्याने, अंतर्भूत पंक्ती व्यक्तिचलितपणे तयार करणे, प्रथम, कुचकामी आहे आणि दुसरे म्हणजे, इनपुट त्रुटींना अनुमती देऊ शकते. सबक्वेरी वापरणे या समस्यांचे निराकरण करते:

सबक्वेरीमध्ये "*" चिन्हाचा वापर या प्रकरणात न्याय्य आहे, कारण स्तंभांचा क्रम दोन्ही सारण्यांसाठी समान आहे. असे नसल्यास, स्तंभ सूची एकतर INSERT विधान, सबक्वेरी किंवा दोन्हीमध्ये लागू करावी लागेल, जी स्तंभांच्या क्रमाशी जुळेल:

येथे, पूर्वीप्रमाणे, आपण विद्यमान डीफॉल्ट मूल्ये वापरू इच्छित असल्यास, आपण सर्व स्तंभ निर्दिष्ट करू शकत नाही, उदाहरणार्थ:

या प्रकरणात, सर्व समाविष्ट केलेल्या पंक्तींसाठी Product_D सारणीचा प्रकार स्तंभ डीफॉल्ट मूल्य PC सह बदलला जाईल.

लक्षात ठेवा की प्रेडिकेट असलेली सबक्वेरी वापरताना, फक्त त्या पंक्ती घातल्या जातील ज्यासाठी predicate मूल्य TRUE आहे (अज्ञात नाही!) दुसऱ्या शब्दांत, जर उत्पादन सारणीतील प्रकार स्तंभ NULLable असेल आणि ते मूल्य अनेक पंक्तींमध्ये असेल, तर त्या पंक्ती Product_D सारणीमध्ये समाविष्ट केल्या जाणार नाहीत.

UNION ALL क्लॉजसह पंक्ती बनवणारी सबक्वेरी वापरण्याचे कृत्रिम तंत्र तुम्हाला VALUES क्लॉजमधील रो कंस्ट्रक्टर वापरताना INSERT स्टेटमेंटमध्ये एक पंक्ती घालण्याची मर्यादा पार करू देते. त्यामुळे एक INSERT स्टेटमेंट वापरून अनेक पंक्ती टाकायच्या असल्यास, आम्ही लिहू शकतो:

    उत्पादन_डी मध्ये घाला

    "B" AS मेकर, 1158 AS मॉडेल, "PC" AS प्रकार निवडा

    युनियन सर्व

    "C", 2190, "लॅपटॉप" निवडा

    युनियन सर्व

    "डी", 3219, "प्रिंटर" निवडा;

डुप्लिकेट पंक्तींच्या अनुपस्थितीची हमी दिली असली तरीही UNION पेक्षा UNION ALL वापरणे श्रेयस्कर आहे, कारण या प्रकरणात डुप्लिकेट काढून टाकण्यासाठी कोणतीही तपासणी केली जाणार नाही.

हे नोंद घ्यावे की पंक्ती कन्स्ट्रक्टर वापरून अनेक ट्यूपल्स घालणे आधीपासूनच लागू केले आहे रिलेशनल डेटाबेस मॅनेजमेंट सिस्टम (DBMS), मायक्रोसॉफ्ट कॉर्पोरेशनने विकसित केली आहे.स्ट्रक्चर्ड क्वेरी लँग्वेज) ही एक सार्वत्रिक संगणक भाषा आहे जी रिलेशनल डेटाबेसमध्ये डेटा तयार करण्यासाठी, सुधारित करण्यासाठी आणि हाताळण्यासाठी वापरली जाते. SQL सर्व्हर 2008. ही शक्यता लक्षात घेता, शेवटची क्वेरी याप्रमाणे पुन्हा लिहिली जाऊ शकते:

    उत्पादन_डी मूल्यांमध्ये घाला

    ("B", 1158, "PC"),

    ("C", 2190, "लॅपटॉप"),

सर्वांना नमस्कार! हा लेख आपण कसे करू शकता याबद्दल चर्चा करेल टेबलमध्ये डेटा जोडामायक्रोसॉफ्ट एसक्यूएल सर्व्हरमध्ये, जर तुम्हाला T-SQL भाषेची थोडीशी ओळख असेल, तर तुम्हाला कदाचित लक्षात आले असेल की आता आम्ही INSERT स्टेटमेंटबद्दल तसेच टेबलमध्ये डेटा जोडण्यासाठी ते कसे वापरले जाऊ शकते याबद्दल बोलू.

चला, नेहमीप्रमाणे, थोड्या सिद्धांतासह प्रारंभ करूया.

T-SQL मध्ये INSERT विधान

घालाएक T-SQL सूचना आहे जी टेबलमध्ये डेटा जोडण्यासाठी डिझाइन केलेली आहे, उदा. नवीन रेकॉर्ड तयार करणे. ही सूचना टेबलमध्ये एकच पंक्ती जोडण्यासाठी आणि मोठ्या प्रमाणात डेटा घालण्यासाठी दोन्ही वापरली जाऊ शकते. INSERT विधानाला डेटा घालण्यासाठी परवानगी आवश्यक आहे ( घाला) लक्ष्य टेबलवर.

डेटाच्या तुकड्यावर INSERT स्टेटमेंट वापरण्याचे अनेक मार्ग आहेत जे समाविष्ट करणे आवश्यक आहे:

  • घालण्यासाठी विशिष्ट मूल्यांची यादी करणे;
  • SELECT क्वेरी म्हणून डेटा सेट निर्दिष्ट करणे;
  • प्रक्रिया कॉलच्या स्वरूपात डेटा सेट निर्दिष्ट करणे जे टॅब्युलर डेटा परत करते.

सरलीकृत वाक्यरचना

घाला [टेबल] ( स्तंभांची यादी...) मूल्ये ( मूल्यांची यादी...) किंवा निवडा नमुना विनंतीकिंवा अंमलात आणा प्रक्रिया

  • INSERT INTO ही टेबलमध्ये डेटा जोडण्यासाठी कमांड आहे;
  • टेबल हे लक्ष्य सारणीचे नाव आहे ज्यामध्ये तुम्ही नवीन रेकॉर्ड टाकू इच्छिता;
  • स्तंभ सूची ही सारणीच्या स्तंभ नावांची सूची आहे ज्यामध्ये डेटा घातला जाईल, स्वल्पविरामाने विभक्त केला जाईल;
  • VALUES हे टेबल व्हॅल्यू कन्स्ट्रक्टर आहे ज्यासह आम्ही टेबलमध्ये समाविष्ट करणारी मूल्ये निर्दिष्ट करतो;
  • मूल्यांची सूची ही मूल्ये समाविष्ट केली जातील, स्वल्पविरामाने विभक्त केली जातील. स्तंभ सूचीमध्ये स्तंभ दिसतील त्या क्रमाने ते सूचीबद्ध केले जातात;
  • SELECT ही टेबलमध्ये समाविष्ट करण्यासाठी डेटा निवडण्यासाठी एक क्वेरी आहे. क्वेरी परतावा स्तंभांच्या सूचीशी जुळला पाहिजे असा निकाल सेट;
  • EXECUTE हा टेबलमध्ये समाविष्ट करण्यासाठी डेटा मिळविण्यासाठी एक प्रक्रिया कॉल आहे. संग्रहित प्रक्रिया परतावा स्तंभांच्या सूचीशी जुळला पाहिजे असा निकाल सेट.

INSERT INTO स्टेटमेंटचे साधारणपणे हे असे दिसते, बहुतेक प्रकरणांमध्ये, आपण टेबलमध्ये नवीन रेकॉर्ड कसे जोडू शकता.

तुम्ही ज्या स्तंभांमध्ये डेटा टाकाल त्या स्तंभांची यादी लिहिण्याची गरज नाही, अशा परिस्थितीत त्यांचा क्रम टेबलमधील स्तंभांच्या वास्तविक क्रमानुसार निश्चित केला जाईल. जेव्हा तुम्ही निवडण्यासाठी क्वेरी घालण्यासाठी किंवा लिहिण्यासाठी मूल्ये निर्दिष्ट करता तेव्हा तुम्ही हा क्रम लक्षात ठेवला पाहिजे. व्यक्तिशः, मी शिफारस करतो की आपण अद्याप स्तंभांची सूची सूचित करा ज्यामध्ये आपण डेटा जोडण्याची योजना आखत आहात.

आपण हे देखील लक्षात ठेवले पाहिजे की स्तंभांची सूची आणि मूल्यांच्या सूचीमध्ये, तथाकथित आवश्यक स्तंभ असणे आवश्यक आहे ज्यात NULL मूल्य असू शकत नाही; जर तुम्ही ते निर्दिष्ट केले नाही आणि स्तंभामध्ये डीफॉल्ट मूल्य नसेल, तर एक त्रुटी येईल.

मी हे देखील लक्षात ठेवू इच्छितो की तुम्ही समाविष्ट कराल त्या मूल्यांचा डेटा प्रकार ज्या स्तंभामध्ये हे मूल्य समाविष्ट केले जाईल त्या स्तंभाच्या डेटा प्रकाराशी जुळले पाहिजे किंवा किमान अंतर्निहित रूपांतरणास समर्थन द्या. परंतु मी तुम्हाला डेटा प्रकार नियंत्रित करण्याचा सल्ला देतो ( स्वरूप) मूल्ये, मूल्यांच्या सूचीमध्ये आणि SELECT क्वेरीमध्ये दोन्ही.

पुरेसा सिद्धांत, चला सरावाकडे वळूया.

प्रारंभिक डेटा

टेबलमध्ये डेटा जोडण्यासाठी, आम्हाला टेबलची आवश्यकता आहे, म्हणून चला ते तयार करू आणि त्यात रेकॉर्ड जोडण्याचा प्रयत्न करूया.

लक्षात ठेवा! सर्व उदाहरणे Microsoft SQL Server 2016 Express मध्ये चालविली जातील.

टेबल टेस्ट टेबल तयार करा (ओडेंटिटी(1,1) शून्य नाही, (100) शून्य नाही, शून्य नाही)

आमच्या चाचणी टेबलमध्ये किमतींसह उत्पादनांची सूची असेल.

तसेच उदाहरणांमध्ये आपण टेबलमध्ये डेटा जोडण्यासाठी टेबल व्हॅल्यू मिळवून देणारी प्रक्रिया वापरू, तर चला ते देखील तयार करूया.

चाचणी प्रक्रिया तयार करा जसे की उत्पादनाचे नाव निवडा, चाचणी सारणीच्या शेवटी किंमत

उदाहरणार्थ, ते नव्याने तयार केलेल्या TestTable सारणीवरून डेटा परत करेल.

लक्षात ठेवा!

तुम्ही समजून घेतल्याप्रमाणे, ही सामग्री वाचणे म्हणजे T-SQL भाषेचे काही ज्ञान असणे सूचित करते, म्हणून जर तुम्हाला काही स्पष्ट नसेल, तर मी शिफारस करतो की तुम्ही खालील सामग्रीशी परिचित व्हा:

उदाहरण 1 - टेबल व्हॅल्यू कन्स्ट्रक्टर वापरून टेबलमध्ये नवीन रेकॉर्ड जोडणे

प्रथम एक रेकॉर्ड जोडण्याचा प्रयत्न करूया आणि लगेच निकाल पाहूया, म्हणजे. चला नमुना साठी विनंती लिहूया.

टेस्टटेबलमध्ये घाला (उत्पादनाचे नाव, किंमत) मूल्ये ("संगणक", 100) टेस्ट टेबलमधून निवडा * निवडा

तुम्हाला दिसेल की टेबलच्या नावानंतर आम्ही कॉलम्सची नावे सूचीबद्ध केली आहेत ज्यामध्ये आम्ही डेटा जोडू, स्वल्पविरामाने विभक्त करून, नंतर आम्ही कीवर्ड सूचित केले मूल्येआणि कंसात देखील, त्याच क्रमाने, स्वल्पविरामाने विभक्त करून, आम्ही समाविष्ट करू इच्छित मूल्ये लिहिली.

INSERT विधानानंतर, मी एक SELECT विधान लिहिले आणि त्यांना GO विधानासह वेगळे केले.

आता कल्पना करूया की आपल्याला काही ओळी जोडण्याची गरज आहे. यासाठी आम्ही पुढील विनंती लिहू.

टेस्टटेबलमध्ये घाला (उत्पादनाचे नाव, किंमत) मूल्ये ("संगणक", 100), ("कीबोर्ड", 20), ("मॉनिटर", 50) टेस्ट टेबलमधून निवडा * जा


उदाहरण 2 - SELECT क्वेरी वापरून टेबलमध्ये नवीन पंक्ती जोडणे

बर्याच वेळा टेबलमध्ये भरपूर डेटा जोडण्याची आवश्यकता असते, उदाहरणार्थ, निवडलेल्या क्वेरीवर आधारित, म्हणजे. निवडा. हे करण्यासाठी, VALUES ऐवजी, आम्हाला फक्त विनंती निर्दिष्ट करायची आहे.

टेस्टटेबलमध्ये टाका(उत्पादनाचे नाव, किंमत) उत्पादनाचे नाव निवडा, टेस्ट टेबल मधून किंमत जिथे आयडी >


या उदाहरणात, आम्ही एक SELECT क्वेरी लिहिली आहे जी TestTable सारणीवरून डेटा परत करते, परंतु ते सर्व नाही, परंतु केवळ 2 पेक्षा जास्त आयडी असलेले डेटा देते. आणि परिणाम त्याच TestTable टेबलमध्ये समाविष्ट केला गेला.

स्तंभांची सूची निर्दिष्ट केल्याशिवाय तुम्ही टेबलमध्ये रेकॉर्ड कसे जोडू शकता याचे उदाहरण म्हणून, दुसरी डेटा इन्सर्शन क्वेरी लिहूया जी वरील क्वेरीप्रमाणेच करेल, फक्त ती समाविष्ट करण्यासाठी कॉलम्सची यादी करणार नाही.

TestTable मध्ये समाविष्ट करा उत्पादनाचे नाव निवडा, TestTable वरून Id जेथे 2 > 2 वर जा * TestTable मधून निवडा


या प्रकरणात, आम्हाला खात्री आहे की TestTable टेबलमध्ये पहिला कॉलम उत्पादनाचे नाव आहे आणि दुसरा किंमत आहे, त्यामुळे आम्हाला ते तसे लिहिणे परवडेल. परंतु, पुन्हा, सराव मध्ये स्तंभांची सूची निर्दिष्ट करणे चांगले आहे.

जर तुमच्या लक्षात आले असेल की, सर्व उदाहरणांमध्ये मी आयडी कॉलम निर्दिष्ट केला नाही, परंतु आमच्याकडे तो आहे, कोणत्याही त्रुटी आढळल्या नाहीत, कारण या कॉलममध्ये आयडेंटीटी गुणधर्म आहे, ते आपोआप आयडेंटिफायर तयार करते, त्यामुळे अशा कॉलममध्ये डेटा घालणे शक्य नाही.

उदाहरण 3 - संग्रहित प्रक्रिया वापरून टेबलमध्ये नवीन रेकॉर्ड जोडणे

आता टेबलमध्ये डेटा टाकूया की संग्रहित प्रक्रिया आपल्याला परत येईल. येथे अर्थ समान आहे, VALUES ऐवजी आणि विनंतीऐवजी आम्ही एक प्रक्रिया कॉल सूचित करतो. परंतु तुम्हाला समजल्याप्रमाणे, प्रक्रियेद्वारे परत केलेल्या स्तंभांची क्रमवारी आणि संख्या घातल्या जाणाऱ्या स्तंभांच्या सूचीशी काटेकोरपणे जुळली पाहिजे ( स्तंभ सूची निर्दिष्ट केलेली नसली तरीही).

टेस्टटेबलमध्ये घाला (उत्पादनाचे नाव, किंमत) EXEC चाचणी प्रक्रिया चाचणी टेबलमधून निवडा * निवडा


मला आशा आहे की या सामग्रीने तुम्हाला सूचना समजण्यास मदत केली आहे. आत घाला, आणि आता माझ्याकडे एवढेच आहे!

मागील विभागांमध्ये, आम्ही आधीच तयार केलेल्या सारण्यांमधून डेटा पुनर्प्राप्त करण्याचे काम पाहिले. आता आम्ही टेबल कसे तयार/हटवू शकतो, नवीन रेकॉर्ड कसे जोडू शकतो आणि जुने हटवू शकतो हे शोधण्याची वेळ आली आहे. मध्ये या हेतूंसाठी SQLअसे ऑपरेटर आहेत जसे: तयार करा- एक टेबल तयार करतो, बदल- टेबलची रचना बदलते, थेंब- टेबल किंवा फील्ड हटवते, घाला- टेबलमध्ये डेटा जोडतो. चला ऑपरेटरकडून ऑपरेटरच्या या गटाशी परिचित होऊया घाला.

1. संपूर्ण ओळी जोडणे

नावाप्रमाणेच ऑपरेटर घालाडेटाबेस टेबलमध्ये पंक्ती घालण्यासाठी (जोडण्यासाठी) वापरले जाते. जोडणे अनेक प्रकारे केले जाऊ शकते:

  • - एक पूर्ण ओळ जोडा
  • - एका ओळीचा भाग जोडा
  • - क्वेरी परिणाम जोडा.

तर, टेबलमध्ये नवीन पंक्ती जोडण्यासाठी, आम्हाला टेबलचे नाव निर्दिष्ट करावे लागेल, स्तंभांची नावे द्यावी लागतील आणि रचना वापरून प्रत्येक स्तंभासाठी मूल्य निर्दिष्ट करावे लागेल. आत घाला टेबल_नाव (फील्ड1, फील्ड2 ...) मूल्ये (मूल्य1, मूल्य2...). एक उदाहरण पाहू.

विक्रेत्यांमध्ये घाला (आयडी, पत्ता, शहर, विक्रेता_नाव, देश) मूल्ये("6", "फर्स्ट स्ट्रीट", "लॉस एंजेलिस", "हॅरी मन्रो", "यूएसए")

तुम्ही स्तंभांच्या नावांचा क्रम देखील बदलू शकता, परंतु त्याच वेळी तुम्हाला पॅरामीटरमधील मूल्यांचा क्रम बदलण्याची आवश्यकता आहे. मूल्ये.

2. ओळींचा भाग जोडणे

मागील उदाहरणामध्ये, ऑपरेटर वापरताना घालाआम्ही टेबल कॉलमची नावे स्पष्टपणे चिन्हांकित केली आहेत. या वाक्यरचना वापरून, आपण काही स्तंभ वगळू शकतो. याचा अर्थ तुम्ही काही स्तंभांसाठी मूल्ये प्रविष्ट करता परंतु ती इतरांसाठी प्रदान करत नाही. उदाहरणार्थ:

विक्रेत्यांमध्ये घाला (आयडी, शहर, विक्रेता_नाव) मूल्ये("6", "लॉस एंजेलिस", "हॅरी मन्रो")

या उदाहरणात, आम्ही दोन स्तंभांसाठी मूल्य निर्दिष्ट केलेले नाही पत्ताआणि देश. तुम्ही विधानातून काही स्तंभ वगळू शकता आत घाला, जर हे सारणीच्या व्याख्येला अनुमती देत ​​असेल. या प्रकरणात, अटींपैकी एक पूर्ण करणे आवश्यक आहे: हा स्तंभ वैध म्हणून परिभाषित केला आहे निरर्थक(कोणत्याही मूल्याची अनुपस्थिती) किंवा टेबल व्याख्येमध्ये निर्दिष्ट डीफॉल्ट मूल्य. याचा अर्थ असा की कोणतेही मूल्य निर्दिष्ट न केल्यास, डीफॉल्ट मूल्य वापरले जाईल. जर तुम्हाला सारणीमध्ये एखादा स्तंभ गहाळ असेल जो त्याच्या पंक्तीमध्ये मूल्य दिसू देत नाही निरर्थकआणि डीफॉल्ट मूल्य परिभाषित केलेले नाही, DBMS एक त्रुटी संदेश व्युत्पन्न करेल आणि पंक्ती जोडली जाणार नाही.

3. निवडलेला डेटा जोडणे

मागील उदाहरणामध्ये, आम्ही क्वेरीमध्ये मॅन्युअली प्रविष्ट करून टेबलमध्ये डेटा समाविष्ट केला. तथापि, ऑपरेटर आत घालाआम्हाला दुसऱ्या सारणीवरून डेटा घालायचा असल्यास ही प्रक्रिया स्वयंचलित करण्याची परवानगी देते. एसक्यूएलमध्ये या उद्देशासाठी असे बांधकाम आहे मध्ये घाला ... निवडा .... हे डिझाइन आपल्याला एकाच वेळी एका टेबलमधून डेटा निवडण्याची आणि दुसऱ्या टेबलमध्ये घालण्याची परवानगी देते. समजा आपल्याकडे अजून एक टेबल आहे Sellers_EUयुरोपमधील आमच्या वस्तूंच्या विक्रेत्यांच्या यादीसह आणि आम्हाला ते सामान्य सारणीमध्ये जोडणे आवश्यक आहे विक्रेते. या सारण्यांची रचना समान आहे (स्तंभांची संख्या आणि समान नावे), परंतु डेटा भिन्न आहे. हे करण्यासाठी, आम्ही खालील क्वेरी लिहू शकतो:

विक्रेत्यांमध्ये घाला (आयडी, पत्ता, शहर, विक्रेता_नाव, देश) निवडाआयडी, पत्ता, शहर, विक्रेता_नाव, विक्रेते_EU पासून देश

आपल्याला लक्ष देणे आवश्यक आहे जेणेकरून अंतर्गत की ची मूल्ये पुनरावृत्ती होणार नाहीत (फील्ड आयडी), अन्यथा एक त्रुटी येईल. ऑपरेटर निवडासूचना देखील समाविष्ट करू शकतात कुठेडेटा फिल्टर करण्यासाठी. हे देखील लक्षात घ्यावे की डीबीएमएस स्टेटमेंटमध्ये समाविष्ट असलेल्या स्तंभांच्या नावांकडे लक्ष देत नाही. निवडा, फक्त ते ज्या क्रमाने मांडले आहेत ते तिच्यासाठी महत्त्वाचे आहे. म्हणून, पहिल्या निर्दिष्ट स्तंभातील डेटा ज्यामुळे निवडला गेला निवडा, कोणत्याही परिस्थितीत टेबलच्या पहिल्या स्तंभात भरले जाईल विक्रेते, ऑपरेटर नंतर निर्दिष्ट आत घालाफील्ड नावाची पर्वा न करता.

4. एका टेबलवरून दुसऱ्या टेबलवर डेटा कॉपी करणे

अनेकदा डेटाबेससह काम करताना, बॅकअप किंवा बदल करण्याच्या हेतूने कोणत्याही टेबलच्या प्रती तयार कराव्या लागतात. सारणीची संपूर्ण प्रत तयार करण्यासाठी, SQL एक वेगळे विधान प्रदान करते मध्ये निवडा. उदाहरणार्थ, आम्हाला टेबलची एक प्रत तयार करण्याची आवश्यकता आहे विक्रेते, तुम्हाला खालीलप्रमाणे विनंती लिहावी लागेल:

निवडा * विक्रेत्यांकडून_नवीन विक्रेत्यांमध्ये

मागील डिझाइनच्या विपरीत मध्ये घाला ... निवडा ...जेव्हा अस्तित्वात असलेल्या टेबलमध्ये डेटा जोडला जातो, तेव्हा डिझाइन नवीन टेबलवर डेटा कॉपी करते. तुम्ही असेही म्हणू शकता की पहिली रचना डेटा आयात करते आणि दुसरी निर्यात करते. डिझाइन वापरताना निवडा ... मध्ये ... पासून ...खालील गोष्टींचा विचार केला पाहिजे:

  • - तुम्ही ऑपरेटरमध्ये कोणतीही वाक्ये वापरू शकता निवडा, जसे गट करूनआणि असणे
  • - तुम्ही एकाधिक सारण्यांमधून डेटा जोडण्यासाठी जॉईन वापरू शकता
  • - डेटा केवळ एका टेबलमध्ये जोडला जाऊ शकतो, तो कितीही टेबलमधून घेतला गेला तरीही.

INSERT INTO म्हणजे काय?

डेटाबेस सिस्टमचे मुख्य लक्ष्य टेबलमध्ये डेटा संग्रहित करणे आहे. डेटा सहसा डेटाबेसच्या वर चालणाऱ्या ऍप्लिकेशन प्रोग्रामद्वारे पुरविला जातो. त्या दिशेने, SQL मध्ये INSERT कमांड आहे जी टेबलमध्ये डेटा संग्रहित करण्यासाठी वापरली जाते. द INSERT कमांड नवीन पंक्ती तयार करतेडेटा संग्रहित करण्यासाठी टेबलमध्ये.

मूलभूत वाक्यरचना

खाली दर्शविलेल्या SQL INSERT कमांडचे मूळ वाक्यरचना पाहू.

`टेबल_नाव`(स्तंभ_1,स्तंभ_2,...) मूल्यांमध्ये घाला (मूल्य_1,मूल्य_2,...);

  • `टेबल_नाव` मध्ये घालाही कमांड आहे जी MySQL सर्व्हरला `table_name` नावाच्या टेबलमध्ये नवीन पंक्ती जोडण्यास सांगते.
  • (स्तंभ_1, स्तंभ_2,...)नवीन पंक्तीमध्ये अद्यतनित करण्यासाठी स्तंभ निर्दिष्ट करते
  • मूल्ये (मूल्य_1,मूल्य_2,...)नवीन पंक्तीमध्ये जोडली जाणारी मूल्ये निर्दिष्ट करते

नवीन सारणीमध्ये समाविष्ट केल्या जाणाऱ्या डेटा मूल्यांचा पुरवठा करताना, विविध डेटा प्रकारांशी व्यवहार करताना खालील गोष्टींचा विचार केला पाहिजे.

  • स्ट्रिंग डेटा प्रकार- सर्व स्ट्रिंग व्हॅल्यू सिंगल कोट्समध्ये बंद केल्या पाहिजेत.
  • संख्यात्मक डेटा प्रकार- सर्व अंकीय मूल्ये एकल किंवा दुहेरी अवतरणात न जोडता थेट पुरवली जावीत.
  • तारीख डेटा प्रकार- "YYYY-MM-DD" स्वरूपात एकल अवतरणांमध्ये तारीख मूल्ये संलग्न करा.

उदाहरण:

समजा आमच्याकडे नवीन लायब्ररी सदस्यांची खालील यादी आहे जी डेटाबेसमध्ये जोडली जाणे आवश्यक आहे.

पूर्ण नावे जन्मतारीख लिंग वास्तविक पत्ता टपालाचा पत्ता संपर्क क्रमांक ईमेल पत्ता
लिओनार्ड हॉफस्टॅडर पुरुष वुडक्रेस्ट 0845738767
शेल्डन कूपर पुरुष वुडक्रेस्ट 0976736763
राजेश कुथरपल्ली पुरुष फेअरव्ह्यू 0938867763
लेस्ली विंकल 14/02/1984 पुरुष 0987636553
हॉवर्ड वोलोविट्झ 24/08/1981 पुरुष दक्षिण पार्क पी.ओ. बॉक्स 4563 0987786553

चला "डेटा एक-एक करून टाकूया. आम्ही लिओनार्ड हॉफस्टॅडरने सुरुवात करू. आम्ही संपर्क क्रमांकाला संख्यात्मक डेटा प्रकार मानू आणि एकल अवतरणात क्रमांक संलग्न करणार नाही.

`सदस्य` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ("Leonard Hofstadter","Male","Woodcrest"0845738767);

वरील स्क्रिप्ट कार्यान्वित केल्याने लिओनार्डच्या संपर्क क्रमांकावरून 0 कमी होतो. कारण हे मूल्य संख्यात्मक मूल्य म्हणून मानले जाईल आणि शून्य (0) सुरुवातीला टाकले जाईल कारण ते महत्त्वपूर्ण नाही.

अशा समस्या टाळण्यासाठी, मूल्य खाली दर्शविल्याप्रमाणे एकल अवतरणांमध्ये संलग्न केले पाहिजे -

`सदस्य` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ("Sheldon Cooper","Male","Woodcrest", "0976736763");

वरील बाबतीत, शून्य(0) टाकले जाणार नाही

जोपर्यंत योग्य मूल्ये योग्य स्तंभांमध्ये मॅप केली जात आहेत तोपर्यंत स्तंभांचा क्रम बदलण्याचा INSERT क्वेरीवर कोणताही परिणाम होत नाही.

खाली दर्शविलेली क्वेरी वरील बिंदू दर्शवते.

`सदस्य` (`संपर्क_संख्या`, `लिंग`,`full_names`,`physical_address`)VALUES ("0938867763","Male","Rajesh Koothrapali","Woodcrest");

वरील प्रश्नांनी जन्मतारीख कॉलम वगळला, बाय डीफॉल्ट MySQL INSERT क्वेरीमध्ये वगळलेल्या स्तंभांमध्ये NULL मूल्ये समाविष्ट करेल.

आता लेस्लीचा रेकॉर्ड टाकू ज्यात जन्मतारीख आहे. तारीख मूल्य "YYYY-MM-DD" स्वरूप वापरून एकल अवतरणांमध्ये संलग्न केले जावे.

`सदस्य` (`पूर्ण_नावे`, `date_of_birth`,`gender`,`physical_address`,`contact_number`) VALUES ("लेस्ली विंकल","1984-02-14","Male","Woodcrest"," मध्ये घाला 0987636553");

वरील सर्व क्वेरींनी स्तंभ निर्दिष्ट केले आणि त्यांना इन्सर्ट स्टेटमेंटमधील मूल्यांमध्ये मॅप केले. जर आपण टेबलमधील सर्व कॉलम्ससाठी व्हॅल्यूज पुरवत असाल, तर आपण इन्सर्ट क्वेरीमधून कॉलम्स वगळू शकतो.

`सदस्य` मूल्यांमध्ये घाला (९,"हॉवर्ड वोलोविट्झ","पुरुष","1981-08-24","साउथपार्क","पी.ओ. बॉक्स 4563", "0987786553", "lwolowitzemail.me");

आता सदस्य टेबलमधील सर्व पंक्ती पाहण्यासाठी SELECT स्टेटमेंट वापरू. SELECT * FROM `members`;

सदस्यत्व क्रमांकपूर्ण_नावेलिंगजन्म_तारीखवास्तविक पत्ताटपालाचा पत्ताcontact_numberईमेल
1 जेनेट जोन्सस्त्री21-07-1980 फर्स्ट स्ट्रीट प्लॉट क्र. 4खाजगी बॅग0759 253 542 हा ईमेल पत्ता स्पॅमबॉट्सपासून संरक्षित केला जात आहे. ते पाहण्यासाठी तुम्हाला JavaScript सक्षम करणे आवश्यक आहे.
2 जेनेट स्मिथ जोन्सस्त्री23-06-1980 मेलरोस 123निरर्थकनिरर्थकहा ईमेल पत्ता स्पॅमबॉट्सपासून संरक्षित केला जात आहे. ते पाहण्यासाठी तुम्हाला JavaScript सक्षम करणे आवश्यक आहे.
3 रॉबर्ट फिलपुरुष12-07-1989 3रा रस्ता 34निरर्थक12345 हा ईमेल पत्ता स्पॅमबॉट्सपासून संरक्षित केला जात आहे. ते पाहण्यासाठी तुम्हाला JavaScript सक्षम करणे आवश्यक आहे.
4 ग्लोरिया विल्यम्सस्त्री14-02-1984 दुसरा रस्ता 23निरर्थकनिरर्थकनिरर्थक
5 लिओनार्ड हॉफस्टॅडरपुरुषनिरर्थकवुडक्रेस्टनिरर्थक845738767 निरर्थक
6 शेल्डन कूपरपुरुषनिरर्थकवुडक्रेस्टनिरर्थक976736763 निरर्थक
7 राजेश कुथरपल्लीपुरुषनिरर्थकवुडक्रेस्टनिरर्थक938867763 निरर्थक
8 लेस्ली विंकलपुरुष14-02-1984 वुडक्रेस्टनिरर्थक987636553 निरर्थक
9 हॉवर्ड वोलोविट्झपुरुष24-08-1981 दक्षिण पार्कपी.ओ. बॉक्स 4563987786553 हा ईमेल पत्ता स्पॅमबॉट्सपासून संरक्षित केला जात आहे. ते पाहण्यासाठी तुम्हाला JavaScript सक्षम करणे आवश्यक आहे.

Leonard Hofstadter चा संपर्क क्रमांक संपर्क क्रमांकावरून शून्य (0) वगळला आहे याकडे लक्ष द्या. इतर संपर्क क्रमांकांनी सुरवातीला शून्य (0) टाकलेले नाही.

दुसऱ्या टेबलमधून टेबलमध्ये घालणे

INSERT कमांडचा वापर दुसऱ्या टेबलमधून टेबलमध्ये डेटा घालण्यासाठी देखील केला जाऊ शकतो. मूलभूत वाक्यरचना खाली दर्शविल्याप्रमाणे आहे.

टेबलमध्ये घाला_1 टेबल_2 मधून * निवडा;

आता एक व्यावहारिक उदाहरण पाहू या, आम्ही प्रात्यक्षिकांच्या उद्देशाने चित्रपट श्रेणींसाठी एक डमी टेबल तयार करू. आम्ही नवीन श्रेणी सारणी categories_archive म्हणू. खाली दाखवलेली स्क्रिप्ट टेबल तयार करते.

सारणी तयार करा `श्रेणी_संग्रह` (`श्रेणी_आयडी` इंट(११) ऑटो_INCREMENT, `श्रेणी_नाव` वर्ण(१५०) डीफॉल्ट शून्य, `टिप्पणी` वर्ण(५००) डीफॉल्ट शून्य, प्राथमिक की` (`श्रेणी_आयडी)

टेबल तयार करण्यासाठी वरील स्क्रिप्ट कार्यान्वित करा.

आता कॅटेगरीज टेबलमधील सर्व पंक्ती कॅटेगरी अर्काइव्ह टेबलमध्ये टाकूया.

`श्रेण्या_संग्रह` मध्ये घाला * श्रेण्यांमधून निवडा

वरील स्क्रिप्ट कार्यान्वित केल्याने श्रेणी सारणीतील सर्व पंक्ती वर्ग संग्रहण सारणीमध्ये समाविष्ट केल्या जातात. स्क्रिप्ट कार्य करण्यासाठी सारणी संरचना समान असणे आवश्यक आहे हे लक्षात ठेवा. अधिक मजबूत स्क्रिप्ट अशी आहे जी समाविष्ट सारणीमधील स्तंभांची नावे डेटा असलेल्या तक्त्यामधील नावांवर मॅप करते.

खाली दर्शविलेली क्वेरी त्याचा वापर दर्शवते.

`श्रेण्या_संग्रह` (श्रेणी_आयडी,श्रेणी_नाव,टिप्पणी) मध्ये घाला.

SELECT क्वेरी कार्यान्वित करत आहे

`श्रेण्या_संग्रह` मधून * निवडा

खाली दर्शविलेले खालील परिणाम देते.

श्रेणी_आयडीश्रेणी_नावटिप्पण्या
1 कॉमेडीविनोदासह चित्रपट
2 रोमँटिकप्रेम कथा
3 महाकाव्यकथा प्राचीन चित्रपट
4 भयपटनिरर्थक
5 विज्ञान कथानिरर्थक
6 थ्रिलरनिरर्थक
7 कृतीनिरर्थक
8 रोमँटिक कॉमेडीनिरर्थक
9 व्यंगचित्रेनिरर्थक
10 व्यंगचित्रेनिरर्थक

सारांश

  • INSERT कमांडचा वापर टेबलमध्ये नवीन डेटा जोडण्यासाठी केला जातो
  • तारीख आणि स्ट्रिंग व्हॅल्यू सिंगल कोट्समध्ये बंद केल्या पाहिजेत.
  • अंकीय मूल्ये अवतरणांमध्ये संलग्न करणे आवश्यक नाही.
  • INSERT कमांडचा वापर एका टेबलमधून दुसऱ्या टेबलमध्ये डेटा घालण्यासाठी देखील केला जाऊ शकतो.