一个数据库包含一个或多个模式,而模式又包含表、序列、函数等,不同的模式可以包含相同名称的表、序列、函数等。模式本质上是命名空间,就像人的姓氏一样。一个用户只要有权限,连接到数据库后,可一次访问该数据库的任何模式下的对象。新建一个数据库会默认创建一个public模式,后续操作数据库对象如果没指定模式,则默认为public。例如之前创建的school数据库

school=# \dn+
                          List of schemas
  Name  |  Owner   |  Access privileges   |      Description      
--------+----------+----------------------+------------------------
 public | postgres | postgres=UC/postgres+| standard public schema
        |          | =UC/postgres         |
(1 row)

一、创建模式

语法:

school=# \h create schema

Command:     CREATE SCHEMA

Description: define a new schema

Syntax:

CREATE SCHEMA schema_name [ AUTHORIZATION user_name ] [ schema_element [ ... ] ]

CREATE SCHEMA AUTHORIZATION user_name [ schema_element [ ... ] ]

CREATE SCHEMA IF NOT EXISTS schema_name [ AUTHORIZATION user_name ]

CREATE SCHEMA IF NOT EXISTS AUTHORIZATION user_name

参数:

schema_name

模式名称,缺省使用user_name,且不能以pg_开头。

user_name

模式属于的用户,缺省为执行命令的用户。

schema_element

一条SQL语句,即创建模式后,在该模式下创建一个数据库对象。当前支持的子句有CREATE

TABLE, CREATE VIEW, CREATE INDEX, CREATE SEQUENCE, CREATE TRIGGER and GRANT。

IF NOT EXISTS

如果模式已存在,使用该选项不会抛出错误。使用此选项不能使用schema_element子句。

示例

create schema schema_test authorization test1 create table tbl_test(a int) create view view_test as select * from tbl_test;

访问模式下数据库对象在模式和数据库对象之间加一个句点即可

school=# select * from schema_test.tbl_test ;

 a

---

(0 rows)

school=# select * from schema_test.view_test ;

 a

---

(0 rows)

二、模式修改

语法:

school=# \h alter schema

Command:     ALTER SCHEMA

Description: change the definition of a schema

Syntax:

ALTER SCHEMA name RENAME TO new_name

ALTER SCHEMA name OWNER TO new_owner

参数:

name

模式名称

new_name

模式新的名称,同样新名称也不能以pg_开头

new_owner

模式新用户名称

示例

school=# alter schema schema_test owner to postgres ;

ALTER SCHEMA

school=# alter schema schema_test rename to test;

ALTER SCHEMA

school=# \dn+

                          List of schemas

  Name  |  Owner   |  Access privileges   |      Description      

--------+----------+----------------------+------------------------

 public | postgres | postgres=UC/postgres+| standard public schema

        |          | =UC/postgres         |

 test   | postgres |                      |

(2 rows)

三、模式删除

语法:

school=# \h drop schema

Command:     DROP SCHEMA

Description: remove a schema

Syntax:

DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

参数:

IF EXISTS

如果模式不存在,不会抛出错误。

name

模式名称。

CASCADE

自动删除该模式下数据库对象。

RESTRICT

如果该模式下还存在数据库对象,则不允许删除该模式,RESTRICT为缺省值。

示例:

school=# drop schema test;

ERROR:  cannot drop schema test because other objects depend on it

DETAIL:  table test.tbl_test depends on schema test

view test.view_test depends on schema test

HINT:  Use DROP ... CASCADE to drop the dependent objects too.
school=# drop schema test cascade;

NOTICE:  drop cascades to 2 other objects

DETAIL:  drop cascades to table test.tbl_test

drop cascades to view test.view_test

DROP SCHEMA

