क्वेरी के माध्यम से MySQL में डेटाबेस संरचना कैसे प्राप्त करें


171

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

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

जवाबों:


260

मुझे लगता है कि तुम क्या हो DESCRIBE

DESCRIBE table;

आप भी उपयोग कर सकते हैं SHOW TABLES

SHOW TABLES;

अपने डेटाबेस में तालिकाओं की एक सूची प्राप्त करने के लिए।


6
विशिष्ट डेटाबेस उपयोग को लक्षित करने के लिए: SHOW TABLES FROM database_name
तारिक

109

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

mysqldump database_name --compact --no-data

एकल तालिकाओं के लिए, mysqldump में db नाम के बाद तालिका नाम जोड़ें। आपको SQL और SHOW CREATE TABLE के समान परिणाम मिलते हैं :

SHOW CREATE TABLE table;

या स्तंभ सूची पसंद करने पर DESCRIBE करें:

DESCRIBE table;

3
show create tableवास्तव में मैं क्या देख रहा था। धन्यवाद!
i

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

41

देख लेना INFORMATION_SCHEMATABLESतालिका। इसमें आपकी सभी तालिकाओं के बारे में मेटाडेटा है।

उदाहरण:

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

अन्य तरीकों पर इसका लाभ यह है कि आप अपने ऊपर दिए गए प्रश्नों को आसानी से उपयोग कर सकते हैं जैसे कि आपके अन्य प्रश्नों में उपश्रेणियाँ।


6
यह है कि यह होना चाहिए नहीं है information_schemacolumns( columnsतालिका का उपयोग करने के बजाय; tablesक्योंकि tablesतालिका स्तंभ किस प्रकार के हैं, इसकी कोई जानकारी नहीं है
दिमित्री के

दूसरा फायदा यह है कि सूचना स्कीमा को सर्वर स्टार्ट में मेमोरी में लोड किया जाता है इसलिए कोई hdd रीडिंग neccesary
bortunac

हाँ, निश्चित रूप से TABLES के बजाय COLUMS होना चाहिए! कि एक इलाज काम करता है!
रसेल फुल्टन

32

इसका उपयोग करते हुए:

SHOW CREATE TABLE `users`;

आपको उस तालिका के लिए डीडीएल देगा

DESCRIBE `users`

उस तालिका में कॉलम सूचीबद्ध करेगा


1
आत्मीयता, यकीन है कि यह उस मेज के लिए एक डीडीएल बयान है
duckyflip

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

18
@soulmerge, मैं भी एक पादरी हूं, लेकिन मुझे लगता है कि आप यहां गलत हैं: "धन्यवाद के लिए फ्रांसीसी '' मेरिसी 'है" काफी स्वीकार्य अंग्रेजी वाक्य है ("फ्रांसीसी शब्द के लिए कम नहीं", आदि) , और यह "{{भाषा का नाम}} {{बात को व्यक्त करने के लिए}}" जैसे "इस तालिका के लिए डीडीएल" के लिए सामान्यीकृत करता है। "AC फ़ंक्शन अपने आप में C नहीं है" यह कहने के समान है कि "एक फ्रांसीसी शब्द स्वयं फ्रेंच नहीं है": अच्छी तरह से यह बिल्कुल भी फ्रेंच नहीं है, लेकिन यह कहना कि "'एयू रिवाइजर' फ्रेंच है" शायद ही आपत्तिजनक है (जैसा कि स्पष्ट है) इसका मतलब है कि यह फ्रेंच का हिस्सा है, सभी फ्रेंच का नहीं! -)।
एलेक्स मार्टेली

@soulmerge। हां, निश्चित रूप से वोट करने का एक कारण ... आनंद लें!
mate00

dafuqq यहाँ पर जा रहा है
नाइटन

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

Table_schemaडेटाबेस का नाम कहां है


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

मैंने अपने अंत में इस क्वेरी का इस्तेमाल कियाSELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_db_name' AND TABLE_NAME ='users';
अहमद नुमान


8

पहले उत्तर का एक रूपांतर जो मुझे उपयोगी लगा

अपना कमांड प्रॉम्प्ट खोलें और दर्ज करें (आपको अपने mysql सर्वर में लॉग इन नहीं होना है)

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

मुझे यह पसंद है, यह बनावटी वक्तव्य देता है।
थोफिर


2

निम्नलिखित उदाहरण में,

playgroundडेटाबेस का नाम है और equipmentतालिका का नाम है

दूसरा तरीका SHOW-COLUMNS का उपयोग कर रहा है : 5.5 (इसके लिए भी उपलब्ध है 5.5>)

$ mysql -uroot -p<password> -h<host> -P<port> -e \
    "SHOW COLUMNS FROM playground.equipment"

और आउटपुट:

mysql: [Warning] Using a password on the command line interface can be insecure.
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| type  | varchar(50) | YES  |     | NULL    |                |
| quant | int(11)     | YES  |     | NULL    |                |
| color | varchar(25) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

एक भी mysqlshow- क्लाइंट का उपयोग कर सकता है ( 5.5>निम्न के लिए भी उपलब्ध ) जैसे:

$ mysqlshow -uroot -p<password> -h<host> -P<port> \
    playground equipment

और आउटपुट:

mysqlshow: [Warning] Using a password on the command line interface can be insecure.
Database: playground  Table: equipment
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
| Field | Type        | Collation         | Null | Key | Default | Extra          | Privileges                      | Comment |
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
| id    | int(11)     |                   | NO   | PRI |         | auto_increment | select,insert,update,references |         |
| type  | varchar(50) | latin1_swedish_ci | YES  |     |         |                | select,insert,update,references |         |
| quant | int(11)     |                   | YES  |     |         |                | select,insert,update,references |         |
| color | varchar(25) | latin1_swedish_ci | YES  |     |         |                | select,insert,update,references |         |
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+

0

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

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