MySQL 'क्रिएट स्कीमा' और 'क्रिएट डेटाबेस' - क्या कोई अंतर है


104

information_schemaडेटाबेस में एक चोटी लेना और अपने एक पालतू प्रोजेक्ट के लिए मेटाडेटा में चोटी रखना , मुझे यह समझने में कठिन समय मिल रहा है कि क्या (यदि कोई हो) MySQL के लिए create schemaकमांड और कमांड के बीच अंतर हैं create database

क्या कोई मतभेद हैं? यदि नहीं, तो यह रिलेशनल डेटाबेस के लिए व्यवहार का एक विशिष्ट प्रारूप है (मैंने सुना है कि अन्य डेटाबेस, जैसे कि ओरेकल, एक स्कीमा डेटाबेस में मौजूद है, डेटाबेस के समान स्तर पर होने के बजाय)।

धन्यवाद!

जवाबों:


140

MySQL का प्रलेखन कहता है :

निर्मित DATABASE दिए गए नाम के साथ एक डेटाबेस बनाता है। इस कथन का उपयोग करने के लिए, आपको डेटाबेस के लिए CREATE विशेषाधिकार की आवश्यकता है। क्रिएट स्कीमा MySQL 5.0.2 के अनुसार क्रिएट डेटा के लिए एक पर्याय है।

इसलिए, यह सामान्य प्रतीत होगा कि वे दो निर्देश एक ही करते हैं।


1
अति उत्कृष्ट! मैंने माना कि स्कीमा एक डेटाबेस उदाहरण का एक हिस्सा है। बहुत बहुत धन्यवाद!!
asgs

27

माईकल डॉक्यूमेंट कहता है: क्रिएट स्कीमा क्रीएट डबस्टेज का एक पर्याय है MySQL 5.0.2 के ।


यह सब 80 के दशक के मध्य में SQL के लिए एक ANSI मानक पर वापस जाता है।

उस मानक में "क्रिएट स्कीमा" कमांड थी, और इसने टेबल और व्यू नामों के लिए कई नाम रिक्त स्थान पेश करने का काम किया। सभी तालिकाएँ और दृश्य "स्कीमा" के भीतर बनाए गए थे। मुझे नहीं पता कि उस संस्करण ने तालिकाओं और विचारों तक कुछ क्रॉस-स्कीमा पहुंच को परिभाषित किया था, लेकिन मुझे लगता है कि यह किया था। AFAIR, कोई उत्पाद (कम से कम वापस तो) वास्तव में इसे लागू किया, कि पूरी अवधारणा अभ्यास से अधिक सिद्धांत थी।

OTOH, ISTR मानक के इस संस्करण में "उपयोगकर्ता" या "निर्माता USER" कमांड की अवधारणा नहीं थी, इसलिए ऐसे उत्पाद थे जो "उपयोगकर्ता" की अवधारणा का उपयोग करते थे (जिनके पास तब तालिकाओं के लिए अपना नाम स्थान था और विचार) "स्कीमा" के अपने समकक्ष को लागू करने के लिए।

यह एक ऐसा क्षेत्र है जहां सिस्टम अलग होते हैं।

जहां तक ​​प्रशासन का सवाल है, यह बहुत ज्यादा मायने नहीं रखना चाहिए, क्योंकि यहां आपके बीच वैसे भी मतभेद हैं।

जहां तक ​​आप एप्लिकेशन कोड को देखते हैं, आपको "केवल" उन मामलों के बारे में ध्यान रखना होगा जहां एक आवेदन कई नाम स्थान से तालिकाओं तक पहुंचता है। AFAIK, सभी सिस्टम एक सिंटैक्स "" का समर्थन करते हैं, और इसके लिए यह कोई फर्क नहीं पड़ता कि नाम स्थान उपयोगकर्ता का है, "स्कीमा", या "डेटाबेस"।


@DerMike I को याद करते हैं, internetslang.com/ISTR-meaning-definition.asp
reevesy

2
: यह मूल स्रोत के लिए एक संदर्भ है, जहां इस उत्तर से लिया गया था देने के लिए सही होगा lists.mysql.com/mysql/211647
informatik01

@ Informatik01 जब तक Adinochestva एक मूल पोस्टर नहीं है।
फैनटैडड

SQL सर्वर ने SCHEMA को एक डेटाबेस के भीतर टेबल / प्रकार / .. के समूह के रूप में लागू किया
Gudgip

7

कड़ाई से बोलने, डेटाबेस और स्कीमा के बीच अंतर MySql में मौजूद है।

हालाँकि, SQL डेटाबेस जैसे अन्य डेटाबेस इंजन में ऐसा नहीं है। SQL सर्वर में:

हर तालिका डेटाबेस स्कीमा नामक डेटाबेस में ऑब्जेक्ट्स के एक समूह से संबंधित है । यह एक कंटेनर या नाम स्थान ( Microsoft SQL Server 2012 को छोड़ना ) है

