PostgreSQL基本使用Schema

参考文章:PostgreSQL基本使用(3)Schema_pg数据库查询schema-CSDN博客

PostgreSQL 模式(Schema)可以理解为是一个表的集合(或者所属者)。

例如:
在 MySQL 中Scheam 是库;所有的表都 “存放” 在一个库中。使用时,用库.表名;假若有 testdb 库,其内有 client 表,统计表行数SQL:select count(*) from testdb.client;
在 Oracle 中Schema 是用户;所有的表都 “存放” 在一个用户中。使用时,用用户.表名;假若有 fid_test 用户,期内有 client_info 表,查询 ID 为 100 的用户详细信息:select * from fid_test.client_info where id = 100;

那在 PostgreSQL 中,Schema 就是 Schema(不是库、也不是用户)。在使用时,使用schema名.表名称

使用模式(Schema)的优势:

  • 允许多个用户使用一个数据库并且不会互相干扰
  • 将数据库对象组织成逻辑组以便更容易管理
  • 第三方应用的对象可以放在独立的模式中,这样他们就不会与其他对象的名称发生冲突

默认的Schema

每创建一个数据库,其都会有一个默认的schema,名称为 public


创建 Schema

除了默认的 public 这个Schema,也可以创建自定义的Schema,SQL 语句如下:

 create schema testschema;

在 testschema 中创建表. 

create table testschema.test(id int, name varchar(200));

若添加数据时,不指定 testschema 则表达的意思是给 public 这个schema中的 test 表添加数据。
由于当前 mydb2 这个数据库中的 public 中无 test 表,所以:若不指定 testschema将会报错


查看 Schema

要查看当前 PostgreSQL 数据库中的所有 schema,你可以使用以下 SQL 查询:

SELECT schema_name
FROM information_schema.schemata;

这将返回一个结果集,其中包含数据库中所有 schema 的名称。请注意,这将包括 PostgreSQL 系统 schema(例如 publicpg_catalog 等)和用户自定义 schema(如果有的话)。


删除 Schema

在 PostgreSQL 中,如果删除一个 schema(模式),默认情况下其中的表也会被删除。然而,这个行为可以通过设置删除模式时的选项来改变。

在 PostgreSQL 中,删除 schema 可以使用 DROP SCHEMA 命令。如果你使用以下方式删除一个 schema,那么其中的表也会被一并删除:

DROP SCHEMA schema_name CASCADE;

在上述命令中,CASCADE 选项表示级联删除,即删除 schema 的同时也删除其包含的所有对象,包括表、视图、函数等。

如果你不想删除表,而只是删除 schema,可以使用以下方式:

DROP SCHEMA schema_name;

这样会删除 schema,但是如果其中有任何对象(如表),则删除操作会失败并显示错误消息,因为默认情况下 PostgreSQL 不允许删除一个非空的 schema

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值