यह आलेख समझने और कार्यान्वित करने के लिए काफी सरल संरचना के साथ डेटाबेस संदर्भ तालिका के विरुद्ध SQL क्वेरी लिखने पर ध्यान केंद्रित करेगा।
इसके अतिरिक्त, हम कुछ पेशेवर जीवन युक्तियों के साथ प्रभावी SQL क्वेरी लिखने के पीछे की अवधारणाओं को स्पष्ट करने जा रहे हैं।
डेटाबेस तालिका को क्वेरी करने से पहले
चूंकि यह आलेख SQL स्क्रिप्ट की सहायता से डेटाबेस तालिकाओं को क्वेरी करने के बारे में है, इसलिए पाठकों के पास अवधारणाओं और उदाहरणों को पूरी तरह से समझने के लिए एक निश्चित पृष्ठभूमि होनी चाहिए। हमें इस बात का आभास होना चाहिए कि किसी तालिका को कैसे संदर्भित किया जाए। साथ ही, आवश्यक उपकरण मौजूद होने चाहिए:
आपको चाहिए:
- संबंधपरक डेटाबेस और SQL का बुनियादी ज्ञान।
- स्थानीय या दूरस्थ रूप से स्थापित एक SQL डेटाबेस सर्वर।
- डेटाबेस प्रबंधन उपकरण जैसे SQL सर्वर प्रबंधन स्टूडियो या SQL सर्वर के लिए dbForge स्टूडियो।
आपको नमूना डेटाबेस बनाने में सक्षम होना चाहिए (प्रदान की गई स्क्रिप्ट की सहायता से), SQL सर्वर से कनेक्ट करें, और उस नमूना डेटाबेस के विरुद्ध चलाएं।
इससे पहले कि हम रिक्त डेटाबेस के विरुद्ध क्वेरीज़ चलाने के लिए आगे बढ़ें, आपको ज्ञान को ताज़ा करने के लिए विषय को समर्पित पिछले लेख को देखने की आवश्यकता हो सकती है:
रिक्त डेटाबेस से सरल SQL क्वेरी कैसे लिखें
संदर्भ तालिका से शुरू होने वाली SQL क्वेरी लिखना
हमें दो तालिकाओं वाले नमूना डेटाबेस के विरुद्ध SQL क्वेरी लिखने की आवश्यकता है। योजना SQL संदर्भ तालिका के रूप में जानी जाने वाली तालिकाओं में से एक से डेटा देखने की है। नोट:संदर्भ तालिका कोई भी तालिका हो सकती है जिसके लिए किसी अन्य तालिका से डेटा की आवश्यकता नहीं होती है।
सबसे पहले, हमें इसे सटीक रूप से क्वेरी करने के लिए नमूना डेटाबेस की संरचना को समझने की आवश्यकता है।
डेटाबेस संदर्भ तालिका उदाहरण
हम एक नमूने का उपयोग करते हैं BookSimple2 डेटाबेस जिसमें दो टेबल होते हैं, बुक टाइप और बुक करें ।
पुस्तक प्रकार तालिका में किसी पुस्तक को असाइन की जाने वाली पुस्तकों के प्रकार होते हैं। पुस्तक तालिका में पुस्तकों के नाम, प्रकार और स्टॉक (उपलब्ध प्रतियों की संख्या) शामिल हैं।
यह अनुमान लगाना आसान है कि दोनों टेबल चाबियों के माध्यम से जुड़े हुए हैं। पुस्तक . में संग्रहीत पुस्तक का प्रकार तालिका को मूल रूप से पुस्तक प्रकार . में परिभाषित किया गया है टेबल। यह डेटा को सुसंगत और विश्वसनीय रखने की अनुमति देता है।
इसलिए, पुस्तक प्रकार तालिका एक संदर्भ तालिका है - यह मुख्य पुस्तक . को अपना संदर्भ (पुस्तक प्रकार) प्रदान करती है टेबल।
नीचे दिए गए उदाहरण पर एक नज़र डालें:
अगर हम पुस्तक . को लिंक नहीं करते हैं पुस्तक प्रकार . के साथ तालिका पुस्तक का प्रकार प्राप्त करने के लिए, हमें हर बार एक नई पुस्तक संग्रहीत करने पर आवश्यक प्रकार को परिभाषित करना होगा। परिणामस्वरूप, त्रुटियाँ जल्द ही होंगी क्योंकि हम एक ही प्रकार को बार-बार संग्रहीत कर रहे हैं। इसके अलावा, हम वर्तनी की गलतियों के कारण कई और प्रकार बना सकते हैं।
मान लें कि यदि हम संदर्भ तालिकाओं के उपयोग को अनदेखा करते हैं और केवल एक मुख्य तालिका बनाते हैं, तो हम एक प्रकार का प्रतिनिधित्व करने के लिए विभिन्न तरीकों का उपयोग कर सकते हैं, जैसे कि डिज़ाइन , डिज़ाइनिंग , और डिज़ाइन . यह भ्रमित करता है, खासकर जब डेटा को क्वेरी और समझ रहा हो।
SQL में तालिकाएँ एक-दूसरे से कैसे संबंधित हैं, इस बारे में अधिक जानकारी के लिए आप पिछला लेख भी देख सकते हैं:
SQL सर्वर प्रबंधन स्टूडियो (SSMS) के साथ डेटाबेस डिज़ाइन सीखें - भाग 2
अब जब आप संदर्भ तालिकाओं और मुख्य तालिकाओं के उपयोग की पृष्ठभूमि देखते हैं, तो हम उदाहरणों पर आगे बढ़ सकते हैं।
SQL में संदर्भ तालिका कैसे बनाएं
डेटाबेस डेवलपमेंट टूल खोलें (यह SQL सर्वर मैनेजमेंट स्टूडियो या SQL सर्वर के लिए dbForge Studio हो सकता है) और स्थापित SQL सर्वर इंस्टेंस से कनेक्ट करें।
नमूना डेटाबेस सेट करने के लिए मास्टर डेटाबेस के सामने निम्नलिखित स्क्रिप्ट लिखें BookSimple2 दो टेबल के साथ:
-- Create sample database BookSimple2
USE MASTER
GO
CREATE DATABASE BookSimple2
GO
USE BookSimple2
-- Creating a reference table BookType
CREATE TABLE dbo.BookType
(
BookTypeId INT IDENTITY(1,1),
Name VARCHAR(50)NOT NULL,
Detail VARCHAR(200)NULL
CONSTRAINT PK_BookType_BookTypeId PRIMARY KEY (BookTypeId)
)
GO
-- Populating (adding rows to the) table BookType
SET IDENTITY_INSERT dbo.BookType ON
GO
INSERT INTO dbo.BookType
(
BookTypeId
,Name
,Detail
)
VALUES
(
1 -- ID - INT Primary Key
,'Designing' -- Name - varchar(50) NOT NULL
,'This is Designing' -- Detail - varchar(200)
),
(
2 -- ID - INT Primary Key
,'Testing' -- Name - varchar(50) NOT NULL
,'This is Testing' -- Detail - varchar(200)
),
(
3 -- ID - INT Primary Key
,'Coding' -- Name - varchar(50) NOT NULL
,'This is Coding' -- Detail - varchar(200)
);
GO
SET IDENTITY_INSERT dbo.BookType OFF
GO
-- Creating a table Book
CREATE TABLE dbo.Book
(
BookId INT IDENTITY(1,1),
Name VARCHAR(50),
BookTypeId INT,
Stock INT,
CONSTRAINT PK_Book_BookId PRIMARY KEY (BookId)
)
GO
स्क्रिप्ट चलाने के बाद, आप नए बनाए गए डेटाबेस को SSMS ऑब्जेक्ट एक्सप्लोरर या SQL सर्वर के लिए dbForge Studio के डेटाबेस एक्सप्लोरर सेक्शन में देख सकते हैं:
SQL विदेशी कुंजी के साथ दो तालिकाओं का संदर्भ कैसे दें
मैंने जानबूझकर स्क्रिप्ट के उस हिस्से को बाहर रखा है जो संदर्भ तालिका के बीच संबंध बनाता है (BookType ) और मुख्य तालिका (पुस्तक ) चाबियों के रूप में।
संदर्भ तालिका को मुख्य तालिका से जोड़ने के लिए नमूना डेटाबेस के विरुद्ध निम्न स्क्रिप्ट निष्पादित करें:
-- Creating foreign key constraint on Book table to get BookTypeId values from BookType table
ALTER TABLE dbo.Book
ADD CONSTRAINT [FK_Book_BookType_BookTypeId]
FOREIGN KEY ([BookTypeId]) REFERENCES dbo.[BookType] ([BookTypeId]);
BookSimple2 . का विस्तार करें डेटाबेस> बुक करें तालिका> कुंजी फ़ोल्डर:
हम देख सकते हैं कि दो टेबल सफलतापूर्वक जुड़े हुए हैं।
उपरोक्त SQL सर्वर प्रबंधन स्टूडियो का स्क्रीनशॉट है। हालाँकि, यदि आप डेटाबेस को SQL सर्वर के लिए dbForge Studio के डेटाबेस एक्सप्लोरर में देखते हैं, तो दृश्य बिल्कुल वैसा ही है।
वांछित डेटाबेस चुनने के बारे में एक महत्वपूर्ण युक्ति: आपको यह सुनिश्चित करना होगा कि आप सही डेटाबेस - नमूना डेटाबेस के विरुद्ध क्वेरी चला रहे हैं। इसलिए, इसे उपलब्ध डेटाबेस की सूची में से चुनें या निम्न स्क्रिप्ट चलाएँ:
-- Select the sample SQL database to query it
USE BookSimple2
जरूरी! यदि आप SQL डेटाबेस के क्लाउड संस्करण के साथ काम करते हैं जिसे Azure SQL डेटाबेस के रूप में जाना जाता है, तो डेटाबेस का चयन करने के लिए स्क्रिप्ट का उपयोग लागू नहीं होता है।
पहली क्वेरी लिखना
डेटाबेस टेबल को क्वेरी करने के लिए, हमें केवल निम्नलिखित फॉर्म में सेलेक्ट स्टेटमेंट को ध्यान में रखना होगा:
SELECT * FROM <TableName>
सेलेक्ट स्टेटमेंट बहुत अधिक लचीला है, लेकिन अभी के लिए, हम केवल एक टेबल के सभी रिकॉर्ड्स (पंक्तियों) को देखने पर ध्यान केंद्रित करेंगे।
एसक्यूएल के बारे में एक महत्वपूर्ण युक्ति :याद रखें कि एसक्यूएल (विशेष रूप से टी-एसक्यूएल के संदर्भ में) केस संवेदी नहीं है . यह दोनों SQL-आरक्षित शब्द से संबंधित है (चुनें चुनें . जैसा ही है ) या उपयोगकर्ता-परिभाषित नाम (पुस्तक प्रकार किताब के प्रकार . के समान है ) .
बुकटाइप संदर्भ तालिका से सभी पंक्तियां देखें
नमूना डेटाबेस के सामने निम्नलिखित स्क्रिप्ट लिखें:
-- View all data from the BookType table
SELECT * FROM dbo.BookType
आउटपुट है:
हम टेबल से सभी कॉलम और रो देख सकते हैं। तालिका से सभी डेटा प्राप्त करने का यह अब तक का सबसे तेज़ तरीका है।
चयन के बारे में महत्वपूर्ण युक्ति *: आपको चुनें * . का उपयोग करना चाहिए तालिका से सभी पंक्तियों और स्तंभों को प्राप्त करने के लिए केवल जब आप एक छोटी तालिका (जैसे संदर्भ तालिका) की जांच करते हैं। अन्यथा, इसमें बहुत समय लग सकता है, जबकि हमें एक बड़ी तालिका से कुछ स्तंभों और पंक्तियों पर डेटा की आवश्यकता हो सकती है।
तालिका नाम का उपयोग करके BookType तालिका से सभी पंक्तियां ढूंढें
तालिका को क्वेरी करने का एक बेहतर तरीका है। हम एक टेबल को नाम देते हैं और उसे नीचे दिखाए गए सभी कॉलम से बांधते हैं:
-- View all data from the BookType table using bt alias
SELECT bt.* FROM dbo.BookType bt
संदर्भ तालिका से चयनित कॉलम देखें
तालिका नामों का उपयोग करने से अधिक लाभ मिलते हैं। सबसे पहले, हम तालिका से वांछित कॉलम को जल्दी से चुन सकते हैं। फिर, यह तालिकाओं और सीमित स्तंभों के उपयोग को स्पष्ट करता है क्योंकि ज्यादातर मामलों में हमें केवल कुछ स्तंभों की आवश्यकता होती है।
यहां केवल पुस्तक प्रकार . से आईडी और नाम प्राप्त करने का एक उदाहरण दिया गया है तालिका:
-- View book type id and name columns from the reference table
SELECT bt.BookTypeId,bt.Name FROM dbo.BookType bt
नतीजा यह है:
चयन सिंटैक्स में सुधार
इस प्रकार, ऊपर वर्णित जानकारी के आधार पर, हम निम्न प्रकार से SELECT सिंटैक्स में सुधार कर सकते हैं:
SELECT t.<column1>,t.<column2> FROM <TableName> t
ऑर्डर बाय क्लॉज का उपयोग करके नाम कॉलम द्वारा डेटा सॉर्ट करें
आप किसी विशिष्ट कॉलम या कॉलम के सेट के आधार पर परिणाम सेट को सॉर्ट कर सकते हैं। डेटा को छाँटने से एक अलग नज़रिया मिलता है।
आदेश द्वारा . का उपयोग इस मामले में खंड है:
SELECT t.<column1>,t.<column2> FROM <TableName> t order by t.<column1>
उदाहरण के लिए, हम प्रकार के नाम (वर्णमाला क्रम) द्वारा क्रमबद्ध पुस्तकों के प्रकार देखना चाहते हैं। इस मामले में, हम सेलेक्ट स्टेटमेंट स्क्रिप्ट में ऑर्डर बाय क्लॉज का उपयोग इस प्रकार करते हैं:
-- View book types (name) sorted by type name
SELECT bt.Name FROM dbo.BookType bt ORDER BY bt.Name
आउटपुट है:
डेटा को नाम कॉलम के आधार पर अवरोही क्रम में क्रमित करें
हम आवश्यकता के अनुसार डेटा को अवरोही क्रम में भी सॉर्ट कर सकते हैं। उदाहरण के लिए, हम नाम कॉलम के आधार पर सभी प्रकार की पुस्तकों की सूची अवरोही क्रम (Z से A) में देखना चाहते हैं। सिंटैक्स होगा:
SELECT t.<column1>,t.<column2> FROM <TableName> t order by t.<column1> desc
T-SQL स्क्रिप्ट इस प्रकार है:
-- View book types (name) sorted by a type name in descending order (from Z to A)
SELECT bt.Name FROM dbo.BookType bt ORDER BY bt.Name desc
परिणाम सेट नीचे है:
टेबल से टॉप एन रिकॉर्ड देखें
अंत में, हम TOP क्लॉज का उपयोग करके डेटाबेस से खींची जाने वाली पंक्तियों की वांछित संख्या का चयन कर सकते हैं। उस खंड के बाद, हमें आवश्यक संख्या प्रदान करनी होगी:
SELECT Top N t.<column1>,t.<column2> FROM <TableName> t
हालांकि, बिना किसी आदेश के टॉप क्लॉज सबसे अच्छा विकल्प नहीं है। शीर्ष-एन पंक्तियों को चुनते समय हमें स्तंभों का क्रम निर्दिष्ट करना चाहिए।
यहां, हम उपरोक्त सिंटैक्स को निम्नानुसार सुधार सकते हैं:
SELECT Top N t.<column1>,t.<column2> FROM <TableName> t order by <column> Desc/Asc
याद रखें कि हमें DESC . का उपयोग करके अवरोही क्रम का उल्लेख करना चाहिए अंत में। हालांकि, आरोही क्रम का उल्लेख करना अनिवार्य नहीं है - यह डिफ़ॉल्ट विकल्प है।
आइए हम शीर्ष 2 प्रकार की पुस्तकों को नाम से अवरोही क्रम में देखें:
--View Top 2 types of the books ordered by name in descending order (from Z to A)
SELECT TOP 2 bt.Name FROM dbo.BookType bt
ORDER BY bt.Name DESC
आउटपुट है:
टॉप एन के बारे में महत्वपूर्ण सलाह: तालिका की सभी पंक्तियों को देखने के बजाय तालिका देखने के लिए TOP N क्लॉज (आदेश के साथ) का उपयोग करें यदि आप डेटा को चुपके से जल्दी से देखना चाहते हैं।
पेशेवर जीवन परिदृश्यों में, शीर्ष एन खंड एक बड़ी तालिका से डेटा के बड़े हिस्से को चरणों में अद्यतन करने का कार्य करता है।
अब, हमने SQL डेटाबेस की तालिका को सफलतापूर्वक क्वेरी कर लिया है। इसके अलावा, हम एक पेशेवर की तरह क्वेरी चलाने के लिए कुछ युक्तियों से परिचित हुए हैं और SQL क्वेरी लेखन के लिए कुछ सर्वोत्तम अभ्यास सीखे हैं।
DB संदर्भ तालिका अभ्यास
अब आप लिख सकते हैं, चला सकते हैं और किसी भी तालिका के विरुद्ध SQL प्रश्नों की प्रभावशीलता को बढ़ा सकते हैं। नए कौशल में सुधार के लिए निम्नलिखित अभ्यासों का प्रयास करें:
- पुस्तक प्रकार आईडी देखने के लिए एक स्क्रिप्ट लिखने का प्रयास करें (BookTypeId ) विवरण के साथ (विवरण ) केवल कॉलम।
- संदर्भ को क्रमबद्ध करने का प्रयास करें पुस्तक प्रकार आईडी के आधार पर तालिका (BookTypeId ) अवरोही क्रम में (3 से 1 तक)।
- शीर्ष 2 पंक्तियों को पुस्तक प्रकार . से प्राप्त करने का प्रयास करें केवल आईडी सहित तालिका (BookTypeId ) और विवरण (विवरण ) पुस्तक प्रकार के विवरण . द्वारा क्रमबद्ध कॉलम।