2011-12-07 14 views
9

मूल रूप से मैं तालिका नाम प्राप्त करना चाहता हूं, और मौजूदा डेटाबेस से प्रत्येक तालिका के लिए फील्ड नाम कनेक्ट करना चाहता हूं, और कुछ नहीं।एक प्रश्न के साथ डेटाबेस स्कीमा प्राप्त करें?

क्या यह संभव है?

मुझे पता है कि SHOW TABLES FROM my_database आप तालिका नाम हो जाता है, और SHOW COLUMNS FROM my_table आप क्षेत्रों मिल जाएगा, लेकिन वह कम से कम [1 एक्स # टेबल के] प्रश्नों है और मैं अधिक जानकारी है कि मैं चाहता हूँ :)

+0

यह PHP में होने की जरूरत है या आप उपयोग कर सकते हैं [mysql डंप] (http://www.howtogeek.com/howto/programming/mysql/dump-just-the-table-structure-to- एक-फ़ाइल-इन-mysql /)? –

+0

php के भीतर (मैं पीडीओ उपयोग कर रहा हूँ प्रश्नों करने के लिए) – Alex

उत्तर

15

INFORMATION_SCHEMA.COLUMNS तालिका में आप जो पूछ रहे हैं वह है।

SELECT table_name, column_name 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE table_schema = 'YourDBName' 
    ORDER BY table_name, ordinal_position 
+0

मुझे सभी डेटाबेस – Alex

+0

@Alex से जानकारी मिलती है: मैंने आपके लिए एक क्लॉज जोड़ा। –

+0

धन्यवाद, पूरी तरह से काम करता है :) – Alex

4
SELECT * 
FROM information_schema.tables t 
JOIN information_schema.columns c ON t.TABLE_NAME = c.TABLE_NAME 
AND t.TABLE_CATALOG=c.TABLE_CATALOG 
AND t.TABLE_SCHEMA=c.TABLE_SCHEMA 
मिल

SQLSERVER 2005 के लिए काम करता है। स्तंभ नाम MySQL के लिए अलग हो सकते हैं (मुझे लगता है कि आप इसका उपयोग कर रहे हैं), लेकिन अवधारणा वही है।

+0

एसक्यूएल सर्वर और MySQL दोनों का उपयोग INFORMATION_SCHEMA संरचना जिसका समुचित मानक SQL करने के लिए समान है, लेकिन FWIW MySQL कैटलॉग का समर्थन नहीं करता है, तो table_catalog हमेशा शाब्दिक स्ट्रिंग ' 'डीईएफ़' है '। –

1

"डेटाबेस शो", "टेबल शो" और "तालिका का वर्णन" सबसे अच्छा, सबसे तेज़ तरीका है मैं MySql में के बारे में पता कर रहे हैं।

लेकिन वे MySql-अलग होते हैं।

यदि आप चाहते हैं:

क) अपने डेटाबेस स्कीमा

... AND ... 

ख आपकी क्वेरी से अधिक अधिक व्यापक नियंत्रण क्वेरी करने के लिए), तो INFORMATION_SCHEMA को देखने के लिए एक पोर्टेबल तरीका:

http://dev.mysql.com/doc/refman/5.0/en/information-schema.html

सिंटेक्स:

SELECT table_name FROM INFORMATION_SCHEMA.TABLES 
    WHERE table_schema = 'db_name' 
    [AND table_name LIKE 'wild'] 
4
SELECT t.name AS tblName, 
SCHEMA_NAME(schema_id) AS [schemaName], 
c.name AS colName 
FROM sys.tables AS t 
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID 
ORDER BY tblName; 
0

कुछ परीक्षणों के बाद, मैंने अपनी तालिका में कॉलम देखने के लिए यह एसक्यूएल कोड बनाया।

SELECT 
TABLE_NAME as table_name, 
COLUMN_NAME as column_name, 
COLUMN_TYPE as data_type, 
COLUMN_DEFAULT as default_value, 
IS_NULLABLE as nullable, 
COLUMN_KEY as constraints, 
EXTRA as constraints2, 
CHARACTER_SET_NAME as charset, 
COLLATION_NAME as collation 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_schema = '<YOUR_DATABASE_NAME>' 
AND TABLE_NAME='<YOUR_TABLE_NAME>' 
ORDER BY table_name, ordinal_position 
संबंधित मुद्दे