मुख्य सामग्री पर जाएं
मॉड्यूल 8 · पाठ 1 का 4पाठ्यक्रम में 29/57~10 min
मॉड्यूल पाठ (1/4)

डेटा सम्मिलित करना: सम्मिलित करें

अब तक आप डेटा पढ़ रहे हैं। कुछ लिखने का समय आ गया है. INSERT है वह कमांड जो किसी तालिका में नई पंक्तियाँ जोड़ता है।

मूल वाक्यविन्यास

SQL
INSERT INTO tabella (col1, col2, …)
VALUES (val1, val2, …);

हमारे डेटासेट पर उदाहरण:

SQL
INSERT INTO customers (first_name, last_name, email, city, country, signed_up_on)
VALUES ('Marco', 'Bianchi', 'marco.bianchi@example.com', 'Verona', 'Italia', '2025-07-15');

कॉलम का नामकरण अनुशंसित अभ्यास है: यह क्वेरी बनाता है भविष्य के स्कीमा परिवर्तनों (उदाहरण के लिए एक नया वैकल्पिक phone कॉलम) के विरुद्ध मजबूत कुछ भी नहीं तोड़ता) और स्व-दस्तावेजीकरण।

बहु-पंक्ति सम्मिलित करें

एक एकल कथन, एकाधिक पंक्तियाँ - N अलग INSERTs से बहुत तेज़:

SQL
INSERT INTO categories (name, parent_id) VALUES
  ('Gaming',         1),
  ('Smart Home',     1),
  ('Cucina vegana',  8);

रिटर्निंग: आपके द्वारा अभी-अभी डाले गए मानों को पढ़ना

PostgreSQL की एक खंड विशेषता: RETURNING उन पंक्तियों को लौटाती है जो अभी बनाए गए थे. स्वतः उत्पन्न id को पुनः प्राप्त करने के लिए अत्यंत उपयोगी:

SQL
INSERT INTO categories (name, parent_id)
VALUES ('Gaming', 1)
RETURNING id, name;

आउटपुट id (SERIAL द्वारा निर्दिष्ट) के साथ एक-पंक्ति तालिका है और name.

यदि कोई कॉलम गायब है तो क्या होगा

यदि आप INSERT में कोई कॉलम छोड़ देते हैं:

  • यदि यह NOT NULL बिना किसी डिफ़ॉल्ट के → त्रुटि है;
  • यदि इसमें DEFAULT है (आईडी के लिए SERIAL सहित) → इसका उपयोग किया जाता है;
  • यदि यह NULL स्वीकार करता है → यह NULL बन जाता है।
SQL
-- Va bene: id è SERIAL (auto), country ha NOT NULL ma forniamo tutti i campi
INSERT INTO customers (first_name, last_name, email, city, country, signed_up_on)
VALUES ('Olivia', 'Marini', 'olivia.marini@example.com', 'Bari', 'Italia', '2025-07-20');

-- Errore: first_name è NOT NULL e non è fornito
INSERT INTO customers (last_name, email, city, country, signed_up_on)
VALUES ('Marini', 'olivia.marini@example.com', 'Bari', 'Italia', '2025-07-20');

आपकी बारी

व्यायाम#sql.m8.l1.e1
प्रयास: 0लोड हो रहा है...

ग्राहक तालिका में प्रथम नाम 'मार्को', अंतिम नाम 'बियांची', ईमेल 'marco.bianchi@example.com', शहर 'वेरोना', देश 'इटालिया' और '2025-07-15' पर हस्ताक्षरित_अप_के साथ एक नया ग्राहक डालें। सभी स्तंभों को स्पष्ट रूप से नाम दें.

संपादक लोड हो रहा है...
संकेत दिखाएँ

VALUES में मानों का क्रम आपके द्वारा नामित कॉलम के क्रम से मेल खाना चाहिए।

3 प्रयासों के बाद समाधान उपलब्ध है

व्यायाम की समीक्षा करें

व्यायाम#sql.m8.l1.e2
प्रयास: 0लोड हो रहा है...

'एलेट्रोनिका' (आईडी = 1) के चाइल्ड के रूप में एक नई 'गेमिंग' श्रेणी डालें। नई बनाई गई श्रेणी की आईडी और नाम वापस करने के लिए रिटर्निंग क्लॉज का उपयोग करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

रिटर्निंग बिल्कुल SELECT की तरह कॉलम (या '*') की एक सूची स्वीकार करता है।

3 प्रयासों के बाद समाधान उपलब्ध है