用SQL命令查看Mysql数据库大小

要想知道每个数据库的大小的话,步骤如下:

1、进入information_schema 数据库(存放了其他的数据库的信息)

use information_schema;

 

2、查询所有数据的大小:

select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables;

 

3、查看指定数据库的大小:

比如查看数据库home的大小

select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='home';

 

4、查看指定数据库的某个表的大小

比如查看数据库home中 members 表的大小

select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='home' and table_name='members';

 

详细出处参考:http://www.frostsky.com/2011/08/mysql-query-size/

<think> 我们被要求查看MySQL中的数据库。在MySQL中,查看数据库命令是`SHOW DATABASES;`。这条命令会列出MySQL服务器上所有的数据库。 此外,我们也可以使用`SHOW SCHEMAS;`,因为SCHEMAS是DATABASES的同义词。 如果我们想查看特定的数据库,比如匹配某个模式的数据库名,可以使用`SHOW DATABASES LIKE 'pattern';`。 下面给出一些示例: </think> ### 查看 MySQL 数据库SQL 命令详解 在 MySQL 中,查看数据库信息主要使用以下 SQL 命令: #### 1. 查看所有数据库列表 ```sql SHOW DATABASES; ``` **解释**: - 显示 MySQL 服务器中的所有数据库 - 结果包含系统数据库如 `information_schema`, `mysql`, `performance_schema`, `sys` #### 2. 查看特定数据库结构 ```sql SHOW CREATE DATABASE database_name; ``` **示例**: ```sql SHOW CREATE DATABASE mydb; ``` **输出**: ``` +----------+---------------------------------------------------------------+ | Database | Create Database | +----------+---------------------------------------------------------------+ | mydb | CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ | +----------+---------------------------------------------------------------+ ``` **解释**: - 显示创建指定数据库的完整 SQL 语句 - 包含字符集、排序规则等详细信息 #### 3. 查看当前使用的数据库 ```sql SELECT DATABASE(); ``` **解释**: - 返回当前会话中正在使用的数据库名称 - 如果未选择任何数据库,返回 `NULL` #### 4. 查看数据库中的表 ```sql SHOW TABLES FROM database_name; ``` **示例**: ```sql SHOW TABLES FROM information_schema; ``` **输出**: ``` +---------------------------------------+ | Tables_in_information_schema | +---------------------------------------+ | CHARACTER_SETS | | COLLATIONS | | COLLATION_CHARACTER_SET_APPLICABILITY | | ... | +---------------------------------------+ ``` #### 5. 查看数据库字符集和排序规则 ```sql SELECT SCHEMA_NAME AS 'Database', DEFAULT_CHARACTER_SET_NAME AS 'Charset', DEFAULT_COLLATION_NAME AS 'Collation' FROM information_schema.SCHEMATA; ``` **输出**: ``` +--------------------+---------+--------------------+ | Database | Charset | Collation | +--------------------+---------+--------------------+ | information_schema | utf8 | utf8_general_ci | | mysql | latin1 | latin1_swedish_ci | | performance_schema | utf8 | utf8_general_ci | | sys | utf8 | utf8_general_ci | | mydb | utf8mb4 | utf8mb4_0900_ai_ci | +--------------------+---------+--------------------+ ``` #### 6. 查看数据库大小(存储空间) ```sql SELECT table_schema AS 'Database', SUM(data_length + index_length) / 1024 / 1024 AS 'Size (MB)' FROM information_schema.TABLES GROUP BY table_schema; ``` **输出**: ``` +--------------------+---------------+ | Database | Size (MB) | +--------------------+---------------+ | information_schema | 0.15625000 | | mysql | 2.51562500 | | performance_schema | 0.00000000 | | sys | 0.01562500 | | mydb | 12.54687500 | +--------------------+---------------+ ``` #### 7. 查看数据库权限信息 ```sql SELECT Db AS 'Database', User, Host, CONCAT_WS(', ', IF(Select_priv='Y', 'SELECT', ''), IF(Insert_priv='Y', 'INSERT', ''), IF(Update_priv='Y', 'UPDATE', ''), IF(Delete_priv='Y', 'DELETE', ''), IF(Create_priv='Y', 'CREATE', ''), IF(Drop_priv='Y', 'DROP', ''), IF(Grant_priv='Y', 'GRANT', ''), IF(References_priv='Y', 'REFERENCES', ''), IF(Index_priv='Y', 'INDEX', ''), IF(Alter_priv='Y', 'ALTER', ''), IF(Create_tmp_table_priv='Y', 'CREATE TEMP TABLES', ''), IF(Lock_tables_priv='Y', 'LOCK TABLES', ''), IF(Create_view_priv='Y', 'CREATE VIEW', ''), IF(Show_view_priv='Y', 'SHOW VIEW', ''), IF(Create_routine_priv='Y', 'CREATE ROUTINE', ''), IF(Alter_routine_priv='Y', 'ALTER ROUTINE', ''), IF(Execute_priv='Y', 'EXECUTE', ''), IF(Event_priv='Y', 'EVENT', ''), IF(Trigger_priv='Y', 'TRIGGER', '') ) AS 'Privileges' FROM mysql.db ORDER BY Db, User, Host; ``` ### 实用命令组合示例 #### 查看所有数据库及其大小和字符集 ```sql SELECT s.SCHEMA_NAME AS 'Database', COALESCE(ROUND(SUM(t.DATA_LENGTH + t.INDEX_LENGTH) / 1024 / 1024, 2), 0) AS 'Size (MB)', s.DEFAULT_CHARACTER_SET_NAME AS 'Charset', s.DEFAULT_COLLATION_NAME AS 'Collation' FROM information_schema.SCHEMATA s LEFT JOIN information_schema.TABLES t ON s.SCHEMA_NAME = t.TABLE_SCHEMA GROUP BY s.SCHEMA_NAME, s.DEFAULT_CHARACTER_SET_NAME, s.DEFAULT_COLLATION_NAME ORDER BY s.SCHEMA_NAME; ``` #### 查看数据库创建时间(MySQL 8.0+) ```sql SELECT SCHEMA_NAME AS 'Database', CREATE_TIME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys'); ``` #### 使用命令行工具查看数据库 ```bash # 登录MySQL mysql -u username -p # 查看所有数据库 mysql> SHOW DATABASES; # 切换到特定数据库 mysql> USE database_name; # 查看当前数据库中的表 mysql> SHOW TABLES; # 查看数据库状态信息 mysql> SHOW STATUS LIKE 'Uptime'; ``` ### 注意事项 1. 需要适当的权限才能查看某些数据库信息 2. `information_schema` 数据库包含所有元数据信息 3. MySQL 5.7 和 MySQL 8.0 在系统表结构上有所不同 4. 对于生产环境,建议使用 `SELECT` 查询而非 `SHOW` 命令以便于程序处理结果 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值