MariaDB
 sql >> डेटाबेस >  >> RDS >> MariaDB

मारियाडीबी डिफ़ॉल्ट () समझाया गया

मारियाडीबी में, 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 द्वारा उत्पन्न किया गया था) )।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मारियाडीबी JSON_ARRAY_APPEND() समझाया गया

  2. मारियाडीबी में डेटाबेस कोलेशन प्राप्त करने के 4 तरीके

  3. ClusterControl:नए क्वेरी मॉनिटर का परिचय

  4. उच्च उपलब्धता के लिए ओपन edX MySQL डेटाबेस को कैसे परिनियोजित करें

  5. मारियाडीबी में आरपीएडी () कैसे काम करता है