2009-05-22 11 views
113

के माध्यम से MySQL में डेटाबेस संरचना कैसे प्राप्त करें, क्या किसी भी तरह से MySQL डेटाबेस की संरचना प्राप्त करना संभव है, या साधारण क्वेरी के साथ बस कुछ तालिका?क्वेरी

या कोई और तरीका है, मैं इसे कैसे कर सकता हूं?

उत्तर

177

मुझे लगता है कि सूची जाएगा के लिए DDL दे देंगे कि क्या आप के बाद है DESCRIBE रहे

DESCRIBE table; 

तुम भी SHOW TABLES

SHOW TABLES; 

का उपयोग अपने डेटाबेस में तालिकाओं की एक सूची प्राप्त कर सकते हैं।

+3

विशिष्ट डेटाबेस उपयोग को लक्षित करने के लिए: 'डेटाबेस_नाम से टैबलेट दिखाएं – Tarik

25

का उपयोग कर इस:

SHOW CREATE TABLE `users`; 

आपको लगता है कि तालिका

DESCRIBE `users` 

कि तालिका में कॉलम

+0

-1 DDL एक भाषा है, जबकि क्या आप शो बनाने टेबल एक बयान – soulmerge

+0

soulmerge है के साथ मिलता है, यकीन है कि यह है कि टेबल – duckyflip

+0

हाँ के लिए एक DDL कथन है, यह एक DDL में एक बयान है, लेकिन एक सी फ़ंक्शन स्वयं ही नहीं है सी सी एक भाषा है, सी प्रोग्राम में एक फ़ंक्शन उस भाषा के भीतर एक निर्माण है। – soulmerge

32

INFORMATION_SCHEMA पर एक नज़र डालें। TABLES तालिका। इसमें आपकी सभी तालिकाओं के बारे में मेटाडेटा शामिल है।

उदाहरण:

SELECT * FROM `INFORMATION_SCHEMA`.`TABLES` 
WHERE TABLE_NAME LIKE 'table1' 

इसका लाभ अन्य विधियों का है कि आप आसानी से अपने अन्य प्रश्नों में सबक्वेरी के रूप में ऊपर की तरह प्रश्नों का उपयोग कर सकते हैं।

+1

क्या यह' info_schema' 'होना चाहिए' कॉलम '(' टेबल 'के बजाय' कॉलम 'तालिका का उपयोग करना चाहिए? क्योंकि' टेबल' में कोई भी नहीं है तालिका कॉलम –

+0

का दूसरा लाभ यह है कि सर्वर स्कीमा सर्वर पर मेमोरी में लोड किया गया है, इसलिए कोई भी एचडीडी पढ़ना नुकीला – bortunac

82

CREATE TABLE विवरणों के एक सेट के रूप में पूरे डेटाबेस संरचना पाने के लिए, mysqldump का उपयोग करें:

mysqldump database_name --compact --no-data 

एकल तालिकाओं के लिए, mysqldump में db नाम के बाद तालिका नाम जोड़ें। यदि आप एक स्तंभ सूची पसंद करते हैं

SHOW CREATE TABLE table; 

या DESCRIBE:: आप एसक्यूएल और SHOW CREATE TABLE के साथ एक ही परिणाम प्राप्त

DESCRIBE table; 
+2

'शो बिल्ड टेबल' बिल्कुल वही था जो मैं ढूंढ रहा था। धन्यवाद! – Shai

+0

यह समाधान नहीं है लेकिन मैं आभारी हूं क्योंकि मुझे नहीं पता था कि यह फ़ंक्शन मौजूद है और बहुत अच्छा है! – AriWais

7

कि मैंने पाया उपयोगी

अपने आदेश खोलें पहले उत्तर के एक बदलाव प्रॉम्प्ट करें और दर्ज करें (आपको अपने mysql सर्वर में लॉग इन नहीं होना चाहिए)

mysqldump -hlocalhost -u<root> -p<password> <dbname> --compact --no-data > </path_to_mydump/>mysql.dmp 
+0

मुझे यह पसंद है, यह निर्माण कथन देता है। – Thufir

14
SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME ='products'; 

जहां Table_schema

+1

हालांकि यह उपयोगी था। पता नहीं क्यों किसी ने इसे नापसंद किया है। – tulio84z

+0

कोई रास्ता है सूचना स्कीमा का चयन करने के लिए। कॉलम - विशेष डीबी से टेबल? – Shan

1

है डेटाबेस नाम का चयन COLUMN_NAME INFORMATION_SCHEMA से।COLUMNS जहां TABLE_SCHEMA = 'bodb' और TABLE_NAME = 'abc'; सभी कॉलम नामों

0

प्राप्त करने के लिए

काम करता है आजकल, लोगों DESC बजाय DESCRIPTION का उपयोग करें। उदाहरण के लिए: - DESC users;

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