• PostGreSQL模式schema


    问题引入

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

    PGSQL-模式

    模式schema

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

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

    postgres-模板数据库

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

    使用模式schema的优点

            使用模式的优势:

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

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

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

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

    如何使用模式?

            ①创建模式:create schema schema_name

    create schema myschema;

            ②在模式下创建数据表tb_user

    1. create TABLE myschema.tb_user(
    2. user_id INTEGER NOT NULL,
    3. user_name VARCHAR(64) NOT NULL,
    4. pass_word VARCHAR(32) NOT NULL,
    5. create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    6. remark VARCHAR(128),
    7. PRIMARY KEY (user_id)
    8. );

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

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

            ③在模式下创建视图:view_user

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

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

    1. INSERT INTO myschema.tb_user(user_name,pass_word,remark)
    2. 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

  • 相关阅读:
    Linux 下的 /proc 目录介绍
    jvm crash 的原因及解决办法
    【C++模拟实现】反向迭代器的实现
    HarmonyOS应用API手势方法-PinchGesture
    废纸篓清空的文件怎么恢复?
    10年程序员职业生涯感悟—写给正在迷茫的你
    Windbg分析高内存占用问题
    掌握这五点建议,Linux学习不再难
    pands使用openpyxl引擎实现EXCEL条件格式
    flink的分组聚合、over聚合、窗口聚合对比
  • 原文地址:https://blog.csdn.net/weixin_43524214/article/details/134092399