主题
数据库与模式
数据库(Database)概述
在 PostgreSQL 中,一个数据库是逻辑上的数据容器,包含一组独立的表、视图、函数等对象。
- 每个数据库是独立命名空间,不能跨库查询(除非使用 FDW)
- 一个 PostgreSQL 实例可包含多个数据库
- 数据库创建语法:
sql
CREATE DATABASE mydb;
模式(Schema)的作用
模式(Schema)是数据库内的逻辑结构,用于组织对象,如表、视图、函数等。
- 类似文件系统中的文件夹
- 同一个数据库可以包含多个 schema
- 默认 schema 是
public
- 创建 schema 的语法:
sql
CREATE SCHEMA sales;
使用 Schema 的好处
- 组织结构清晰:便于模块化管理(如 finance, hr, sales 等)
- 权限控制:可基于 schema 设置访问权限
- 多版本支持:可以存放同名对象(如多个版本的函数)
- 支持多租户:每个租户一个 schema,实现隔离
Schema 示例
sql
-- 创建 schema 并授权给某用户
CREATE SCHEMA hr AUTHORIZATION alice;
-- 在 schema 中创建表
CREATE TABLE hr.employees (
id SERIAL PRIMARY KEY,
name TEXT,
hired_at DATE
);
-- 查询指定 schema 下的表
SELECT * FROM hr.employees;
设置默认搜索路径
可以通过 search_path
设置默认 schema:
sql
SET search_path TO hr, public;
小结
PostgreSQL 的 schema 提供了灵活的对象分组方式,使数据库结构更清晰,并增强了安全性和可扩展性。在多用户、多项目环境中尤为重要。