PostGreSQL模式schema

news/2024/7/9 19:52:42 标签: postgresql, 数据库

问题引入

        之前在做数据库设计时,经常会忽略schema模式,直接在数据库下的public模式下建立各类数据表。如果数据表命名不够规范,后期寻找某张表时就会比较麻烦。通过   所幸,PostgreSQL 的模式schema管理,可以对这个问题进行优化。

PGSQL-模式

模式schema

     模式(SCHEMA)可以看着是一个表的集合, 一个模式可以包含视图、索引、数据类型、函数和操作符等

        其实PG数据库提供的默认数据库模板就是按照模式schema对具备不同功能的数据表进行区分的,

postgres-模板数据库

        可以看到:相同的对象名称可以被用于不同的模式中而不会出现冲突,例如 public和 topology都可以包含名为 mytable 的表。虽然模式类似于操作系统层的目录,但是模式不能嵌套。

使用模式schema的优点

        使用模式的优势:

  • 允许多个用户使用一个数据库并且不会互相干扰。

  • 数据库对象组织成逻辑组以便更容易管理。

  • 第三方应用的对象可以放在独立的模式中,这样它们就不会与其他对象的名称发生冲突。

        简单来讲,模式schema为了我们提供了一种按照某种业务规则管理数据表的便捷途径。

如何使用模式?

        ①创建模式:create schema schema_name

create schema myschema;

        ②在模式下创建数据表tb_user

create TABLE myschema.tb_user(
	user_id INTEGER NOT NULL,
	user_name VARCHAR(64) NOT NULL,
	pass_word VARCHAR(32) NOT NULL,
	create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
	remark VARCHAR(128),
	PRIMARY KEY (user_id)
);

       接着指定主键user_id自增,需要为其创建自增序列:CREATE SEQUENCE,同样,我们的自增序列位于myschema模式下,

# 创建序列
CREATE SEQUENCE myschema.user_sequence START 1;
# 修改tb_user表的主键id为自增序列myschema.user_sequence
ALTER TABLE myschema.tb_user ALTER COLUMN user_id SET DEFAULT nextval('myschema.user_sequence'::regclass)

        ③在模式下创建视图:view_user

CREATE VIEW myschema.view_tb_user AS
SELECT user_id,user_name,create_time,remark FROM myschema.tb_user

         ④添加数据,验证ID主键自增以及create_time默认值是否生效,并通过视图查询数据,

INSERT INTO myschema.tb_user(user_name,pass_word,remark)
VALUES ('user_1',md5('123456'),'普通用户')

        查询视图,

SELECT * FROM myschema.view_tb_user

        ⑤删除模式:

情况1:删除一个模式以及其中包含的所有对象:

DROP SCHEMA myschema;

情况2:删除一个模式以及其中包含的所有对象:

DROP SCHEMA myschema CASCADE;

        如果直接删除myschema会报错, 

        我们使用级联删除,成功删除,

DROP SCHEMA myschema CASCADE


http://www.niftyadmin.cn/n/5130486.html

相关文章

归结原理、归结演绎推理

主要内容 归结演绎推理范式子句与子句集将谓词公式转化为子句集命题逻辑鲁宾逊归结原理 归结演绎推理 定理证明的实质是对前提P和结论Q证明P →Q的永真性应用反证法,欲证明P →Q,只要证明 P∧~Q 等价于 F鲁宾逊归结原理对机械化推理有重大突破鲁宾逊归…

R2R 的一些小tip

批次间控制器(Run-to-run Controller),以应对高混合生产的挑战。将最优配方参数与各种工业特征相关联的模型是根据历史数据离线训练的。预测的最优配方参数在线用于调整工艺条件。 批次控制(R2R control)是一种先进的工艺控制技术,可在运行(如批次或晶圆…

4.OsgEarth加载Mbtiles

愿你出走半生,归来仍是少年&#xff01; 1.Mbtiles mbtiles是在GIS开发中最常用的瓦片包格式&#xff0c;在移动端、桌面端都是常用的格式。 2.代码 通过OsgEarth的MBTilesImageLayer图层进行加载&#xff0c;也是封装成了一个静态的方法方便调用。 /// <summary&g…

「网络编程」数据链路层协议_ 以太网协议学习

「前言」文章内容是数据链路层以太网协议的讲解。 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、以太网协议简介二、以太网帧格式&#xff08;报头&#xff09;三、MTU对上层协议的影响四、ARP协议4.1 ARP协议的作用4.2 ARP协议报头 一、以太网协…

redis6.0源码分析:简单动态字符串sds

文章目录 sds简介与特性(面试)sds结构模型数据结构苛刻的数据优化数据结构优化uintX_t对齐填充 sds优势O(1)时间复杂度获取字符串长度二进制安全杜绝缓冲区溢出自动扩容机制——sdsMakeRoomFor方法 内存重分配次数优化 sds最长是多少部分API源码解读创建sds释放sds sds简介与特…

Maven第四章:配置文件详解

Maven第四章:配置文件详解 前言 本章重点知识:掌握setting.xml配置文件以及pom.xml配置文件 setting.xml配置文件 setting.xml文件用于配置Maven的运行环境,包括本地仓库的位置、镜像仓库的配置、认证信息等。以下是setting.xml文件的详细说明: 文件位置: 全局配置文件:…

嵌入式中C++ 编程习惯与编程要点分析

以良好的方式编写C class 假设现在我们要实现一个复数类complex&#xff0c;在类的实现过程中探索良好的编程习惯。 ① Header(头文件)中的防卫式声明 complex.h: # ifndef __COMPLEX__ # define __COMPLEX__ class complex {} # endif 防止头文件的内容被多次包含。 …

Ansible 安装部署及常用命令和17个模块详解

目录 Ansible 1 ansible 环境安装部署 1.1 管理端安装 ansible 1.2 ansible 目录结构 1.3 配置主机清单 1.4 配置密钥对验证 2 ansible 命令行模块 2.1 command 模块 2.2 shell 模块 2.3 cron 模块 2.4 user 模块 2.5 group 模块 2.6 copy 模块 2.7 file 模块 2.…