SQL सर्वर 2017 डेटाबेस में क्वेरी कैसे बनाएं।
सबसे बुनियादी प्रश्नों में से एक जो आप कर सकते हैं वह इस प्रकार है:
SELECT * FROM TableName;
यह क्वेरी किसी दिए गए तालिका से सभी डेटा लौटाती है। TableName
उस तालिका का नाम है जिसे आप क्वेरी करना चाहते हैं। आपको बस इतना करना है कि इसे अपने डेटाबेस में किसी तालिका के नाम से बदल दें, क्वेरी चलाएँ, और उस तालिका की सामग्री प्रदर्शित की जाएगी।
हमारे डेटाबेस में तीन टेबल होते हैं। प्रत्येक में डेटा होता है। आइए देखें कि प्रत्येक तालिका में क्या है।
द Artists
तालिका:
SELECT * FROM Artists;परिणाम
ArtistId ArtistName ActiveFrom -------- ---------------------- ------------------------ 1 Iron Maiden 1975-12-25T00:00:00.000Z 2 AC/DC 1973-01-11T00:00:00.000Z 3 Allan Holdsworth 1969-01-01T00:00:00.000Z 4 Buddy Rich 1919-01-01T00:00:00.000Z 5 Devin Townsend 1993-01-01T00:00:00.000Z 6 Jim Reeves 1948-01-01T00:00:00.000Z 7 Tom Jones 1963-01-01T00:00:00.000Z 8 Maroon 5 1994-01-01T00:00:00.000Z 9 The Script 2001-01-01T00:00:00.000Z 10 Lit 1988-06-26T00:00:00.000Z 11 Black Sabbath 1968-01-01T00:00:00.000Z 12 Michael Learns to Rock 1988-03-15T00:00:00.000Z 13 Carabao 1981-01-01T00:00:00.000Z 14 Karnivool 1997-01-01T00:00:00.000Z 15 Birds of Tokyo 2004-01-01T00:00:00.000Z 16 Bodyjar 1990-01-01T00:00:00.000Z 16 row(s) returned Executed in 1 ms
द Albums
तालिका:
SELECT * FROM Albums;परिणाम
AlbumId AlbumName ReleaseDate ArtistId GenreId ------- ------------------------ ------------------------ -------- ------- 1 Powerslave 1984-09-03T00:00:00.000Z 1 1 2 Powerage 1978-05-05T00:00:00.000Z 2 1 3 Singing Down the Lane 1956-01-01T00:00:00.000Z 6 3 4 Ziltoid the Omniscient 2007-05-21T00:00:00.000Z 5 1 5 Casualties of Cool 2014-05-14T00:00:00.000Z 5 1 6 Epicloud 2012-09-18T00:00:00.000Z 5 1 31 Somewhere in Time 1986-09-29T00:00:00.000Z 1 1 32 Piece of Mind 1983-05-16T00:00:00.000Z 1 1 33 Killers 1981-02-02T00:00:00.000Z 1 1 34 No Prayer for the Dying 1990-10-01T00:00:00.000Z 1 1 35 No Sound Without Silence 2014-09-12T00:00:00.000Z 9 4 36 Big Swing Face 1967-06-01T00:00:00.000Z 4 2 37 Blue Night 2000-11-01T00:00:00.000Z 12 4 38 Eternity 2008-10-27T00:00:00.000Z 12 4 39 Scandinavia 2012-06-11T00:00:00.000Z 12 4 40 Long Lost Suitcase 2015-10-09T00:00:00.000Z 7 4 41 Praise and Blame 2010-06-26T00:00:00.000Z 7 4 42 Along Came Jones 1965-05-21T00:00:00.000Z 7 4 43 All Night Wrong 2002-05-05T00:00:00.000Z 3 2 44 The Sixteen Men of Tain 2000-03-20T00:00:00.000Z 3 2 20 row(s) returned Executed in 1 ms
द Genres
तालिका:
SELECT * FROM Genres;परिणाम
GenreId Genre ------- ------- 1 Rock 2 Jazz 3 Country 4 Pop 5 Blues 6 Hip Hop 7 Rap 8 Punk 8 row(s) returned Executed in 1 ms
तीनों मामलों में हमारा सवाल एक ही था। केवल एक चीज जो बदली वह थी टेबल का नाम।
यह सबसे बुनियादी प्रश्नों में से एक है जो हम कर सकते हैं। यह केवल एक ही तालिका से सभी पंक्तियों और सभी स्तंभों को लौटाता है।
हम केवल उस डेटा को वापस करने के लिए इस क्वेरी को कई तरीकों से संशोधित कर सकते हैं जिसे हम देखना चाहते हैं। नीचे कुछ सामान्य तरीके दिए गए हैं जिनसे हम किसी क्वेरी को संशोधित कर सकते हैं ताकि हमें ठीक वही परिणाम मिले जो हमें चाहिए।
कॉलम निर्दिष्ट करें
तारक का उपयोग करने के बजाय (*
) सभी स्तंभों को वापस करने के लिए, आप केवल उन स्तंभों को स्पष्ट रूप से बता सकते हैं जिन्हें आप वापस करना चाहते हैं।
SELECT AlbumId, AlbumName, ArtistId FROM Albums;परिणाम
AlbumId AlbumName ArtistId ------- ------------------------ -------- 1 Powerslave 1 2 Powerage 2 3 Singing Down the Lane 6 4 Ziltoid the Omniscient 5 5 Casualties of Cool 5 6 Epicloud 5 31 Somewhere in Time 1 32 Piece of Mind 1 33 Killers 1 34 No Prayer for the Dying 1 35 No Sound Without Silence 9 36 Big Swing Face 4 37 Blue Night 12 38 Eternity 12 39 Scandinavia 12 40 Long Lost Suitcase 7 41 Praise and Blame 7 42 Along Came Jones 7 43 All Night Wrong 3 44 The Sixteen Men of Tain 3 20 row(s) returned Executed in 1 ms
मानदंड को छोटा करें
आप एक WHERE
जोड़ सकते हैं क्लॉज केवल उन्हीं पंक्तियों को वापस करने के लिए है जो आपके द्वारा प्रदान किए गए मानदंड से मेल खाते हैं।
SELECT AlbumId, AlbumName, ArtistId FROM Albums WHERE ArtistId = 1;परिणाम
AlbumId AlbumName ArtistId ------- ----------------------- -------- 1 Powerslave 1 31 Somewhere in Time 1 32 Piece of Mind 1 33 Killers 1 34 No Prayer for the Dying 1 5 row(s) returned Executed in 1 ms
किसी अन्य तालिका में शामिल हों
आप डेटा साझा करने वाली कई तालिकाओं से परिणाम वापस करने के लिए शामिल होने का उपयोग कर सकते हैं। यही सब रिश्ते हैं। विशेष रूप से, एक जॉइन का आमतौर पर उपयोग किया जाता है जहां एक टेबल की विदेशी कुंजी दूसरे की प्राथमिक कुंजी से मेल खाती है।
SELECT AlbumId, AlbumName, ArtistName FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId WHERE ReleaseDate < '1980-01-01';परिणाम
AlbumId AlbumName ArtistName ------- --------------------- ---------- 2 Powerage AC/DC 3 Singing Down the Lane Jim Reeves 36 Big Swing Face Buddy Rich 42 Along Came Jones Tom Jones 4 row(s) returned Executed in 1 ms
आप देखेंगे कि WHERE
क्लॉज अभी भी उन स्तंभों पर काम करता है जो वास्तव में आउटपुट में शामिल नहीं हैं। इस मामले में, इसे ReleaseDate
. पर लागू किया गया था कॉलम, भले ही हम उस कॉलम को परिणामों में शामिल न करें।
आप यह भी देखेंगे कि हम दो ArtistId
. के योग्य हैं तालिका के नाम वाले स्तंभ (अर्थात Albums.ArtistId
और Artists.ArtistId
) SQL सर्वर को यह जानने के लिए हमें यह करना चाहिए कि उस कॉलम को संदर्भित करते समय हम किस तालिका का उल्लेख कर रहे हैं। कुछ डेटाबेस डेवलपर्स सभी SQL प्रश्नों में सभी कॉलम नामों को योग्य बनाने के लिए इसे अच्छा अभ्यास मानते हैं, हालांकि यह व्यक्तिगत वरीयता या प्रोजेक्ट-विशिष्ट कोडिंग सम्मेलन का मामला है।
उपनाम जोड़ें
कोड को अधिक संक्षिप्त बनाने के लिए आप अपने प्रश्नों में तालिका उपनाम भी जोड़ सकते हैं। उदाहरण के लिए, आप Artists
दे सकते हैं ar
. का एक उपनाम और Albums
al
. का एक उपनाम (या कोई अन्य स्ट्रिंग जो आपको पसंद हो)।
कॉलम नामों को योग्य बनाने के लिए आप इन उपनामों का उपयोग कर सकते हैं। यहां ऊपर की तरह ही क्वेरी दी गई है, लेकिन सभी कॉलम नामों के साथ टेबल एलियासेस के साथ योग्यता प्राप्त की गई है:
SELECT al.AlbumId, al.AlbumName, ar.ArtistName FROM Albums al INNER JOIN Artists ar ON al.ArtistId = ar.ArtistId WHERE al.ReleaseDate < '1980-01-01';परिणाम
AlbumId AlbumName ArtistName ------- --------------------- ---------- 2 Powerage AC/DC 3 Singing Down the Lane Jim Reeves 36 Big Swing Face Buddy Rich 42 Along Came Jones Tom Jones 4 row(s) returned Executed in 1 ms
आप कॉलम के लिए उपनाम भी निर्दिष्ट कर सकते हैं (न केवल टेबल)। हम इसे अगले उदाहरण में करते हैं।
दिनांक प्रारूपित करें
ऐसे कई अलग-अलग तरीके हैं जिनसे डेटाबेस में दिनांक और समय का इलाज किया जा सकता है। SQL सर्वर में दिनांक संग्रहीत करने के लिए विभिन्न डेटा प्रकार होते हैं (जैसे date
, time
, datetime
, smalldatetime
, आदि) और तिथियों से निपटने के लिए कई अलग-अलग कार्य हैं (उदाहरण के लिए SYSDATETIME()
, GETDATE( )
, CURRENT_TIMESTAMP
, आदि)।
इस उदाहरण में, हम YEAR()
. का प्रयोग करेंगे दिनांक के केवल वर्ष भाग को वापस करने के लिए कार्य करता है।
SELECT AlbumName, YEAR(ReleaseDate) AS Year FROM Albums;परिणाम
AlbumName Year ------------------------ ---- Powerslave 1984 Powerage 1978 Singing Down the Lane 1956 Ziltoid the Omniscient 2007 Casualties of Cool 2014 Epicloud 2012 Somewhere in Time 1986 Piece of Mind 1983 Killers 1981 No Prayer for the Dying 1990 No Sound Without Silence 2014 Big Swing Face 1967 Blue Night 2000 Eternity 2008 Scandinavia 2012 Long Lost Suitcase 2015 Praise and Blame 2010 Along Came Jones 1965 All Night Wrong 2002 The Sixteen Men of Tain 2000 20 row(s) returned Executed in 1 ms
इस उदाहरण में हम एक कॉलम के लिए एक उपनाम भी निर्दिष्ट करते हैं। अधिक विशेष रूप से, हम YEAR()
. के परिणाम के लिए एक उपनाम निर्दिष्ट करते हैं फ़ंक्शन, जिसमें से हम ReleaseDate
. पास करते हैं एक तर्क के रूप में स्तंभ।
इस उदाहरण के बारे में एक और बात यह है कि हमने AS
. का उपयोग किया है उपनाम निर्दिष्ट करते समय कीवर्ड। यह वैकल्पिक है, और हम AS
. का भी उपयोग कर सकते थे पिछले उदाहरण में किसी तालिका को उपनाम निर्दिष्ट करते समय कीवर्ड।
एसक्यूएल और ट्रांजैक्ट-एसक्यूएल के बारे में
उपरोक्त प्रश्न (और इस ट्यूटोरियल में अन्य प्रश्न) संरचित क्वेरी भाषा (एसक्यूएल) में लिखे गए हैं। अधिक विशेष रूप से, SQL सर्वर Transact-SQL का उपयोग करता है (कभी-कभी छोटा करके T-SQL ), जो कि माइक्रोसॉफ्ट और साइबेस का एसक्यूएल का मालिकाना विस्तार है।
SQL अधिकांश रिलेशनल डेटाबेस प्रबंधन प्रणालियों पर उपयोग की जाने वाली मानक क्वेरी भाषा है। यह अमेरिकी राष्ट्रीय मानक संस्थान (एएनएसआई) और अंतर्राष्ट्रीय मानकीकरण संगठन (आईएसओ) का मानक है।
जबकि अधिकांश बुनियादी प्रश्न अधिकांश रिलेशनल डेटाबेस में काम करेंगे, एक डेटाबेस सिस्टम और दूसरे के बीच पोर्ट करते समय कुछ प्रश्नों को थोड़ा संशोधित करने की आवश्यकता हो सकती है। उदाहरण के लिए, आपके पास एक स्क्रिप्ट हो सकती है जो SQL सर्वर में चलती है। आप उस स्क्रिप्ट का उपयोग MySQL में भी कर सकते हैं, हालाँकि, आप पा सकते हैं कि इसके सफलतापूर्वक चलने से पहले आपको कुछ चीजों को बदलने की आवश्यकता है।
इस ट्यूटोरियल में SQL स्क्रिप्ट उन चीजों का एक छोटा सा नमूना प्रदर्शित करती है जो आप SQL के साथ कर सकते हैं। अधिक जानकारी के लिए मेरा SQL ट्यूटोरियल देखें या Microsoft Transact-SQL संदर्भ पर जाएँ।