Theory
Table बनाना, सचमुच
Meera ने Unit 3 में अपनी tables कागज़ पर design कीं। अब वह एक असली database में एक बनाती है, और हर column के लिए सबसे पहला फ़ैसला है: यहाँ किस किस्म की value जाती है?
Item names text हैं। Prices पैसों वाले numbers हैं। Quantities whole numbers हैं। Dates dates हैं। SQL आपसे यह पहले ही declare करवाता है, और गलत चुनना जगह बर्बाद करता है या data बिगाड़ता है।
अगर यह जाना-पहचाना लगे, तो लगना चाहिए: यह ठीक BCA104 C वाला data types का idea है, अब database columns के लिए। यहाँ दुकान की sales table है जो आप पूरे unit इस्तेमाल करेंगे।
Theory
रसोई में content से labelled डिब्बे
Meera की रसोई में content से labelled डिब्बे हैं: चीनी का एक जार, तेल की एक बोतल, मसाले के डिब्बों की एक रैक। आप तेल मसाले की रैक में नहीं उंडेलेंगी। एक data type एक column पर वही label है: 'यह column whole numbers रखता है', 'यह वाला 30 characters तक text रखता है'। label पक्का करता है कि सिर्फ सही किस्म की चीज़ अंदर जाए, और database इसे कुशलता से store कर सके।
At a glance
आम SQL data types
| Type | रखता है | टिप्पणी |
|---|---|---|
| INT / INTEGER | Whole numbers | qty, ids |
| FLOAT / DOUBLE / NUMBER | Decimals | पैसों के लिए NUMBER(6,2) |
| CHAR(n) | FIXED-length text | Padded; fixed codes |
| VARCHAR / VARCHAR2(n) | VARIABLE-length text | आम चुनाव |
| DATE | Dates (कभी-कभी + time) | sale_date |
Practical
The sales table you will use all unit
-- Our running example: Meera's sales table
-- id | item | category | price | qty
-- 1 | Sugar | Grocery | 45 | 20
-- 2 | Tea | Beverage | 120 | 15
-- 3 | Rice | Grocery | 60 | 30
-- 4 | Soap | Personal | 35 | 25
-- 5 | Milk | Dairy | 30 | 40
-- Its column types:
-- id INT
-- item VARCHAR(30)
-- category VARCHAR(20)
-- price INT
-- qty INTTheory
CHAR बनाम VARCHAR: अहम जोड़ी
सबसे ज़्यादा पूछा जाने वाला फ़र्क़ है CHAR बनाम VARCHAR:
- CHAR(n) fixed length है:
CHAR(10)हमेशा 10 characters इस्तेमाल करता है, छोटी values को spaces से pad करते हुए। उन values के लिए अच्छा जो हमेशा एक ही length की हों (एक state code 'GJ', एक fixed PIN)। वरना जगह बर्बाद करता है। - VARCHAR(n) variable length है:
VARCHAR(30)तक 30 आरक्षित करता है पर सिर्फ वही store करता है जो आप डालते हैं। 'Tea' 3 लेता है, 30 नहीं। names और free text के लिए आम चुनाव।
Fixed बनाम variable: पूरा भरना बनाम जितना चाहिए उतना store करना।
Quiz
Meera item names store करती है जैसे 'Tea', 'Sugar', 'Toothpaste' (बहुत अलग lengths)। कौन सा type बेहतर चुनाव है?
- VARCHAR, यह हर name की सिर्फ असल length store करता है
- CHAR, यह हर name को पूरी length तक pad करता है
- INT, names numbers के रूप में store होते हैं
- DATE, क्योंकि items समय के साथ बदलते हैं
Show the answer
VARCHAR, यह हर name की सिर्फ असल length store करता है
Item names की length अलग-अलग होती है, तो VARCHAR हर एक को उसके असल आकार पर store करता है ('Tea' = 3 chars), जगह बचाते हुए। CHAR हर name को fixed चौड़ाई तक pad करता, छोटे names के लिए जगह बर्बाद करते हुए। CHAR सिर्फ तब जीतता है जब values हमेशा एक ही length की हों (fixed codes)। यह CHAR-बनाम-VARCHAR तर्क एक पक्का exam सवाल है।
Think first
Price column का type ध्यान से क्यों?
Meera हमारे उदाहरण में prices INT के रूप में store करती है, पर कई prices में पैसे होते हैं (45.50)। अगर वह INT रखती है, तो 45.50 का क्या होता है? एक money column को असल में कौन सा type इस्तेमाल करना चाहिए?
Show the answer
INT decimal को truncate करता है, 45.50, 45 के रूप में store होगा, पैसे खोते हुए (ठीक BCA104 वाला int-truncation)। पैसे के लिए, एक decimal type इस्तेमाल कीजिए: NUMBER(6,2) (Oracle) या DECIMAL(6,2) (MySQL), मतलब 6 digits तक जिसमें 2 point के बाद। (हमारी running table पूरे-रुपये prices इस्तेमाल करती है ताकि गणित साफ़ रहे, पर असल money columns को decimals चाहिए।) असल data से मेल खाता type चुनना ही पूरा कौशल है।
Watch out
Marks कहाँ कटते हैं
CHAR (fixed, padded) और VARCHAR (variable, efficient) को आपस में बदलना, वह क्लासिक जोड़ी। पैसे के लिए INT इस्तेमाल करना (पैसे truncate करता है), NUMBER/DECIMAL इस्तेमाल कीजिए। यह भूलना कि VARCHAR2, VARCHAR का Oracle नाम है। और dates को DATE के बजाय text के रूप में store करना (date गणित खोता है, Unit 2 वाली serial-number तरकीब)। type को data से मिलाइए, और CHAR-बनाम-VARCHAR फ़र्क़ को सटीक नाम दीजिए।
Theory
एक idea, तीन subjects
Data types अब आपके तीसरे subject में आते हैं: C variables (BCA104), Excel number formats (Unit 1), और SQL columns। सबक सार्वभौमिक है: computers को पता होना चाहिए कि वे किस किस्म की value रखते हैं। Meera की sales table अब बनाने और भरने को तैयार है, जो ठीक अगला lesson है: CREATE, INSERT, और पूरा DDL/DML/DQL command परिवार। आप अपना पहला SQL लिखने वाले हैं।
Summary
Key takeaways
- हर SQL column एक data type declare करता है जो तय करता है कि वह क्या रख सकता है।
- Whole numbers के लिए INT; decimals के लिए FLOAT/DOUBLE/NUMBER(p,s) (पैसे को decimals चाहिए)।
- CHAR(n) FIXED length है (padded); VARCHAR/VARCHAR2(n) VARIABLE length है (efficient, आम चुनाव)।
- DATE dates store करता है; dates को text के रूप में store करना date गणित खोता है।
- सही type चुनना जगह की बर्बादी और खोया data रोकता है (INT पैसे truncate करता है)।
- याद रखने का hook: labelled डिब्बे, CHAR पूरा pad करता है, VARCHAR जितना उंडेलो उतना store करता है।