2009-08-02 12 views
81

information_schema डेटाबेस में चोटी लेना और मेटाडाटा पर मेरी पालतू परियोजनाओं में से एक के लिए, मुझे समझने में कठिनाई हो रही है कि क्या (अगर कोई भी) create schema कमांड और create database MySQL के लिए कमांड के बीच अंतर हैं।MySQL 'स्कीमा बनाएं' और 'डेटाबेस बनाएं' - क्या कोई फर्क नहीं पड़ता

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

धन्यवाद!

उत्तर

111

documentation of MySQL says:

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

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

+1

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

24

Mysql documentation का कहना है: बनाएं SCHEMA MySQL 5.0.2 के रूप में डेटाबेस बनाएँ के लिए एक पर्याय है।


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

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

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

यह वह क्षेत्र है जहां सिस्टम भिन्न होते हैं।

जहां तक ​​प्रशासन का संबंध है, इससे कोई फर्क नहीं पड़ता, क्योंकि यहां आपके पास भिन्नताएं हैं।

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

+2

'ISTR' क्या है? – DerMike

+0

@DerMike I याद करने के लिए, http://www.internetslang.com/ISTR-meaning-definition.asp – reevesy

+2

मूल स्रोत का संदर्भ देना सही होगा, जहां से यह उत्तर लिया गया था: http: // list.mysql.com/mysql/211647 – informatik01

4

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

4

सच पूछिये तो, डाटाबेस और स्कीमा के बीच का अंतर MySql में inexisting है।

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

हर तालिका डेटाबेस डेटाबेस स्कीमा कहा जाता है में वस्तुओं का एक समूह के अंतर्गत आता है। यह एक कंटेनर या नाम स्थान (Querying Microsoft SQL Server 2012)

डिफ़ॉल्ट रूप से, SQL सर्वर में सभी तालिकाओं dbo नाम से डिफाल्ट स्कीमा के हैं है।

SELECT * 
FROM dbo.your_table 

अब, एसक्यूएल सर्वर अलग बनाए जा सकते हैं:

SELECT * 
FROM your_table 

जो के बराबर है: जब आप एक मेज है कि किसी विशेष स्कीमा के लिए आवंटित नहीं किया गया क्वेरी, आप की तरह कुछ कर सकते हैं स्कीमा, जो आपको समान सारणी साझा करने वाली टेबल को समूहित करने की संभावना देता है। यह डेटाबेस को व्यवस्थित करने में मदद करता है।

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

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

SQL सर्वर में विशेष स्कीमा हैं।

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

1) dbo, डिफ़ॉल्ट स्कीमा एक ही किताब के शब्दों में।

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

3) INFORMATION_SCHEMA, सूचना स्कीमा द्वारा इस्तेमाल किया दृश्य

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

स्कीमा केवल समूह के लिए नहीं हैं। MSDN वर्णित अनुसार, प्रत्येक स्कीमा के लिए अलग-अलग उपयोगकर्ताओं को अलग-अलग अनुमतियां देना वास्तव में संभव है। (उदाहरण के लिए केवल SELECT अनुमतियाँ), वित्तीय कहा जाता है, जबकि एक मेज supplierbankaccountdetails एक अलग स्कीमा में आवंटित किया जा सकता है कहा जाता है

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

अंत में

, और एक ही पुस्तक को पुन: उद्धृत:

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

संबंधित मुद्दे