九月 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;
该图显示了输出:
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
语句在数据库中创建新模式。