MySQL में SELECT statement का उपयोग करके टेबल नाम प्राप्त करें


260

MySQL में, मुझे पता है कि मैं एक डेटाबेस में तालिकाओं को सूचीबद्ध कर सकता हूं:

SHOW TABLES

हालाँकि, मैं इन तालिका नामों को किसी अन्य तालिका में सम्मिलित करना चाहता हूं, उदाहरण के लिए:

INSERT INTO metadata(table_name) SHOW TABLES /* does not work */

क्या मानक चयन कथन का उपयोग करके तालिका के नाम प्राप्त करने का एक तरीका है, कुछ इस प्रकार है:

INSERT INTO metadata(table_name) SELECT name FROM table_names /* what should table_names be? */

जवाबों:


381

सभी तालिकाओं के नाम प्राप्त करने के लिए:

SELECT table_name FROM information_schema.tables;

किसी विशिष्ट डेटाबेस उपयोग से तालिकाओं का नाम प्राप्त करने के लिए:

SELECT table_name FROM information_schema.tables
WHERE table_schema = 'your_database_name';

अब, मूल प्रश्न का उत्तर देने के लिए, इस प्रश्न का उपयोग करें:

INSERT INTO table_name
    SELECT table_name FROM information_schema.tables
        WHERE table_schema = 'your_database_name';

अधिक जानकारी के लिए देखें: http://dev.mysql.com/doc/refman/5.0/en/information-schema.html


144

प्रयत्न:

select * from information_schema.tables

देखें: http://dev.mysql.com/doc/refman/5.0/en/information-schema.html


4
यह सही दिशा में इंगित करता है, लेकिन वास्तव में सवाल का जवाब नहीं देता है। अधिक विस्तृत हो सकता है।
मुरिलो गार्सिया

@MuriloGarcia info_schema SQL मानक का हिस्सा है। पोस्टग्रैज के पास भी है। SQLite के लिए, आप में देखोsqlite_master
peterchaula

LIKE के नाम से तालिकाओं को लाना: TABLE_NAME FROM से सूचना_schema.tables का चयन करें जहाँ TABLE_NAME LIKE का '% कीवर्ड%' है;
जेरेट बारनेट

19

यदि हमारे पास कई डेटाबेस हैं और हमें किसी विशेष डेटाबेस के लिए सभी तालिकाओं का चयन करने की आवश्यकता है जिसका उपयोग हम TABLE_SCHEMAडेटाबेस नाम को परिभाषित करने के लिए कर सकते हैं :

select table_name from information_schema.tables where TABLE_SCHEMA='dbname';


12

INFORMATION_SCHEMA तालिका का उपयोग करने के अलावा, निम्न तालिका में सम्मिलित करने के लिए SHOW TABLES का उपयोग करने के लिए

<?php
 $sql = "SHOW TABLES FROM $dbname";
 $result = mysql_query($sql);
 $arrayCount = 0
 while ($row = mysql_fetch_row($result)) {
  $tableNames[$arrayCount] = $row[0];
  $arrayCount++; //only do this to make sure it starts at index 0
 }
 foreach ($tableNames as &$name {
  $query = "INSERT INTO metadata (table_name) VALUES ('".$name."')";
  mysql_query($query);
 }
?>

8

TABLESडेटाबेस में तालिका पर एक नज़र डालें information_schema। इसमें आपके अन्य डेटाबेस में तालिकाओं के बारे में जानकारी है। लेकिन अगर आप साझा होस्टिंग पर हैं, तो संभवतः आपके पास इसकी पहुंच नहीं है।



5
SELECT table_name 
FROM information_schema.tables 
WHERE table_schema = 'DATABASE'

3
मैं आपसे अनुरोध कर सकता हूं कि कृपया अपने उत्तर के आसपास कुछ और संदर्भ जोड़ दें। कोड-केवल उत्तर समझना मुश्किल है। यह पूछने वाले और भविष्य के पाठकों दोनों की मदद करेगा यदि आप अपनी पोस्ट में अधिक जानकारी जोड़ सकते हैं।
RBT

4

MySQL INFORMATION_SCHEMA.TABLESतालिका में दोनों तालिकाओं (अस्थायी नहीं बल्कि स्थायी) और दृश्य के बारे में डेटा है। स्तंभ TABLE_TYPEपरिभाषित करता है कि क्या यह तालिका या दृश्य (तालिकाओं TABLE_TYPE='BASE TABLE'और विचारों के लिए TABLE_TYPE='VIEW') के लिए रिकॉर्ड है । इसलिए यदि आप अपने स्कीमा (डेटाबेस) तालिकाओं से देखना चाहते हैं तो केवल निम्नलिखित प्रश्न हैं:

SELECT *
FROM information_schema.tables
WHERE table_type='BASE TABLE'
AND table_schema='myschema'

2

मुझे लगता है कि यह इंगित करना उपयोगी हो सकता है कि यदि आप उन तालिकाओं का चयन करना चाहते हैं जिनमें विशिष्ट शब्द हैं, तो आप इसे SELECT(इसके बजाय SHOW) का उपयोग करके आसानी से कर सकते हैं । नीचे क्वेरी आसानी से "कीवर्ड" वाले तालिकाओं की खोज को नीचे बताती है

SELECT *
FROM information_schema.tables
WHERE table_name like "%keyword%"

0

तालिका के नाम प्राप्त करने का एक और सरल तरीका है

SHOW TABLES FROM <database_name>

2
इस सवाल का जवाब बिल्कुल नहीं है।
माइक चेम्बरलेन

मदद की जब मैं कुछ के लिए खोज कि सवाल का शीर्षक मारा।
शीहे जांग

नहीं, यह अच्छा नहीं है क्योंकि यह केवल mysql टूल्स में टेबल दिखाता है।
टीएस

0

यह नीचे क्वेरी मेरे लिए काम किया। यह डेटाबेस, टेबल, कॉलम के नाम, डेटा प्रकार और कॉलम की गिनती दिखाने में सक्षम हो सकता है।

**select table_schema Schema_Name ,table_name TableName,column_name ColumnName,ordinal_position "Position",column_type DataType,COUNT(1) ColumnCount
FROM information_schema.columns
GROUP by table_schema,table_name,column_name,ordinal_position, column_type;**

-3

सम्मिलित करने के लिए, अद्यतन करें और हटाएं निम्नलिखित करें:

$teste = array('LOW_PRIORITY', 'DELAYED', 'HIGH_PRIORITY', 'IGNORE', 'INTO', 'INSERT', 'UPDATE', 'DELETE', 'QUICK', 'FROM');
$teste1 = array("\t", "\n", "\r", "\0", "\x0B");
$strsql = trim(str_ireplace($teste1, ' ', str_ireplace($teste, '', $strsql)));
$nomeTabela = substr($strsql, 0, strpos($strsql, ' '));

print($nomeTabela);
exit;

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