मारियाडीबी में, DEFAULT()
एक अंतर्निहित फ़ंक्शन है जो तालिका कॉलम के लिए डिफ़ॉल्ट मान देता है।
यदि कॉलम का कोई डिफ़ॉल्ट मान नहीं है और यह NULLABLE
है , फिर NULL
वापस किया जाता है। यदि कॉलम का कोई डिफ़ॉल्ट मान नहीं है और यह नहीं है NULLABLE
, एक त्रुटि लौटा दी जाती है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
DEFAULT(col_name)
जहां col_name
उस कॉलम का नाम है जिसके लिए डिफ़ॉल्ट मान वापस करना है।
इसका उपयोग कुछ मामलों में कोष्ठक और तर्क के बिना भी किया जा सकता है:
DEFAULT
इस सिंटैक्स का उपयोग कॉलम को उसके डिफ़ॉल्ट मान पर स्पष्ट रूप से सेट करने के लिए किया जा सकता है।
उदाहरण
फ़ंक्शन कैसे काम करता है, यह दिखाने के लिए यहां एक उदाहरण दिया गया है।
मान लीजिए हम इस तरह एक टेबल बनाते हैं:
CREATE TABLE guest_meals (
guest_id INT NOT NULL,
meal VARCHAR(255) DEFAULT 'Salad',
special_request VARCHAR(255),
PRIMARY KEY (guest_id)
);
यहां, हम meal
. के लिए एक डिफ़ॉल्ट मान सेट करते हैं कॉलम। विशेष रूप से, हमने DEFAULT 'Salad'
. का उपयोग किया है डिफ़ॉल्ट भोजन को Salad
. पर सेट करने के लिए .
यह DEFAULT
. का उपयोग करता है CREATE TABLE
का खंड बयान। यहां हमारे उद्देश्य से संबंधित होने पर (यह एक कॉलम के लिए डिफ़ॉल्ट मान सेट करता है), इसे DEFAULT()
के साथ भ्रमित नहीं होना चाहिए फ़ंक्शन जिसके बारे में यह लेख है।
अब कुछ पंक्तियाँ सम्मिलित करें:
INSERT INTO guest_meals (guest_id) VALUES (1);
INSERT INTO guest_meals (guest_id, meal) VALUES (2, 'Fish');
INSERT INTO guest_meals (guest_id, meal) VALUES (3, 'Burrito');
INSERT INTO guest_meals (guest_id, meal, special_request) VALUES (4, 'Pasta', 'Hot');
INSERT INTO guest_meals (guest_id, special_request) VALUES (5, 'Vegan');
इनमें से कुछ प्रविष्टियाँ स्पष्ट रूप से बताती हैं कि अतिथि को कौन सा भोजन चाहिए जबकि अन्य नहीं। जो लोग केवल डिफ़ॉल्ट भोजन का उपयोग नहीं करेंगे (Salad
)।
तो चलिए अब टेबल से उन पंक्तियों का चयन करते हैं। हम DEFAULT()
. शामिल करेंगे हमारे चयन में कार्य:
SELECT
guest_id,
DEFAULT(meal),
meal,
DEFAULT(special_request),
special_request
FROM guest_meals;
परिणाम:
+----------+---------------+---------+--------------------------+-----------------+ | guest_id | DEFAULT(meal) | meal | DEFAULT(special_request) | special_request | +----------+---------------+---------+--------------------------+-----------------+ | 1 | Salad | Salad | NULL | NULL | | 2 | Salad | Fish | NULL | NULL | | 3 | Salad | Burrito | NULL | NULL | | 4 | Salad | Pasta | NULL | Hot | | 5 | Salad | Salad | NULL | Vegan | +----------+---------------+---------+--------------------------+-----------------+
DEFAULT(meal)
कॉलम डिफ़ॉल्ट मान देता है, और meal
कॉलम डाले गए वास्तविक मान देता है।
इसी तरह, DEFAULT(special_request)
कॉलम उस कॉलम के लिए डिफ़ॉल्ट मान देता है, और special_request
कॉलम डाले गए वास्तविक मान लौटाता है।
special_request
के संबंध में कॉलम, हमने वास्तव में इस कॉलम के लिए डिफ़ॉल्ट मान सेट नहीं किया है और इसलिए परिणाम NULL
. है . ध्यान दें कि यदि कॉलम NULLABLE
नहीं था , तो हमें एक त्रुटि मिलेगी (नीचे देखें)। लेकिन कॉलम है NULLABLE
, और इसलिए NULL
. का डिफ़ॉल्ट मान लौटा।
स्पष्ट रूप से डिफ़ॉल्ट मान डालना
आप DEFAULT
. का उपयोग कर सकते हैं कोष्ठक के बिना कीवर्ड एक कॉलम में स्पष्ट रूप से डिफ़ॉल्ट मान डालने के लिए।
यहां एक उदाहरण दिया गया है:
INSERT INTO guest_meals (guest_id, meal, special_request)
VALUES (6, DEFAULT, DEFAULT);
अब उस पंक्ति को चुनें:
SELECT
guest_id,
DEFAULT(meal),
meal,
DEFAULT(special_request),
special_request
FROM guest_meals
WHERE guest_id = 6;
परिणाम:
+----------+---------------+-------+--------------------------+-----------------+ | guest_id | DEFAULT(meal) | meal | DEFAULT(special_request) | special_request | +----------+---------------+-------+--------------------------+-----------------+ | 6 | Salad | Salad | NULL | NULL | +----------+---------------+-------+--------------------------+-----------------+
दोनों ही मामलों में, इसने संबंधित कॉलम के लिए डिफ़ॉल्ट मान डाला। meal
के लिए कॉलम, यह था Salad
. special_request
के लिए कॉलम, यह था NULL
।
गैर-अशक्त स्तंभ
जैसा कि उल्लेख किया गया है, एक गैर से डिफ़ॉल्ट मान प्राप्त करने का प्रयास कर रहा है-NULLABLE
कॉलम जिसमें डिफ़ॉल्ट मान नहीं होता है, जिसके परिणामस्वरूप त्रुटि होती है।
उदाहरण:
SELECT DEFAULT(guest_id)
FROM guest_meals;
परिणाम:
ERROR 1364 (HY000): Field 'guest_id' doesn't have a default value
जब हमने तालिका बनाई थी, तो हमने guest_id
. के लिए कोई डिफ़ॉल्ट मान नहीं दिया था कॉलम, और हम इसे NOT NULL
. पर भी सेट करते हैं . इस वजह से, हमें इसका डिफ़ॉल्ट मान वापस करने का प्रयास करते समय एक त्रुटि मिलती है।
AUTO_INCREMENT
using का उपयोग कर पूर्णांक स्तंभ
AUTO_INCREMENT
. का उपयोग करके पूर्णांक स्तंभों के लिए , वापसी मूल्य 0
. है ।
उदाहरण के तौर पर, आइए एक AUTO_INCREMENT
. के साथ एक टेबल बनाएं कॉलम:
CREATE TABLE guest (
guest_id INT NOT NULL AUTO_INCREMENT,
guest_name VARCHAR(255) NOT NULL,
PRIMARY KEY (guest_id)
);
guest_id
कॉलम एक INT
. का उपयोग करता है (पूर्णांक) डेटा प्रकार, और यह AUTO_INCREMENT
. पर सेट है ।
अब कुछ पंक्तियाँ डालें:
INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');
अब, guest_id
. का डिफ़ॉल्ट मान लौटाते हैं कॉलम:
SELECT
DEFAULT(guest_id),
guest_id
FROM guest;
परिणाम:
+-------------------+----------+ | DEFAULT(guest_id) | guest_id | +-------------------+----------+ | 0 | 1 | | 0 | 2 | | 0 | 3 | +-------------------+----------+
DEFAULT(guest_id)
कॉलम दिखाता है कि डिफ़ॉल्ट मान 0
है सभी पंक्तियों के लिए। guest_id
कॉलम वास्तविक मान दिखाता है जो डाला गया था (जो AUTO_INCREMENT
द्वारा उत्पन्न किया गया था) )।