postgresql模式创建、修改、删除的更多相关文章

  1. oracle11g创建修改删除表

    oracle11g创建修改删除表 我的数据库名字: ORCL         密码:123456 1.模式 2.创建表 3.表约束 4.修改表 5.删除表 1.模式 set oracle_sid=OR ...

  2. Linux创建修改删除用户和组

    Linux 创建修改删除用户和组 介绍 在日常的维护过程中创建用户操作用的相对会多一些,但是在这个过程中涉及到的知识点就不单单就是useradd了,接下来就来详细了解账号管理的相关信息. 用户信息 先 ...

  3. MySQL进阶11--DDL数据库定义语言--库创建/修改/删除--表的创建/修改/删除/复制

    /*进阶 11 DDL 数据库定义语言 库和表的管理 一:库的管理:创建/修改/删除 二:表的管理:创建/修改/删除 创建: CREATE DATABASE [IF NOT EXISTS] 库名; 修 ...

  4. Linux基础学习-用户的创建修改删除

    用户添加修改删除 1 useradd添加用户 添加一个新用户hehe,指定uid为3000,家目录为/home/haha [root@qdlinux ~]# useradd -u 3000 -d /h ...

  5. WindowsDOS命令添加/创建/修改/删除服务

    添加服务 sc <server> create [service name] [binPath= ] <option1> <option2>... 在注册表和服务数 ...

  6. Linux 创建修改删除用户和组

    200 ? "200px" : this.width)!important;} --> 介绍 在日常的维护过程中创建用户操作用的相对会多一些,但是在这个过程中涉及到的知识点就 ...

  7. ElasticSearch.net NEST批量创建修改删除索引完整示例

    本示例采用Elasticsearch+Nest 网上查了很多资料,发现用C#调用Elasticsearch搜索引擎的功能代码很分散,功能不完整,多半是非常简单的操作,没有成型的应用示例.比如新增或修改 ...

  8. MySQL入门很简单: 4 创建 修改删除表

    1. 创建表的方法 1)创建表的语法形式 首先,选择数据库: USE 数据库名: 创建表: CREATE TABLE 表名 (属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件 ...

  9. SQL Server 创建 修改 删除数据表

    1. 图形界面方式操作数据表 (1)创建和修改数据表 列名中如果有两个以上单词时,最好用下划线连接,否则可能会给将来的查询维护带来不便.我们公司美国佬做的数据库就很烦,所有列名都有空格,一旦忘记用方括 ...

随机推荐

  1. [oracle] 安装卸载及常见问题

    (1)安装oracle10g备注: ① 检查安装版本是否复合安装主机的硬件要求,避免版本不兼容.如64位的oracle就不能在x86的机器上运行安装. ② 检查安装主机是否满足oracle的硬件要求, ...

  2. Linux如何通过命令查看日志文件的某几行(中间几行或最后几行)

    linux 如何显示一个文件的某几行(中间几行) [一]从第3000行开始,显示1000行.即显示3000~3999行 cat filename | tail -n +3000 | head -n 1 ...

  3. Linux shell 学习

    ·详细介绍Linux shell脚本基础学习(一) ·详细介绍Linux shell脚本基础学习(二) ·详细介绍Linux shell脚本基础学习(三) ·详细介绍Linux shell脚本基础学习 ...

  4. tarcert

     前言:今天在阅读“Web性能权威指南”这本书的时候,发现 tracert 这个命令挺有意思的,在分析网络性能瓶颈的时候也能使用的到,在此就小记一笔以备后用. 1:作用 tracert 是一个简单的网 ...

  5. JavaScript网页换肤

    使网页背景颜色可选黄/粉 <!doctype html> <html> <head><title>网页换肤</title></head ...

  6. Zookeeper安装和配置详解

    http://coolxing.iteye.com/blog/1871009 Zookeeper是什么 http://www.cnblogs.com/yuyijq/p/3391945.html Zoo ...

  7. Linux Shell脚本面试25个经典问答

    1 Shell脚本是什么.它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令.作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Sh ...

  8. Makefile--伪目标 (三)

    原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 一般情况下,Makefile都会有一个clean目标,用于清除编译过程中产生的二进制文件.我们在 ...

  9. Android开发之程序猿必需要懂得Android的重要设计理念2(5.20更新版)

    上篇文章介绍了Android开发的设计理念的一部分,并没有得到博友们的多大认可,仅仅看到了一位博友在以下留言期待下一篇文章的发表,为了这小小的唯一支持.我决定继续把后面的8个要点介绍一下,自己也潜心反 ...

  10. Don‘t talk.Just do it.

    对于算法,自己掌握的还是不多.并且我发现对于一个算法的理解非常重要.也许你会发现你貌似会用某总算法但是,他一旦变形,自己就无从下手. 还有就是对于算法.最好每次都自己敲,这样不仅能添加对于算法的熟度. ...