Kodokon kodokon.com

स्कीमा बनाना: CREATE TABLE और कंस्ट्रेंट

उपयुक्त टाइप और NOT NULL, UNIQUE तथा PRIMARY KEY कंस्ट्रेंट के साथ अपनी खुद की टेबल डिज़ाइन करें, जो आपके डेटा की रक्षा करते हैं।

8 मिनट · 3 प्रश्न

इस पाठ को Kodokon में खोलें

अब तक आप पहले से बनी टेबल को क्वेरी कर रहे थे; एक पेशेवर डेवलपर उन्हें डिज़ाइन करता है। एक अच्छा स्कीमा अमान्य डेटा को इंसर्शन के समय ही अस्वीकार कर देता है: यह किसी भी एप्लिकेशन कोड से पहले, आपकी बचाव की पहली पंक्ति है। sqliteonline.com या sqlite3 में, यह टेबल बनाएँ:

SQL
CREATE TABLE users (
  id INTEGER PRIMARY KEY,
  email TEXT NOT NULL UNIQUE,
  username TEXT NOT NULL UNIQUE,
  created_at TEXT NOT NULL
    DEFAULT (datetime('now'))
);
तीन कंस्ट्रेंट: NOT NULL, UNIQUE और एक डिफ़ॉल्ट वैल्यू।

SQLite केवल पाँच स्टोरेज टाइप जानता है: INTEGER, REAL, TEXT, BLOB और NULL। तारीखें वहाँ ISO फ़ॉर्मेट (2026-07-04) में TEXT के रूप में संग्रहीत होती हैं। अन्य जगहों (PostgreSQL, MySQL) पर, आप इसके बजाय VARCHAR(255), TIMESTAMP या BOOLEAN घोषित करते: सिद्धांत वही रहता है, केवल टाइप के नाम बदलते हैं। अब अपने कंस्ट्रेंट की जाँच करें:

SQL
INSERT INTO users (email, username)
VALUES ('alice@example.com', 'alice');

INSERT INTO users (email, username)
VALUES ('alice@example.com', 'alice2');
दूसरा इंसर्शन विफल हो जाता है: UNIQUE constraint failed।

प्राइमरी की हर पंक्ति की पहचान करती है: कभी NULL नहीं, कभी दोहराई नहीं जाती, प्रति टेबल केवल एक। SQLite में, INTEGER PRIMARY KEY की एक बहुमूल्य विशेषता है: जब आप इसकी वैल्यू छोड़ देते हैं, तो कॉलम अपने आप बढ़ जाता है, जैसा कि ऊपर के इंसर्शन में है। PostgreSQL पर आप GENERATED ALWAYS AS IDENTITY लिखते, MySQL पर AUTO_INCREMENT। अंत में, CHECK के साथ एक व्यावसायिक नियम जोड़ें:

SQL
CREATE TABLE products (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  sku TEXT NOT NULL UNIQUE,
  price REAL NOT NULL CHECK (price >= 0)
);

INSERT INTO products (name, sku, price)
VALUES ('Keyboard', 'KB-01', -5);
अस्वीकृत: CHECK constraint failed। कोई भी ऋणात्मक कीमत पार नहीं होगी।

ज्ञान जांच

सुनिश्चित करें कि आपको इस पाठ के मुख्य बिंदु याद हैं।

  1. कौन सा कंस्ट्रेंट यह सुनिश्चित करता है कि email कॉलम में कोई डुप्लिकेट न दिखाई दे?
    • NOT NULL
    • UNIQUE
    • CHECK
    • DEFAULT
  2. PRIMARY KEY और UNIQUE के बीच क्या अंतर है?
    • कोई नहीं, वे पर्यायवाची हैं
    • प्राइमरी की पंक्ति की पहचान करती है: प्रति टेबल केवल एक, कभी NULL नहीं
    • UNIQUE, PRIMARY KEY से अधिक सख्त है
  3. SQLite में, यदि आप किसी INTEGER PRIMARY KEY कॉलम के लिए बिना वैल्यू के कोई पंक्ति डालते हैं तो क्या होता है?
    • एक NOT NULL त्रुटि उठती है
    • SQLite अपने आप एक अद्वितीय पूर्णांक उत्पन्न करता है
    • कॉलम NULL ही रहता है