डिफ़ॉल्ट रूप से, SQL सर्वर की सभी तालिकाएँ डिफ़ॉल्ट स्कीमा से संबंधित होती हैं जिन्हें dbo कहा जाता है । जब आप किसी ऐसे तालिका को क्वेरी करते हैं जिसे किसी विशेष स्कीमा को आवंटित नहीं किया गया है, तो आप कुछ ऐसा कर सकते हैं:

SELECT *
FROM your_table

जो इसके बराबर है:

SELECT *
FROM dbo.your_table

अब, SQL सर्वर विभिन्न स्कीमा के निर्माण की अनुमति देता है, जो आपको एक समान उद्देश्य साझा करने वाली तालिकाओं को समूहीकृत करने की संभावना देता है। जो डेटाबेस को व्यवस्थित करने में मदद करता है।

उदाहरण के लिए, यदि आप एक स्कीमा कहा जाता है बना सकते हैं बिक्री , जैसे तालिकाओं के साथ चालान , creditorders (और बिक्री के साथ संबंधित किसी भी अन्य), और एक अन्य स्कीमा बुलाया देखने , जैसे तालिकाओं के साथ देशों , मुद्राओं , subscriptiontypes (और किसी भी अन्य तालिका देखो के रूप में इस्तेमाल अप टेबल)।

एक विशिष्ट डोमेन के लिए आबंटित तालिकाएँ SQL सर्वर स्टूडियो प्रबंधक में प्रदर्शित होती हैं, जिसमें स्कीमा नाम तालिका के नाम से जुड़ा होता है (ठीक उसी प्रकार जो तालिका डिफ़ॉल्ट dbo स्कीमा से संबंधित है )।

SQL Server में विशेष स्कीमा हैं। उसी पुस्तक को उद्धृत करने के लिए:

कई अंतर्निहित डेटाबेस स्कीमा हैं, और उन्हें गिराया या बदला नहीं जा सकता है:

1) dbo , डिफ़ॉल्ट स्कीमा।

2) अतिथि में अतिथि उपयोगकर्ता के लिए उपलब्ध वस्तुएं होती हैं ("अतिथि उपयोगकर्ता" SQL सर्वर लोंगो में कुछ डिफ़ॉल्ट और अत्यधिक प्रतिबंधित सामग्री के साथ एक विशेष भूमिका है)। बहुत कम प्रयुक्त।

3) INFORMATION_SCHEMA , सूचना स्कीमा दृश्य द्वारा उपयोग किया जाता है

4) sys , SQL सर्वर आंतरिक उपयोग के लिए विशेष रूप से आरक्षित है

स्कीम केवल ग्रुपिंग के लिए नहीं हैं। MSDN के अनुसार प्रत्येक स्कीमा के लिए अलग-अलग उपयोगकर्ताओं को अलग-अलग अनुमति देना वास्तव में संभव है ।

इस तरह से, ऊपर वर्णित स्कीमा लुकअप को डेटाबेस में किसी भी मानक उपयोगकर्ता को उपलब्ध कराया जा सकता है (उदाहरण SELECTकेवल अनुमति), जबकि आपूर्तिकर्ताबैंकएक्वांटडेट्स नामक एक तालिका को एक अलग स्कीमा में आवंटित किया जा सकता है जिसे वित्तीय कहा जाता है , और उपयोगकर्ताओं को केवल एक्सेस प्रदान करने के लिए समूह accounts(सिर्फ एक उदाहरण, आपको विचार मिलता है)।

अंत में, उसी पुस्तक को फिर से उद्धृत करना:

यह एक ही डेटाबेस स्कीमा और टेबल स्कीमा नहीं है । पूर्व एक तालिका का नाम स्थान है, जबकि उत्तरार्द्ध तालिका परिभाषा को संदर्भित करता है



5

डेटाबेस स्कीमा का एक संग्रह है और स्कीमा तालिकाओं का एक संग्रह है। लेकिन MySQL में वे इसे उसी तरह से इस्तेमाल करते हैं।


1

इसलिए, MySQL "डेटाबेस" और MySQL "स्कीमा" के बीच कोई अंतर नहीं है: ये एक ही चीज के दो नाम हैं - तालिकाओं और अन्य DB वस्तुओं के लिए एक नाम स्थान।

Oracle पृष्ठभूमि वाले लोगों के लिए: MySQL "डेटाबेस" उर्फ ​​MySQL "स्कीमा" Oracle स्कीमा से मेल खाती है। MySQL और Oracle CREATE SCHEMA कमांड के बीच का अंतर यह है कि Oracle में CREATE SCHEMA कमांड वास्तव में स्कीमा नहीं बनाता है, बल्कि इसे टेबल और व्यू के साथ पॉप्युलेट करता है। और Oracle का CREAT DATABASE कमांड अपने MySQL समकक्ष की तुलना में बहुत अलग काम करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.