MySQL, PostgreSQL, Oracle, और कई अन्य रिलेशनल डेटाबेस के समान, SQL सर्वर का सबसे अच्छा उपयोग तब किया जाता है जब अधिकांश डेटाबेस तालिकाओं के लिए अद्वितीय प्राथमिक कुंजी असाइन की जाती है।
संख्यात्मक, स्वत:वृद्धि हुई प्राथमिक कुंजियों का उपयोग करने के कई फायदे हैं, लेकिन सबसे प्रभावशाली लाभ प्रश्नों को निष्पादित करते समय तेज गति और हजारों रिकॉर्ड के माध्यम से खोज करते समय डेटा-स्वतंत्रता है, जिसमें तालिका में कहीं और अक्सर परिवर्तित डेटा हो सकता है। एक सुसंगत और अद्वितीय संख्यात्मक पहचानकर्ता के साथ, एप्लिकेशन इन तेज़ और अधिक विश्वसनीय प्रश्नों का लाभ उठा सकते हैं।
मूल तालिका निर्माण
एक बार अपने SQL सर्वर से कनेक्ट हो जाने पर, आप आमतौर पर CREATING
. द्वारा प्रारंभ करते हैं एक नई तालिका जिसमें वह फ़ील्ड शामिल है जिसे आप अपनी बढ़ी हुई प्राथमिक कुंजी के रूप में उपयोग करना चाहते हैं। हमारे उदाहरण के लिए, हम आजमाए हुए और सही id
. के साथ बने रहेंगे फ़ील्ड:
CREATE TABLE books (
id INT NOT NULL,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
यहाँ समस्या यह है कि हमारे पास अपनी id
. को नियंत्रित करने का कोई तरीका नहीं है खेत। जब कोई नया रिकॉर्ड डाला जाता है, तो हमें न केवल मैन्युअल रूप से id
. के लिए एक मान दर्ज करना होगा , लेकिन हमें उस id
. को सत्यापित करने का प्रयास करने के लिए समय से पहले एक प्रश्न करना होगा value पहले से मौजूद नहीं है (एक साथ कई कनेक्शनों के साथ काम करते समय लगभग असंभव)।
पहचान और प्राथमिक कुंजी बाधाओं का उपयोग करना
समाधान SQL सर्वर द्वारा प्रदान किए गए दो बाधा विकल्पों का उपयोग करने के लिए निकला है।
पहला है PRIMARY KEY
, जैसा कि नाम से पता चलता है, निर्दिष्ट कॉलम को तालिका के लिए पूरी तरह से अद्वितीय इंडेक्स के रूप में व्यवहार करने के लिए मजबूर करता है, जिससे तेजी से खोज और प्रश्नों की अनुमति मिलती है।
जबकि SQL सर्वर केवल एक PRIMARY KEY
की अनुमति देता है एक तालिका को निर्दिष्ट बाधा, वह PRIMARY KEY
एक से अधिक कॉलम के लिए परिभाषित किया जा सकता है। बहु-स्तंभ परिदृश्य में, अलग-अलग स्तंभों में डुप्लिकेट, गैर-अद्वितीय मान हो सकते हैं, लेकिन PRIMARY KEY
बाधा यह सुनिश्चित करती है कि प्रत्येक संयोजन सीमित मूल्यों की संख्या वास्तव में हर दूसरे संयोजन के सापेक्ष अद्वितीय होगी।
पहेली का दूसरा भाग है IDENTITY
बाधा, जो SQL सर्वर को निर्दिष्ट कॉलम के भीतर संख्यात्मक मान को स्वतः बढ़ाने के लिए सूचित करती है जब भी कोई नया रिकॉर्ड INSERTED
होता है . जबकि IDENTITY
कर सकते हैं संख्यात्मक seed
के दो तर्क स्वीकार करें जहां से मान शुरू होंगे और साथ ही increment
, ये मान आमतौर पर IDENTITY
. के साथ निर्दिष्ट नहीं होते हैं बाधा और इसके बजाय डिफ़ॉल्ट के रूप में छोड़ दिया जाता है (दोनों डिफ़ॉल्ट रूप से 1
)।
अपनी उंगलियों पर इस नए ज्ञान के साथ, हम अपने पिछले CREATE TABLE
. को फिर से लिख सकते हैं हमारी दो नई बाधाओं को जोड़कर बयान।
CREATE TABLE books (
id INT NOT NULL IDENTITY PRIMARY KEY,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
यही सब है इसके लिए। अब id
हमारी books
. का कॉलम प्रत्येक INSERT
. पर तालिका स्वचालित रूप से बढ़ जाएगी और id
फ़ील्ड को एक अद्वितीय मान होने की भी गारंटी है।