DBMS — MCQ Practice

Hindi aur English dono mein practice karo — click karo answer check karne ke liye

📚 130 Questions 🌐 Hindi + English ✅ Free
भाषा / Language:
130 questions
121
EN + हिं Medium
GB In DML what is LIMIT with UPDATE/DELETE and why is it useful?
IN डीएमएल में अपडेट/डिलीट के साथ LIMIT क्या है और यह उपयोगी क्यों है?
A
LIMIT changes the locking behavior of UPDATE/DELETE LIMIT UPDATE/DELETE के लॉकिंग व्यवहार को बदल देता है
B
LIMIT is only for SELECT statements in all DBMS LIMIT सभी DBMS में केवल SELECT स्टेटमेंट के लिए है
C
A syntax error - LIMIT cannot be used with UPDATE/DELETE एक सिंटैक्स त्रुटि - LIMIT का उपयोग UPDATE/DELETE के साथ नहीं किया जा सकता
D
MySQL supports DELETE FROM t WHERE condition ORDER BY col LIMIT n to safely delete/update a bounded number of rows - prevents accidentally deleting millions of rows and allows safe batch operations MySQL पंक्तियों की सीमित संख्या को सुरक्षित रूप से हटाने/अद्यतन करने के लिए col LIMIT n द्वारा DELETE FROM t WHERE स्थिति का समर्थन करता है - गलती से लाखों पंक्तियों को हटाने से रोकता है और सुरक्षित बैच संचालन की अनुमति देता है
✅ Correct Answer:
💡 Explanation / व्याख्या
Explanation (English) MySQL: DELETE FROM log WHERE created_at < 2020-01-01 ORDER BY id LIMIT 1000; Useful for: safe batch deletes (prevents huge single transactions), purging old data in chunks to avoid replication lag, throttling bulk operations to reduce lock contention.
व्याख्या (हिन्दी) MySQL: लॉग से हटाएं जहां बनाया_at <2020-01-01 आईडी सीमा 1000 द्वारा ऑर्डर करें; इसके लिए उपयोगी: सुरक्षित बैच हटाता है (बड़े एकल लेनदेन को रोकता है), प्रतिकृति अंतराल से बचने के लिए पुराने डेटा को टुकड़ों में शुद्ध करता है, लॉक विवाद को कम करने के लिए बल्क ऑपरेशंस को थ्रॉटल करता है।
122
EN + हिं Easy
GB What is the SQL WITH CHECK OPTION clause when creating an updatable view?
IN अद्यतन करने योग्य दृश्य बनाते समय SQL with CHECK OPTION क्लॉज क्या है?
A
It checks the syntax of the view definition यह दृश्य परिभाषा के सिंटैक्स की जाँच करता है
B
It restricts who can modify rows through the view यह प्रतिबंधित करता है कि कौन दृश्य के माध्यम से पंक्तियों को संशोधित कर सकता है
C
It ensures that INSERT and UPDATE operations through the view only accept rows that satisfy the view WHERE clause - preventing modifications that would make the row invisible through the view यह सुनिश्चित करता है कि दृश्य के माध्यम से INSERT और UPDATE संचालन केवल उन पंक्तियों को स्वीकार करते हैं जो दृश्य को संतुष्ट करते हैं WHERE क्लॉज - उन संशोधनों को रोकते हैं जो पंक्ति को दृश्य के माध्यम से अदृश्य बना देंगे
D
It checks that the view returns the correct number of rows यह जाँचता है कि दृश्य पंक्तियों की सही संख्या लौटाता है
✅ Correct Answer:
💡 Explanation / व्याख्या
Explanation (English) WITH CHECK OPTION: CREATE VIEW active_emp AS SELECT * FROM emp WHERE status=active WITH CHECK OPTION. Any INSERT/UPDATE through this view that would create/modify a row with status not equal to active is rejected. Without it, you could insert inactive status rows that disappear from the view.
व्याख्या (हिन्दी) चेक विकल्प के साथ: व्यू एक्टिव_एम्प को चयन के रूप में बनाएं * एम्प से जहां स्टेटस=चेक विकल्प के साथ सक्रिय है। इस दृश्य के माध्यम से कोई भी INSERT/UPDATE जो सक्रिय के बराबर नहीं स्थिति वाली एक पंक्ति बनाएगा/संशोधित करेगा, अस्वीकार कर दिया गया है। इसके बिना, आप निष्क्रिय स्थिति पंक्तियाँ सम्मिलित कर सकते हैं जो दृश्य से गायब हो जाती हैं।
123
EN + हिं Easy
GB What is the performance implication of an UPDATE on an indexed column?
IN अनुक्रमित कॉलम पर अद्यतन का प्रदर्शन निहितार्थ क्या है?
A
Indexes always make UPDATEs faster इंडेक्स हमेशा अपडेट को तेज़ बनाते हैं
B
Indexes have no effect on UPDATE performance अद्यतन प्रदर्शन पर अनुक्रमणिका का कोई प्रभाव नहीं पड़ता है
C
Updating an indexed column requires updating both the table row AND all indexes on that column making writes more expensive (each index requires a delete+insert in the B-tree structure) - the more indexes the slower the UPDATE किसी अनुक्रमित कॉलम को अपडेट करने के लिए तालिका पंक्ति और उस कॉलम के सभी इंडेक्स दोनों को अपडेट करने की आवश्यकता होती है, जिससे लिखना अधिक महंगा हो जाता है (प्रत्येक इंडेक्स को बी-ट्री संरचना में डिलीट + इंसर्ट की आवश्यकता होती है) - जितने अधिक इंडेक्स होंगे, अपडेट उतना ही धीमा होगा
D
Only primary key indexes affect UPDATE performance केवल प्राथमिक कुंजी सूचकांक ही अद्यतन प्रदर्शन को प्रभावित करते हैं
✅ Correct Answer:
💡 Explanation / व्याख्या
Explanation (English) UPDATE on indexed column overhead: (1) Find and update the row in the heap/clustered index. (2) For EACH non-clustered index containing that column: remove old entry from B-tree, insert new entry at new position. With 5 indexes on updated column, one UPDATE performs 6+ I/O operations minimum.
व्याख्या (हिन्दी) अनुक्रमित कॉलम ओवरहेड पर अद्यतन करें: (1) ढेर/संकुल सूचकांक में पंक्ति ढूंढें और अद्यतन करें। (2) उस कॉलम वाले प्रत्येक गैर-संकुल सूचकांक के लिए: बी-ट्री से पुरानी प्रविष्टि हटाएं, नई स्थिति में नई प्रविष्टि डालें। अपडेट किए गए कॉलम पर 5 इंडेक्स के साथ, एक अपडेट न्यूनतम 6+ I/O ऑपरेशन करता है।
124
EN + हिं Easy
GB What is a bulk update pattern and how can it be implemented efficiently?
IN बल्क अपडेट पैटर्न क्या है और इसे कुशलतापूर्वक कैसे लागू किया जा सकता है?
A
A batch of UPDATE statements executed in parallel अद्यतन कथनों का एक बैच समानांतर में निष्पादित किया गया
B
Updating rows across multiple tables in one statement एक कथन में एकाधिक तालिकाओं में पंक्तियाँ अद्यतन करना
C
Updating all rows in a table at once किसी तालिका की सभी पंक्तियों को एक साथ अद्यतन करना
D
Updating many rows efficiently by using a single UPDATE with a JOIN or CASE expression to set different values per row based on a mapping table rather than executing N individual UPDATE statements एन व्यक्तिगत अपडेट स्टेटमेंट निष्पादित करने के बजाय मैपिंग तालिका के आधार पर प्रति पंक्ति अलग-अलग मान सेट करने के लिए जॉइन या केस अभिव्यक्ति के साथ एक अद्यतन का उपयोग करके कई पंक्तियों को कुशलतापूर्वक अपडेट करना
✅ Correct Answer:
💡 Explanation / व्याख्या
Explanation (English) Efficient bulk update: instead of 10,000 individual UPDATEs: (1) Load mapping into temp table: (id, new_value). (2) Single UPDATE: UPDATE t JOIN temp ON t.id=temp.id SET t.col=temp.new_value. Or use CASE: UPDATE t SET col = CASE id WHEN 1 THEN val1 WHEN 2 THEN val2 END WHERE id IN (1,2).
व्याख्या (हिन्दी) कुशल थोक अद्यतन: 10,000 व्यक्तिगत अद्यतनों के बजाय: (1) अस्थायी तालिका में मैपिंग लोड करें: (आईडी, नया_मूल्य)। (2) एकल अद्यतन: t.id=temp.id SET t.col=temp.new_value पर अस्थायी रूप से जुड़ने के लिए अद्यतन करें। या केस का उपयोग करें: अद्यतन टी सेट कॉल = केस आईडी जब 1 तब वैल1 जब 2 तब वैल2 समाप्त होता है जहां आईडी (1,2) होती है।
125
EN + हिं Medium
GB What is the SQL OUTPUT clause in SQL Server (or RETURNING in PostgreSQL) and how does it enable auditing patterns?
IN SQL सर्वर में SQL आउटपुट क्लॉज (या PostgreSQL में रिटर्निंग) क्या है और यह ऑडिटिंग पैटर्न को कैसे सक्षम करता है?
A
It outputs query results to a file यह क्वेरी परिणामों को एक फ़ाइल में आउटपुट करता है
B
It writes modified data to a log file यह संशोधित डेटा को लॉग फ़ाइल में लिखता है
C
It outputs execution plan information यह निष्पादन योजना की जानकारी आउटपुट करता है
D
It returns the values of modified rows from INSERT/UPDATE/DELETE operations enabling patterns like: capturing deleted row data into an audit table in a single statement or retrieving auto-generated IDs after INSERT without a separate SELECT यह INSERT/UPDATE/DELETE ऑपरेशंस से संशोधित पंक्तियों के मान लौटाता है, जिससे पैटर्न सक्षम होते हैं: हटाए गए पंक्ति डेटा को एक ही स्टेटमेंट में ऑडिट टेबल में कैप्चर करना या अलग सेलेक्ट के बिना INSERT के बाद ऑटो-जेनरेट की गई आईडी को पुनः प्राप्त करना।
✅ Correct Answer:
💡 Explanation / व्याख्या
Explanation (English) SQL Server: DELETE FROM t OUTPUT DELETED.* INTO audit_table WHERE condition - atomically moves deleted rows to audit table in one statement. INSERT INTO t OUTPUT INSERTED.id, INSERTED.created_at VALUES (...) - returns generated values. Prevents race conditions of separate SELECT after DML.
व्याख्या (हिन्दी) एसक्यूएल सर्वर: डिलीट फ्रॉम टी आउटपुट डिलीटेड। * ऑडिट_टेबल में जहां स्थिति - हटाए गए पंक्तियों को एक स्टेटमेंट में ऑडिट टेबल पर ले जाता है। आउटपुट में सम्मिलित करें INSERTED.id, INSERTED.created_at मान (...) - उत्पन्न मान लौटाता है। डीएमएल के बाद अलग चयन की दौड़ की स्थिति को रोकता है।
126
EN + हिं Easy
GB What is the MERGE statement and when should it be preferred over separate INSERT/UPDATE/DELETE?
IN मर्ज स्टेटमेंट क्या है और इसे अलग-अलग INSERT/UPDATE/DELETE की तुलना में कब प्राथमिकता दी जानी चाहिए?
A
MERGE performs INSERT UPDATE or DELETE in a single atomic statement based on whether rows match between source and target - preferred when you need to synchronize two tables and want to avoid race conditions of separate read-then-write operations स्रोत और लक्ष्य के बीच पंक्तियाँ मेल खाती हैं या नहीं, इसके आधार पर MERGE एकल परमाणु कथन में INSERT UPDATE या DELETE निष्पादित करता है - पसंदीदा तब जब आपको दो तालिकाओं को सिंक्रनाइज़ करने की आवश्यकता होती है और अलग-अलग पढ़ने-फिर-लिखने के संचालन की दौड़ स्थितियों से बचना चाहते हैं
B
MERGE always outperforms separate DML statements MERGE हमेशा अलग-अलग DML स्टेटमेंट से बेहतर प्रदर्शन करता है
C
MERGE is identical to INSERT ON DUPLICATE KEY UPDATE मर्ज डुप्लिकेट कुंजी अद्यतन पर सम्मिलित करें के समान है
D
MERGE is only for bulk operations over 1000 rows MERGE केवल 1000 पंक्तियों से अधिक के थोक संचालन के लिए है
✅ Correct Answer:
💡 Explanation / व्याख्या
Explanation (English) MERGE (UPSERT): single atomic statement avoids race conditions (read to check existence, then write). Preferred for: ETL synchronization (sync staging to production), slowly-changing dimensions, inventory updates. Avoids: TOC/TOU (time-of-check/time-of-use) race condition in SELECT then INSERT/UPDATE pattern.
व्याख्या (हिन्दी) मर्ज (अपसर्ट): एकल परमाणु कथन नस्ल की स्थिति से बचाता है (अस्तित्व की जांच करने के लिए पढ़ें, फिर लिखें)। इसके लिए पसंदीदा: ईटीएल सिंक्रनाइज़ेशन (उत्पादन के लिए सिंक स्टेजिंग), धीरे-धीरे बदलते आयाम, इन्वेंट्री अपडेट। टालें: टीओसी/टीओयू (चेक-ऑफ-चेक/टाइम-ऑफ-यूज) दौड़ की स्थिति पहले सेलेक्ट करें फिर इन्सर्ट/अपडेट पैटर्न में।
127
EN + हिं Medium
GB What is the difference between DELETE and TRUNCATE in terms of transaction log and recoverability?
IN लेन-देन लॉग और पुनर्प्राप्ति के संदर्भ में DELETE और TRUNCATE के बीच क्या अंतर है?
A
DELETE is always faster than TRUNCATE DELETE हमेशा TRUNCATE से तेज़ होता है
B
TRUNCATE cannot be rolled back in any DBMS TRUNCATE को किसी भी DBMS में वापस नहीं लाया जा सकता
C
DELETE and TRUNCATE produce identical transaction log entries DELETE और TRUNCATE समान लेनदेन लॉग प्रविष्टियाँ उत्पन्न करते हैं
D
DELETE logs each individual row deletion (fully logged) enabling row-level rollback and trigger firing; TRUNCATE uses minimal logging (deallocates entire data pages) making it much faster but in most DBMS still rollbackable within an explicit transaction पंक्ति-स्तरीय रोलबैक और ट्रिगर फायरिंग को सक्षम करने वाले प्रत्येक व्यक्तिगत पंक्ति विलोपन (पूरी तरह से लॉग) को हटाएं; TRUNCATE न्यूनतम लॉगिंग का उपयोग करता है (संपूर्ण डेटा पृष्ठों को हटा देता है) जिससे यह बहुत तेज़ हो जाता है लेकिन अधिकांश DBMS में अभी भी एक स्पष्ट लेनदेन के भीतर रोलबैक किया जा सकता है
✅ Correct Answer:
💡 Explanation / व्याख्या
Explanation (English) DELETE: fully logged (each row deletion logged), triggers fire, WHERE clause possible, can be rolled back. TRUNCATE: minimally logged (page deallocation logged, not individual rows), no triggers, no WHERE clause, faster. In PostgreSQL and SQL Server: TRUNCATE CAN be rolled back within an explicit transaction. In MySQL: TRUNCATE always auto-commits.
व्याख्या (हिन्दी) हटाएं: पूरी तरह से लॉग किया गया (प्रत्येक पंक्ति विलोपन लॉग किया गया), आग ट्रिगर करता है, जहां क्लॉज संभव है, वापस लाया जा सकता है। ट्रंकेट: न्यूनतम रूप से लॉग किया गया (पेज डीलोकेशन लॉग किया गया, व्यक्तिगत पंक्तियाँ नहीं), कोई ट्रिगर नहीं, कोई WHERE क्लॉज नहीं, तेज़। PostgreSQL और SQL सर्वर में: TRUNCATE को एक स्पष्ट लेनदेन में वापस लाया जा सकता है। MySQL में: TRUNCATE हमेशा स्वतः-प्रतिबद्ध होता है।
128
EN + हिं Medium
GB What is the purpose of SELECT FOR UPDATE in SQL and how does it interact with other transactions?
IN SQL में SELECT FOR UPDATE का उद्देश्य क्या है और यह अन्य लेनदेन के साथ कैसे इंटरैक्ट करता है?
A
It creates a copy of the row for update यह अद्यतन के लिए पंक्ति की एक प्रति बनाता है
B
It updates rows and returns the results यह पंक्तियों को अद्यतन करता है और परिणाम लौटाता है
C
It is identical to a regular SELECT यह नियमित चयन के समान है
D
It acquires an exclusive lock on the selected rows preventing other transactions from modifying or locking those rows until the current transaction commits or rolls back - used to implement pessimistic locking for critical operations यह चयनित पंक्तियों पर एक विशेष लॉक प्राप्त करता है जो अन्य लेनदेन को उन पंक्तियों को संशोधित या लॉक करने से रोकता है जब तक कि वर्तमान लेनदेन शुरू नहीं हो जाता है या वापस नहीं आ जाता है - इसका उपयोग महत्वपूर्ण कार्यों के लिए निराशावादी लॉकिंग को लागू करने के लिए किया जाता है।
✅ Correct Answer:
💡 Explanation / व्याख्या
Explanation (English) SELECT FOR UPDATE: acquires X-lock (or in PostgreSQL FOR UPDATE/FOR SHARE) on selected rows. Other transactions trying to SELECT FOR UPDATE or UPDATE the same rows will block until the first transaction releases. Used for: implementing check-and-update patterns, reservation systems, inventory management. Release locks on COMMIT/ROLLBACK.
व्याख्या (हिन्दी) अद्यतन के लिए चयन करें: चयनित पंक्तियों पर एक्स-लॉक (या अद्यतन/साझा करने के लिए PostgreSQL में) प्राप्त करता है। अद्यतन के लिए चयन करने या समान पंक्तियों को अद्यतन करने का प्रयास करने वाले अन्य लेन-देन पहले लेन-देन जारी होने तक अवरुद्ध हो जाएंगे। इसके लिए उपयोग किया जाता है: चेक-एंड-अपडेट पैटर्न, आरक्षण प्रणाली, इन्वेंट्री प्रबंधन लागू करना। COMMIT/रोलबैक पर लॉक जारी करें।
129
EN + हिं Medium
GB What happens when an INSERT violates a NOT NULL constraint vs a CHECK constraint in terms of error handling?
IN क्या होता है जब एक INSERT त्रुटि प्रबंधन के संदर्भ में NOT NULL बाधा बनाम CHECK बाधा का उल्लंघन करता है?
A
Both raise constraint violation errors but the error codes differ: NOT NULL violation raises a specific null constraint error and CHECK constraint violation raises a check constraint violation - both prevent the INSERT from completing and the transaction remains in an error state requiring rollback दोनों बाधा उल्लंघन त्रुटियों को बढ़ाते हैं लेकिन त्रुटि कोड भिन्न होते हैं: शून्य उल्लंघन एक विशिष्ट शून्य बाधा त्रुटि को जन्म देता है और चेक बाधा उल्लंघन एक चेक बाधा उल्लंघन को बढ़ाता है - दोनों INSERT को पूरा होने से रोकते हैं और लेनदेन एक त्रुटि स्थिति में रहता है जिसे रोलबैक की आवश्यकता होती है
B
CHECK constraint errors can be ignored; NOT NULL constraint errors always fail चेक बाधा त्रुटियों को नजरअंदाज किया जा सकता है; NOT NULL बाधा त्रुटियाँ हमेशा विफल रहती हैं
C
NOT NULL constraint silently replaces NULL with default value; CHECK constraint rolls back the entire transaction NOT NULL बाधा चुपचाप NULL को डिफ़ॉल्ट मान से बदल देती है; CHECK बाधा पूरे लेन-देन को वापस ले आती है
D
Both constraints produce identical errors दोनों बाधाएँ समान त्रुटियाँ उत्पन्न करती हैं
✅ Correct Answer:
💡 Explanation / व्याख्या
Explanation (English) Both constraints prevent the INSERT and raise errors. NOT NULL violation: ORA-01400 in Oracle, ERROR 1048 in MySQL. CHECK violation: ORA-02290 in Oracle, ERROR 3819 in MySQL. Both require the transaction to be rolled back (or the statement rolled back in autocommit mode). The client must handle the error and retry or fix the data.
व्याख्या (हिन्दी) दोनों बाधाएँ INSERT को रोकती हैं और त्रुटियाँ बढ़ाती हैं। शून्य उल्लंघन नहीं: Oracle में ORA-01400, MySQL में त्रुटि 1048। उल्लंघन की जाँच करें: Oracle में ORA-02290, MySQL में त्रुटि 3819। दोनों को लेनदेन को वापस रोल करने की आवश्यकता होती है (या स्टेटमेंट को ऑटोकमिट मोड में वापस रोल किया जाता है)। क्लाइंट को त्रुटि को संभालना होगा और डेटा को पुनः प्रयास करना या ठीक करना होगा।
130
EN + हिं Easy
GB What is the INSERT ALL statement in Oracle SQL and what problem does it solve?
IN Oracle SQL में INSERT ALL स्टेटमेंट क्या है और यह किस समस्या का समाधान करता है?
A
Inserting all rows from one table to another सभी पंक्तियों को एक तालिका से दूसरी तालिका में सम्मिलित करना
B
Oracle-specific SQL that inserts multiple rows into multiple tables in a single statement (unconditional or conditional INSERT ALL INTO t1...INTO t2...) solving the problem of making multiple table inserts atomic and efficient from a single data scan ओरेकल-विशिष्ट एसक्यूएल जो एक ही स्टेटमेंट में कई पंक्तियों को कई तालिकाओं में सम्मिलित करता है (बिना शर्त या सशर्त INSERT ALL INTO t1...INTO t2...) एकल डेटा स्कैन से एकाधिक तालिका आवेषण को परमाणु और कुशल बनाने की समस्या को हल करता है
C
Inserting all columns from a single row एक ही पंक्ति से सभी कॉलम सम्मिलित करना
D
Inserting the same row into multiple copies of a table किसी तालिका की एकाधिक प्रतियों में एक ही पंक्ति सम्मिलित करना
✅ Correct Answer:
💡 Explanation / व्याख्या
Explanation (English) Oracle INSERT ALL: INSERT ALL INTO t1 (col) VALUES (val1) INTO t2 (col) VALUES (val2) SELECT 1 FROM DUAL; Or conditional: INSERT ALL WHEN id < 100 THEN INTO small_orders WHEN id >= 100 THEN INTO large_orders SELECT id, amount FROM staged_orders. Performs multiple inserts in single pass over source data, all in one atomic statement.
व्याख्या (हिन्दी) Oracle सभी सम्मिलित करें: सभी को t1 (col) मानों (val1) में t2 (col) मानों (val2) में सम्मिलित करें, दोहरे में से 1 चुनें; या सशर्त: आईडी <100 होने पर सभी को छोटे ऑर्डर में डालें, जब आईडी >= 100 हो तो बड़े ऑर्डर में डालें, चरणबद्ध ऑर्डर से आईडी, राशि चुनें। स्रोत डेटा पर एकल पास में एकाधिक प्रविष्टियाँ निष्पादित करता है, सभी एक परमाणु कथन में।
121–130 of 130