ฉันมีจำนวนตารางเพิ่มขึ้นและบางครั้งฉันก็อยากรู้อยากเห็นเพียงแค่ทำแบบสอบถามบรรทัดคำสั่งอย่างรวดเร็วเพื่อนับจำนวนตารางในฐานข้อมูลของฉัน เป็นไปได้หรือไม่ ถ้าเป็นเช่นนั้นแบบสอบถามคืออะไร?
ฉันมีจำนวนตารางเพิ่มขึ้นและบางครั้งฉันก็อยากรู้อยากเห็นเพียงแค่ทำแบบสอบถามบรรทัดคำสั่งอย่างรวดเร็วเพื่อนับจำนวนตารางในฐานข้อมูลของฉัน เป็นไปได้หรือไม่ ถ้าเป็นเช่นนั้นแบบสอบถามคืออะไร?
คำตอบ:
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbName';
นี่เป็นของฉัน:
USE databasename;
SHOW TABLES;
SELECT FOUND_ROWS();
AND table_type = 'BASE TABLE'
use databasename;
คำสั่ง หากฐานข้อมูลมีขนาดใหญ่มากคำสั่งสามารถดำเนินการโดยใช้เวลารอนาน ในกรณีนี้ควรทำการล็อกอินด้วยอ็อพชัน -A คือ: mysql -uroot -p -A
และคำสั่งจะทำงานได้อย่างรวดเร็ว
ในกรณีที่คุณต้องการนับฐานข้อมูลทั้งหมดพร้อมข้อมูลสรุปโปรดลองทำดังนี้:
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)
ให้มันลอง !!!
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
?
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbo' and TABLE_TYPE='BASE TABLE'
สิ่งนี้จะให้ชื่อและจำนวนตารางของฐานข้อมูลทั้งหมดใน mysql ของคุณ
SELECT TABLE_SCHEMA,COUNT(*) FROM information_schema.tables group by TABLE_SCHEMA;
ในการนับจำนวนโต๊ะให้ทำดังนี้:
USE your_db_name; -- set database
SHOW TABLES; -- tables lists
SELECT FOUND_ROWS(); -- number of tables
บางครั้งสิ่งที่ง่ายจะทำผลงาน
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'database_name';
อาจมีหลายวิธีในการนับตารางของฐานข้อมูล รายการโปรดของฉันคือ:
SELECT
COUNT(*)
FROM
`information_schema`.`tables`
WHERE
`table_schema` = 'my_database_name'
;
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';
จากบรรทัดคำสั่ง:
mysql -uroot -proot -e "select count(*) from
information_schema.tables where table_schema = 'database_name';"
ในตัวอย่างข้างต้นรูทคือชื่อผู้ใช้และรหัสผ่านโฮสต์บน localhost
หวังว่านี่จะช่วยได้และส่งคืนเฉพาะจำนวนตารางในฐานข้อมูล
Use database;
SELECT COUNT(*) FROM sys.tables;
sys.tables
ไม่มีอยู่ในmysql
FOUND_ROWS()
มากกว่าจำนวนตารางที่ส่งคืนเมื่อฉันใช้วิธีแรก