数据库与模式
数据库(Database)概述
在 PostgreSQL 中,一个数据库是逻辑上的数据容器,包含一组独立的表、视图、函数等对象。
- 每个数据库是独立命名空间,不能跨库查询(除非使用 FDW)
- 一个 PostgreSQL 实例可包含多个数据库
- 数据库创建语法:
CREATE DATABASE mydb;
`
模式(Schema)的作用
模式(Schema)是数据库内的逻辑结构,用于组织对象,如表、视图、函数等。
- 类似文件系统中的文件夹
- 同一个数据库可以包含多个 schema
- 默认 schema 是
public - 创建 schema 的语法:
CREATE SCHEMA sales;
使用 Schema 的好处
- 组织结构清晰:便于模块化管理(如 finance, hr, sales 等)
- 权限控制:可基于 schema 设置访问权限
- 多版本支持:可以存放同名对象(如多个版本的函数)
- 支持多租户:每个租户一个 schema,实现隔离
Schema 示例
-- 创建 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:
SET search_path TO hr, public;
小结
PostgreSQL 的 schema 提供了灵活的对象分组方式,使数据库结构更清晰,并增强了安全性和可扩展性。在多用户、多项目环境中尤为重要。
相关内容
- CTE 与递归 介绍 PostgreSQL 中的公用表表达式 (CTE) 和递归查询,帮助开发者处理复杂的查询场景,简化查询结构和逻辑。
- JSON 操作 介绍 PostgreSQL 中的 JSON 操作,帮助开发者在数据库中高效存储、查询和操作 JSON 数据类型。
- 窗口函数 介绍 PostgreSQL 中的窗口函数,帮助开发者在查询中进行基于窗口的计算,如排名、聚合、分区等操作,以提升查询的灵活性与复杂性。
- 默认值与检查 介绍 PostgreSQL 中的默认值与检查约束,帮助开发者理解如何确保列值的默认填充和对数据进行有效性检查。
- 外键与级联 介绍 PostgreSQL 中的外键与级联操作,帮助开发者理解如何维护表之间的关系,并确保数据一致性。
- 主键与唯一约束 介绍 PostgreSQL 中的主键与唯一约束,帮助开发者理解如何确保数据的唯一性和完整性,避免数据重复。