Skip to content

sql-show-databases

在使用数据库服务器时,一个常见的首要步骤是查看有哪些可用的数据库或模式(schema)。列出这些资源的命令在不同的关系型数据库管理系统(RDBMS)之间有所不同。本教程将介绍如何在 MySQL、PostgreSQL 和 SQL Server 等主流系统中列出这些资源。

“数据库”和“模式(schema)”这两个术语可能会令人困惑,因为它们在不同系统中的含义有所不同:

  • 在 MySQL 中:“数据库”是表和其他对象的集合。CREATE SCHEMA 命令是 CREATE DATABASE 的同义词。本质上,它们是同一个概念。
  • 在 PostgreSQL 和 SQL Server 中:单个服务器实例包含多个“数据库”。在每个数据库中,你可以创建多个“模式(schema)”。模式是一个命名空间,其中包含表、视图、函数等。这提供了一种在单个数据库内分组和组织对象的方式,对于管理权限和多租户应用程序非常有用。

MySQL 提供了一个简单直接的命令来列出服务器上的所有数据库。

SHOW DATABASES [LIKE 'pattern' | WHERE expr];

SHOW SCHEMAS 是 SHOW DATABASES 的别名,功能完全相同。

SHOW DATABASES;

这将生成你拥有权限查看的数据库列表。

Database
information_schema
mysql
performance_schema
sys
production_db
test_db

查找名称以“test”开头的数据库:

SHOW DATABASES LIKE 'test%';
Database (test%)
test_db

3. 在 PostgreSQL 中列出数据库和模式

Section titled “3. 在 PostgreSQL 中列出数据库和模式”

在 PostgreSQL 中,列出数据库和模式是不同的操作。

在 psql 命令行界面中,你可以使用一个元命令:

\l -- or \list

或者,你可以直接使用 SQL 查询系统目录:

SELECT datname FROM pg_database;

连接到特定数据库后,你可以列出其模式。在 psql 中:

\dn -- or \dnS to include system schemas

使用 SQL 查询:

SELECT schema_name FROM information_schema.schemata;

4. 在 SQL Server 中列出数据库和模式

Section titled “4. 在 SQL Server 中列出数据库和模式”

SQL Server 也将数据库和模式的概念分开。

你可以查询 sys.databases 目录视图:

SELECT name, database_id, create_date FROM sys.databases;

或者,你可以使用内置的存储过程:

EXEC sp_databases;

要列出当前连接数据库中的模式:

SELECT name AS schema_name, schema_id FROM sys.schemas;

information_schema 是一组 ANSI SQL 标准视图,提供了关于数据库中所有表、视图、列和存储过程的信息。它是一种可移植、与供应商无关的获取元数据的方式。

以可移植的方式列出所有模式(或在 MySQL 中是“数据库”)

SELECT schema_name FROM information_schema.schemata;

尽管此查询适用于许多平台,但特定于供应商的命令通常更常用,并且可能提供额外的系统特定详细信息。然而,了解 information_schema 对于编写更具可移植性的数据库脚本非常有价值。