আমার মাইএসকিউএলে থাকা টেবিলগুলির সংখ্যা গণনা করার জন্য প্রশ্ন


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
আমি কেবল এটি উপস্থাপক ব্যবহার করার সময়ই এটি কাজ করেছিলাম। আমি যদি পুরো ক্যোয়ারী / সাবকোয়ারি চালানোর চেষ্টা করি তবে একটি সিনট্যাক্স ত্রুটি হয়েছিল।
গায়া

2
@ গাইয়া দুঃখিত, আমি ভুলে গেছি যে ডেটাবেস একটি সংরক্ষিত শব্দ ছিল। সুতরাং, আমি ডাবল উক্তি দিয়ে শব্দটি ঘিরে ফেলেছি।
রোল্যান্ডোমাইএসকিউএলডিবিএ

পছন্দ করুন
জে. স্কট এবলিন

@ জে.স্কোটএলব্লিন আমার ডিবিএ.এসই পোস্টটি ব্যবহার করে দেখুন: dba.stackexchange.com/questions/31801/…
রোল্যান্ডো মাইএসকিউএলডিবিএ

ধারাটিতে সাবকোয়ারি কেন 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 বছর আগে যুক্ত হওয়া গ্রহণযোগ্য উত্তরে এটি হ'ল।

ভাল এবং অনন্য উত্তর এবং জিনিস খুব সহজ আদেশ। নিখুঁত
অজয় 2707

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

এটি কি ডিবিতে সমস্ত টেবিলের জন্য?


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.