2008-09-15 10 views

उत्तर

4

क्या आपने INFORMATION_SCHEMA.Tables पूछताछ की है?

SELECT ic.Table_Name, 
    ic.Column_Name, 
    ic.data_Type, 
    IFNULL(Character_Maximum_Length,'') AS `Max`, 
    ic.Numeric_precision as `Precision`, 
    ic.numeric_scale as Scale, 
    ic.Character_Maximum_Length as VarCharSize, 
    ic.is_nullable as Nulls, 
    ic.ordinal_position as OrdinalPos, 
    ic.column_default as ColDefault, 
    ku.ordinal_position as PK, 
    kcu.constraint_name, 
    kcu.ordinal_position, 
    tc.constraint_type 
FROM INFORMATION_SCHEMA.COLUMNS ic 
    left outer join INFORMATION_SCHEMA.key_column_usage ku 
     on ku.table_name = ic.table_name 
     and ku.column_name = ic.column_name 
    left outer join information_schema.key_column_usage kcu 
     on kcu.column_name = ic.column_name 
     and kcu.table_name = ic.table_name 
    left outer join information_schema.table_constraints tc 
     on kcu.constraint_name = tc.constraint_name 
order by ic.table_name, ic.ordinal_position; 
+3

यह छ ओपी के रूप में तालिका के बारे में जानकारी (मेटा) की जानकारी नहीं है, तालिका की सामग्री नहीं। – physicalattraction

38

में के रूप में मुझे लगता है कि आप SELECT * FROM INFORMATION_SCHEMA.TABLES

चाहते http://dev.mysql.com/doc/refman/5.0/en/tables-table.html

+7

यह आपको ओपी के रूप में तालिका की सामग्री नहीं, टेबल के बारे में जानकारी (मेटा) देता है। – physicalattraction

+0

यह विंडोज पर कम केस टेबल नाम देता है, जबकि 'शो टैबलेट' निर्दिष्ट के रूप में आवरण देता है। – AndreKR

3

देखें मुझे लगता है कि क्या आप चाहते हैं MySQL के INFORMATION_SCHEMA दृश्य (ओं) है: http://dev.mysql.com/doc/refman/5.0/en/tables-table.html

+4

यह आपको ओपी के रूप में टेबल की सामग्री नहीं, टेबल के बारे में जानकारी (मेटा) देता है। – physicalattraction

2
SELECT * FROM INFORMATION_SCHEMA.TABLES 

यह एक होना चाहिए अच्छी शुरुआत। अधिक जानकारी के लिए, INFORMATION_SCHEMA Tables देखें।

+4

यह आपको ओपी के रूप में टेबल की सामग्री नहीं, टेबल के बारे में जानकारी (मेटा) देता है। – physicalattraction

2

मुझे समझ में नहीं आता कि आप कथन के हिस्से के रूप में SELECT * FROM का उपयोग क्यों करना चाहते हैं।

12.5.5.30. SHOW TABLES Syntax

+4

ओपी टेबल टैबलेट द्वारा लौटे गए टेबल्स से डेटा निकालना चाहता है, टेबल्स के बारे में जानकारी नहीं है। – physicalattraction

19

मैं के बारे में पता नहीं है कि, जब तक आप INFORMATION_SCHEMA से चयन करें, के रूप में दूसरों का उल्लेख किया है।

हालांकि, SHOW आदेश, सुंदर लचीला है उदाहरण के लिए:

SHOW tables like '%s%' 
+5

यह आपको ओपी के रूप में तालिका की सामग्री नहीं, टेबल के बारे में जानकारी (मेटा) देता है। – physicalattraction

3
SELECT column_comment FROM information_schema.columns WHERE table_name = 'myTable' AND column_name = 'myColumnName' 

इस पर टिप्पणी वापस आ जाएगी: myTable.myColumnName

+3

यह आपको ओपी के रूप में तालिका की सामग्री नहीं, टेबल के बारे में जानकारी (मेटा) देता है। – physicalattraction

2

हाँ, TABLE_SCHEMA से चयन के लिए बहुत उपयोगी हो सकता है तंत्र अध्यक्ष। यदि आपके पास बहुत सारे सर्वर, डेटाबेस, टेबल हैं ... कभी-कभी आपको तत्वों का समूह या अद्यतन करने की आवश्यकता होती है। उदाहरण के उपसर्ग नाम "wp_old _..." के साथ सभी तालिकाओं ड्रॉप के लिए क्वेरी बनाने के लिए के लिए:

SELECT concat('DROP TABLE ', table_name, ';') FROM INFORMATION_SCHEMA.TABLES 
WHERE table_schema = '*name_of_your_database*' 
AND table_name LIKE 'wp_old_%'; 
+3

यह आपको ओपी के रूप में टेबल की सामग्री नहीं, टेबल के बारे में जानकारी (मेटा) देता है। – physicalattraction

1

MySql 5.1 में तुम कोशिश कर सकते

