MySQL में मेरे पास मौजूद तालिकाओं की संख्या को गिनने की क्वेरी


129

मैं अपने पास मौजूद तालिकाओं की संख्या बढ़ा रहा हूं और अपने डेटाबेस में तालिकाओं की संख्या को गिनने के लिए एक त्वरित कमांड लाइन क्वेरी करने के लिए मैं कभी-कभी उत्सुक हूं। क्या यह संभव है? यदि हां, तो प्रश्न क्या है?

जवाबों:


296
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbName';

स्रोत

यह मेरा है:

USE databasename; 
SHOW TABLES; 
SELECT FOUND_ROWS();

मैंने उपरोक्त 2 विधियों की कोशिश की है और जब मैंने उपयोग की FOUND_ROWS()गई तालिकाओं की संख्या उन तालिकाओं की संख्या से अधिक थी जो मैंने पहली विधि का उपयोग करते समय वापस लौटा दी थीं।
अमृत

यह भी विचार गिनता है, यदि आप केवल टेबल चाहते हैं, तो AND table_type = 'BASE TABLE'
जोड़िए

बस use databasename;कमांड के बारे में एक नोट । यदि डेटाबेस वास्तव में बड़ा है, तो कमांड लंबे प्रतीक्षा समय के साथ निष्पादित कर सकता है। उस स्थिति में, लॉगिन विकल्प -ए यानी: के साथ किया जाना चाहिए mysql -uroot -p -A, और कमांड तेजी से काम करेगा।
अज़ुरेंक

24

यदि आप सभी डेटाबेसों की गणना करना चाहते हैं, तो कृपया यह प्रयास करें:

SELECT IFNULL(table_schema,'Total') "Database",TableCount 
FROM (SELECT COUNT(1) TableCount,table_schema 
      FROM information_schema.tables 
      WHERE table_schema NOT IN ('information_schema','mysql') 
      GROUP BY table_schema WITH ROLLUP) A;

यहाँ एक नमूना रन है:

mysql> SELECT IFNULL(table_schema,'Total') "Database",TableCount
    -> FROM (SELECT COUNT(1) TableCount,table_schema
    ->       FROM information_schema.tables
    ->       WHERE table_schema NOT IN ('information_schema','mysql')
    ->       GROUP BY table_schema WITH ROLLUP) A;
+--------------------+------------+
| Database           | TableCount |
+--------------------+------------+
| performance_schema |         17 |
| Total              |         17 |
+--------------------+------------+
2 rows in set (0.29 sec)

कोशिश करो !!!


1
मुझे केवल तभी काम करना पड़ा जब मैंने केवल उपशम का उपयोग किया। यदि मैंने पूरी क्वेरी / सबक्वेरी को चलाने की कोशिश की तो सिंटैक्स त्रुटि हुई।
Gaia

2
@Gaia क्षमा करें, मैं भूल गया कि डेटाबेस एक आरक्षित शब्द था। इसलिए, मैंने डबल कोट्स के साथ शब्द को घेर लिया।
रोलैंडम्यूसीडीडीबीए

@RolandoMySQLDBA यह मीठा है, क्या आपके पास सभी db के कुल db के आकार को भी दिखाने के लिए एक है?
जे। स्कॉट एल्बेलिन

: @ J.ScottElblein मेरी DBA.SE पद का प्रयास करें dba.stackexchange.com/questions/31801/...
RolandoMySQLDBA

FROMउपवाक्य उपवाक्य में क्यों ? सिर्फ क्यों नहीं SELECT IFNULL(table_schema, 'Total') Database, COUNT(*) TableCount FROM information_schema.tables WHERE table_schema NOT IN ('information_schema','mysql') GROUP BY table_schema WITH ROLLUP?
अर्ग्युअल


4

यह आपको mysql में सभी डेटाबेस के नाम और टेबल काउंट देगा

SELECT TABLE_SCHEMA,COUNT(*) FROM information_schema.tables group by TABLE_SCHEMA;

3

तालिकाओं की संख्या की गणना करने के लिए:

USE your_db_name;    -- set database
SHOW TABLES;         -- tables lists
SELECT FOUND_ROWS(); -- number of tables

कभी-कभी आसान काम करेंगे।


यह वही है जो 5 साल पहले स्वीकार किए गए उत्तर में है।

अच्छा और अनोखा जवाब और बात बहुत आसान है। परिपूर्ण
अजय

3
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'database_name';

यह उन लोगों के लिए बहुत आत्म-व्याख्यात्मक है जो इस प्रश्न से परिचित हैं, लेकिन उन लोगों के लिए जो इस स्पष्टीकरण के साथ एक बहुत अच्छी व्याख्या होगी।
मिकमेकुसा

यह इस मौजूदा जवाब का सिर्फ एक दोहराव लगता है ।
पेंग

रिकॉर्ड के लिए: याद रखें कि कुल एलिमेंट में डेटाबेस ऑब्जेक्ट के रूप में टेबल्स और व्यू शामिल हैं।
marcode_ely

1

डेटाबेस की तालिकाओं को गिनने के कई तरीके हो सकते हैं। मेरा पसंदीदा इस पर है:

SELECT
    COUNT(*)
FROM
    `information_schema`.`tables`
WHERE
    `table_schema` = 'my_database_name'
;

1
select name, count(*) from DBS, TBLS 
where DBS.DB_ID = TBLS.DB_ID 
group by NAME into outfile '/tmp/QueryOut1.csv' 
fields terminated by ',' lines terminated by '\n';

इस सवाल का जवाब नहीं है।
माइक

1

कमांड लाइन से:

mysql -uroot -proot  -e "select count(*) from 
information_schema.tables where table_schema = 'database_name';"

ऊपर उदाहरण में रूट यूजरहोस्ट और पासवर्ड है, जिसे लोकलहोस्ट पर होस्ट किया गया है।


0
SELECT COUNT(*) FROM information_schema.tables

यह DBs में सभी तालिकाओं के लिए है?


-1

आशा है कि यह मदद करता है, और एक डेटाबेस में केवल टेबल की संख्या देता है

Use database;

SELECT COUNT(*) FROM sys.tables;

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