在 PostgreSQL 中,模式(Schema)是一种用于组织和命名数据库对象的方式。一个数据库可以包含多个模式,每个模式可以包含表、视图、函数等对象。模式有助于组织和隔离不同的数据库对象,防止对象之间的冲突。以下是关于 PostgreSQL 模式的一些基本概念和操作:

1. 默认模式(Public Schema):

在 PostgreSQL 中,默认的模式是 public。如果在创建对象时没有指定模式,则它们将被放置在 public 模式下。

2. 创建模式:
CREATE SCHEMA schema_name;

这将创建一个名为 schema_name 的新模式。

3. 创建表时指定模式:
CREATE TABLE schema_name.table_name (
    column1 datatype,
    column2 datatype,
    -- 其他列
);

这将在名为 schema_name 的模式下创建一个名为 table_name 的表。

4. 查询对象时指定模式:
SELECT * FROM schema_name.table_name;

这将查询名为 schema_name 的模式下的 table_name 表。

5. 更改默认搜索路径:

默认情况下,PostgreSQL 在查询对象时会搜索 public 模式。你可以更改默认搜索路径:
SET search_path TO schema_name, public;

这将更改搜索路径,使之首先搜索 schema_name,然后是 public。

6. 查看模式下的对象:
SELECT * FROM information_schema.tables WHERE table_schema = 'schema_name';

这将显示名为 schema_name 的模式下的所有表的信息。你可以将 tables 替换为其他对象类型,如 views、columns 等。

7. 删除模式:
DROP SCHEMA schema_name;

要删除模式,必须首先确保模式为空(不包含任何对象),或者使用 CASCADE 选项强制删除并删除模式中的所有对象。
DROP SCHEMA schema_name CASCADE;

示例:
-- 创建模式
CREATE SCHEMA company_data;

-- 在模式中创建表
CREATE TABLE company_data.employees (
    employee_id SERIAL PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50)
);

-- 查询模式中的表
SELECT * FROM company_data.employees;

-- 更改默认搜索路径
SET search_path TO company_data, public;

-- 查看模式中的对象
SELECT * FROM information_schema.tables WHERE table_schema = 'company_data';

-- 删除模式
DROP SCHEMA company_data CASCADE;

这是一些关于 PostgreSQL 模式的基本概念和操作。模式对于组织和隔离数据库对象非常有用,尤其在有多个用户或应用程序共享同一个数据库时。


转载请注明出处:http://www.zyzy.cn/article/detail/8129/PostgreSQL