在数据库管理中,通过命令行查看数据库信息是开发者和运维人员的基本技能,无论是调试查询、监控资源还是管理数据结构,都需要熟练掌握相关命令,不同数据库系统(如MySQL、PostgreSQL、SQL Server、MongoDB等)的查看命令存在差异,本文将详细介绍主流数据库的查看方法,并通过表格对比核心命令,帮助读者快速上手。
关系型数据库查看命令
MySQL/MariaDB
MySQL作为最流行的开源关系型数据库,其查看命令主要通过SHOW
和SELECT
实现。
- 查看所有数据库:
SHOW DATABASES;
(需具备SHOW DATABASES
权限,普通用户可能仅能看到部分数据库)。 - 查看当前数据库:
SELECT DATABASE();
或执行USE database_name;
后通过SELECT @@database;
查看。 - 查看数据库表:进入目标数据库后,
SHOW TABLES;
列出所有表。 - 查看表结构:
DESCRIBE table_name;
或SHOW COLUMNS FROM table_name;
,返回字段名、数据类型、是否允许NULL、键类型(如PRI主键、UNI唯一键)等信息。 - 查看表数据:
SELECT * FROM table_name LIMIT 10;
(建议加LIMIT
避免全表查询,尤其是大表)。 - 查看数据库大小:通过系统表查询:
SELECT table_schema AS 'Database', ROUND(SUM(data_length + index_length)/1024/1024, 2) AS 'Size(MB)' FROM information_schema.tables GROUP BY table_schema;
PostgreSQL
PostgreSQL的查看命令需结合系统视图和元命令(需在psql
终端中使用)。
- 查看所有数据库:
l
(元命令)或SELECT datname FROM pg_database;
(SQL查询)。 - 查看当前数据库:
c database_name
切换数据库后,执行dt
查看表,或SELECT current_database();
。 - 查看表结构:
d table_name
显示字段、类型、约束(如主键、外键),或SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_name = 'table_name';
。 - 查看表数据:
SELECT * FROM table_name LIMIT 10;
,PostgreSQL支持EXPLAIN ANALYZE SELECT * FROM table_name;
查看执行计划。 - 查看数据库大小:
SELECT pg_database_size('database_name') AS 'Size(B)';
或SELECT pg_size_pretty(pg_database_size('database_name'));
格式化输出。
SQL Server
SQL Server使用系统存储过程和系统视图查看信息。
- 查看所有数据库:
EXEC sp_databases;
或SELECT name FROM sys.databases;
(包含系统数据库和用户数据库)。 - 查看当前数据库:
SELECT DB_NAME();
,切换数据库用USE database_name;
。 - 查看表:
SELECT name FROM sys.tables;
或EXEC sp_tables;
。 - 查看表结构:
EXEC sp_columns table_name;
或SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_name = 'table_name';
。 - 查看表数据:
SELECT TOP 10 * FROM table_name;
(SQL Server使用TOP
限制行数)。 - 查看数据库大小:
SELECT name AS 'Database', size/128.0 AS 'Size(MB)' FROM sys.master_files WHERE database_id = DB_ID('database_name');
非关系型数据库查看命令
MongoDB
作为文档型数据库,MongoDB通过mongosh
shell操作。
- 查看所有数据库:
show dbs;
(仅显示包含数据的数据库)。 - 查看当前数据库:
db;
或use database_name;
切换后,db.getName();
。 - 查看集合(表):
show collections;
或db.getCollectionNames();
。 - 查看集合数据:
db.collection_name.find().limit(10);
(默认返回前20条,.pretty()
可格式化JSON输出)。 - 查看集合统计信息:
db.collection_name.stats();
(包含文档数、存储大小、索引信息)。 - 查看数据库状态:
db.stats();
(显示数据库大小、集合数量等)。
Redis
Redis是键值型数据库,查看命令需结合数据类型。
- 查看所有数据库:
SELECT 0-15
(Redis默认16个数据库,编号0-15),INFO keyspaces
查看各数据库统计信息。 - 查看当前数据库键:
KEYS *;
(生产环境慎用,可能阻塞服务器,推荐SCAN 0
分页遍历)。 - 查看键类型:
TYPE key_name;
(返回string、hash、list等)。 - 查看键值:
GET key_name;
(字符串)、HGETALL key_name;
(哈希)、LRANGE key_name 0 -1;
(列表)。 - 查看数据库大小:
DBSIZE;
(返回当前数据库键数量)。
主流数据库查看命令对比表
数据库类型 | 查看所有数据库 | 查看当前数据库 | 查看表/集合 | 查看表/集合结构 | 查看数据 |
---|---|---|---|---|---|
MySQL | SHOW DATABASES; |
SELECT DATABASE(); |
SHOW TABLES; |
DESCRIBE table; |
SELECT * FROM table LIMIT 10; |
PostgreSQL | l 或 SELECT datname FROM pg_database; |
c db 或 SELECT current_database(); |
dt 或 SELECT name FROM sys.tables; |
d table 或 SELECT column_name FROM information_schema.columns; |
SELECT * FROM table LIMIT 10; |
SQL Server | EXEC sp_databases; |
SELECT DB_NAME(); |
EXEC sp_tables; |
EXEC sp_columns table; |
SELECT TOP 10 * FROM table; |
MongoDB | show dbs; |
db; 或 use db; |
show collections; |
db.collection.stats(); |
db.collection.find().limit(10); |
Redis | INFO keyspaces; |
SELECT db; |
KEYS *; 或 SCAN 0; |
TYPE key; |
GET key; /HGETALL key; 等 |
注意事项
- 权限控制:普通用户可能无法查看所有数据库或系统表(如MySQL的
mysql
系统库),需管理员授权。 - 性能影响:避免在大表上直接执行
SELECT *
或KEYS *
,可能导致内存溢出或服务阻塞,建议结合LIMIT
、SCAN
等分页操作。 - 工具差异:部分数据库需通过特定客户端查看(如PostgreSQL的
psql
、MongoDB的mongosh
),确保环境配置正确。
相关问答FAQs
Q1:为什么执行SHOW DATABASES;
时看不到所有数据库?
A:这通常是由于权限不足,普通用户默认只能看到自己有权限访问的数据库,若需查看所有数据库,需管理员授予SHOW DATABASES
权限(MySQL中可通过GRANT SHOW DATABASES ON *.* TO 'user'@'host';
授权),部分数据库(如PostgreSQL)的系统数据库(如postgres
、template1
)默认仅对超级用户可见。
Q2:如何快速查看某个数据库的表数量和总数据量?
A:不同数据库方法不同:
- MySQL:
SELECT table_schema AS 'Database', COUNT(table_name) AS 'Table Count', ROUND(SUM(table_rows)/1000000, 2) AS 'Approximate Data(Million Rows)' FROM information_schema.tables WHERE table_schema = 'your_database_name' GROUP BY table_schema;
- PostgreSQL:
SELECT current_database() AS 'Database', COUNT(*) AS 'Table Count', pg_size_pretty(pg_database_size(current_database())) AS 'Total Size';
- MongoDB:
db.stats(); // 返回集合数量、文档数、存储大小等
通过上述命令可快速掌握数据库规模,辅助容量规划。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/14408.html