PostgreSQL 教程: CREATE SCHEMA 创建模式

九月 12, 2023

摘要:在本教程中,您将学习如何使用 PostgreSQL 的CREATE SCHEMA语句在数据库中创建新模式。

目录

PostgreSQL CREATE SCHEMA 语句概述

CREATE SCHEMA语句允许您在当前数据库中创建新模式

下面说明了CREATE SCHEMA语句的语法:

CREATE SCHEMA [IF NOT EXISTS] schema_name;

在这个语法中:

  • 首先,在CREATE SCHEMA关键字后指定模式的名称。模式名称在当前数据库中必须是唯一的。
  • 其次,在使用IF NOT EXISTS选项时,仅当新模式不存在的情况下,才有条件地创建新模式。在不使用IF NOT EXISTS选项的情况下,尝试创建已存在的新模式将导致错误。

请注意,要执行CREATE SCHEMA语句,您必须具有当前数据库的CREATE权限。

您还可以为用户创建模式:

CREATE SCHEMA [IF NOT EXISTS] 
AUTHORIZATION username;

在这种情况下,模式将与username具有相同的名称。

PostgreSQL 还允许您使用单个语句创建模式和对象列表,例如表和视图,如下所示:

CREATE SCHEMA schema_name
    CREATE TABLE table_name1 (...)
    CREATE TABLE table_name2 (...)
    CREATE VIEW view_name1
        SELECT select_list FROM table_name1;

请注意,每个子命令不以分号 (;) 结尾。

PostgreSQL CREATE SCHEMA 示例

让我们看一些使用CREATE SCHEMA语句的例子来更好地理解。

1) 使用 CREATE SCHEMA 创建新模式的示例

以下语句使用CREATE SCHEMA语句创建一个名为marketing的新模式:

CREATE SCHEMA marketing;

以下语句返回当前数据库中的所有模式:

SELECT * 
FROM pg_catalog.pg_namespace
ORDER BY nspname;

该图显示了输出:

postgresql create schema example

2) 使用 CREATE SCHEMA 为用户创建模式的示例

首先,创建一个新角色,名为john

CREATE ROLE john 
LOGIN
PASSWORD 'Postgr@s321!';

其次,为john创建一个模式:

CREATE SCHEMA AUTHORIZATION john;

第三,创建一个名为doe的新模式,该模式将由john拥有:

CREATE SCHEMA IF NOT EXISTS doe AUTHORIZATION john;

3) 使用 CREATE SCHEMA 创建模式及其对象的示例

以下示例使用CREATE SCHEMA语句创建一个名为scm的新模式。它还创建一个名为deliveries的表和一个属于scm模式的名为delivery_due_list的视图:

CREATE SCHEMA scm 
    CREATE TABLE deliveries(
        id SERIAL NOT NULL, 
        customer_id INT NOT NULL, 
        ship_date DATE NOT NULL
    )
    CREATE VIEW delivery_due_list AS 
        SELECT ID, ship_date 
        FROM deliveries 
        WHERE ship_date <= CURRENT_DATE;

在本教程中,您学习了如何使用 PostgreSQL 的CREATE SCHEMA语句在数据库中创建新模式。