sql-show-databases
SQL - 列出数据库和模式
Section titled “SQL - 列出数据库和模式”在使用数据库服务器时,一个常见的首要步骤是查看有哪些可用的数据库或模式(schema)。列出这些资源的命令在不同的关系型数据库管理系统(RDBMS)之间有所不同。本教程将介绍如何在 MySQL、PostgreSQL 和 SQL Server 等主流系统中列出这些资源。
1. 理解数据库与模式
Section titled “1. 理解数据库与模式”“数据库”和“模式(schema)”这两个术语可能会令人困惑,因为它们在不同系统中的含义有所不同:
- 在 MySQL 中:“数据库”是表和其他对象的集合。CREATE SCHEMA 命令是 CREATE DATABASE 的同义词。本质上,它们是同一个概念。
- 在 PostgreSQL 和 SQL Server 中:单个服务器实例包含多个“数据库”。在每个数据库中,你可以创建多个“模式(schema)”。模式是一个命名空间,其中包含表、视图、函数等。这提供了一种在单个数据库内分组和组织对象的方式,对于管理权限和多租户应用程序非常有用。
2. 在 MySQL 中列出数据库
Section titled “2. 在 MySQL 中列出数据库”MySQL 提供了一个简单直接的命令来列出服务器上的所有数据库。
SHOW DATABASES [LIKE 'pattern' | WHERE expr];SHOW SCHEMAS 是 SHOW DATABASES 的别名,功能完全相同。
示例:显示所有数据库
Section titled “示例:显示所有数据库”SHOW DATABASES;这将生成你拥有权限查看的数据库列表。
| Database |
|---|
| information_schema |
| mysql |
| performance_schema |
| sys |
| production_db |
| test_db |
示例:使用 LIKE 过滤数据库
Section titled “示例:使用 LIKE 过滤数据库”查找名称以“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;列出模式(在当前数据库中)
Section titled “列出模式(在当前数据库中)”连接到特定数据库后,你可以列出其模式。在 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;列出模式(在当前数据库中)
Section titled “列出模式(在当前数据库中)”要列出当前连接数据库中的模式:
SELECT name AS schema_name, schema_id FROM sys.schemas;5. 使用标准 information_schema
Section titled “5. 使用标准 information_schema”information_schema 是一组 ANSI SQL 标准视图,提供了关于数据库中所有表、视图、列和存储过程的信息。它是一种可移植、与供应商无关的获取元数据的方式。
以可移植的方式列出所有模式(或在 MySQL 中是“数据库”)
SELECT schema_name FROM information_schema.schemata;尽管此查询适用于许多平台,但特定于供应商的命令通常更常用,并且可能提供额外的系统特定详细信息。然而,了解 information_schema 对于编写更具可移植性的数据库脚本非常有价值。