建设人才网站,p2p理财网站开发框架,哪家竞价托管专业,阳江招聘网最新招聘信息网美容框问题引入 之前在做数据库设计时#xff0c;经常会忽略schema模式#xff0c;直接在数据库下的public模式下建立各类数据表。如果数据表命名不够规范#xff0c;后期寻找某张表时就会比较麻烦。通过 所幸#xff0c;PostgreSQL 的模式schema管理#xff0c;可以对这个问题…问题引入 之前在做数据库设计时经常会忽略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