show tables like 'user%'; 

उत्पादन:

mysql> show tables like 'user%'; 

+----------------------------+ 

| Tables_in_test (user%) | 

+----------------------------+ 

| user      | 

| user_password    | 

+----------------------------+ 

2 rows in set (0.00 sec) 
+3

यह आपको ओपी के रूप में तालिका की सामग्री नहीं, टेबल के बारे में जानकारी (मेटा) देता है। – physicalattraction

3

आप अपने उदाहरण में एक सबक्वायरी के अंदर SHOW कथन नहीं डाल सकते हैं। एकमात्र कथन जो सबक्वायरी में जा सकता है SELECT है।

जैसा कि अन्य उत्तरों ने कहा है, आप INFORMATION_SCHEMA से सीधे SELECT से पूछ सकते हैं और इस तरह से बहुत अधिक लचीलापन प्राप्त कर सकते हैं।

MySQL का SHOW कथन INFORMATION_SCHEMA तालिकाओं के विरुद्ध आंतरिक रूप से केवल प्रश्न हैं।

उपयोगकर्ता @physicalattraction अधिकांश अन्य जवाब पर इस टिप्पणी पोस्ट की है:

यह आपको (मेटा) टेबल, नहीं तालिका की सामग्री के बारे में जानकारी देता है के रूप में ओ पी इरादा है। - physicalattraction

इसके विपरीत, ओपी के सवाल नहीं कहते हैं कि वे सभी तालिकाओं में डेटा का चयन करना चाहते है। वे कहते हैं कि वे SHOW TABLES के परिणाम से चयन करना चाहते हैं, जो कि तालिका नामों की एक सूची है।

यदि ओपी सभी तालिकाओं से सभी डेटा चुनना चाहता है, तो उत्तर नहीं है, आप इसे एक प्रश्न के साथ नहीं कर सकते हैं। प्रत्येक क्वेरी को स्पष्ट रूप से इसकी सारणी का नाम देना चाहिए। आप टेबल नाम को एक चर या एक ही क्वेरी के दूसरे भाग के परिणाम नहीं बना सकते हैं। साथ ही, किसी दिए गए क्वेरी परिणाम के सभी पंक्तियों में एक ही कॉलम होना चाहिए।

इसलिए सभी तालिकाओं से सभी डेटा का चयन करने का एकमात्र तरीका SHOW TABLES चलाया जाएगा और फिर उस परिणाम में नामित प्रत्येक तालिका के लिए, एक और क्वेरी चलाएं।

3

आप करीब से आपको लगता है — शो तालिकाएं हो सकता है पहले से ही बर्ताव करता है का चयन करें की तरह एक बहुत कुछ:

$pdo = new PDO("mysql:host=$host;dbname=$dbname",$user,$pass); 
foreach ($pdo->query("SHOW TABLES") as $row) { 
    print "Table $row[Tables_in_$dbname]\n"; 
} 
8

गिनती करने के लिए:

SELECT COUNT(*) as total FROM (SELECT TABLE_NAME as tab, TABLES.* FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='database_name' GROUP BY tab) tables; 

सूचीबद्ध करने के लिए:

SELECT TABLE_NAME as table, TABLES.* FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='database_name' GROUP BY table; 
+0

स्टैक ओवरव्लो में आपका स्वागत है! यहां, हम अंग्रेजी को हमारी मुख्य भाषा के रूप में उपयोग करते हैं। कृपया सुनिश्चित करें कि आपकी पोस्ट अंग्रेजी में हैं। –

1

आप कर सकते हैं संग्रहित प्रक्रिया बनाएं और तालिका के नाम कर्सर में रखें, फिर अपने टेबल नामों के माध्यम से लूप करें डेटा दिखाने के लिए। http://www.mysqltutorial.org/getting-started-with-mysql-stored-procedures.aspx

में कर्सर बनाना:

संग्रहीत प्रक्रिया के साथ प्रारंभ करना http://www.mysqltutorial.org/mysql-cursor/

उदाहरण के लिए,

CREATE PROCEDURE `ShowFromTables`() 
BEGIN 

DECLARE v_finished INTEGER DEFAULT 0; 
DECLARE c_table varchar(100) DEFAULT ""; 

DECLARE table_cursor CURSOR FOR 
SELECT table_name FROM information_schema.tables WHERE table_name like 'wp_1%'; 

DECLARE CONTINUE HANDLER 
    FOR NOT FOUND SET v_finished = 1; 

OPEN table_cursor; 

get_data: LOOP 

FETCH table_cursor INTO c_table; 

IF v_finished = 1 THEN 
LEAVE get_data; 
END IF; 

SET @s=CONCAT("SELECT * FROM ",c_table,";"); 

PREPARE stmt FROM @s; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

END LOOP get_data; 

CLOSE table_cursor; 

END 

फिर संग्रहीत प्रक्रिया कॉल:

CALL ShowFromTables();