暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据库对象创建

六个哈哈 2024-03-20
96

用户

CREATE USER 用户名 WITH PASSWORD '密码';

角色

CREATE ROLE my_role;

表空间

CREATE TABLESPACE tablespace_name ADD DATAFILE 'filepath'; #示例 CREATE TABLESPACE mytablespace ADD DATAFILE '/var/lib/postgresql/data/mytablespace.dat';

数据库

CREATE DATABASE dbname OWNER username ENCODING 'UTF-8'; #指定数据库得默认表空间 ALTER DATABASE dbname SET TABLESPACE new_tablespace;

drop table if exists abcd; create table if not exists abcd( obj_id varchar(10) primary key, name varchar(10) unique, addr varchar(10) not ull, mark numeric(2) check(mark >0) default 0, num01 numeric(2) reference other_table_name(column) ); #约束创建*********************** #唯一索引 CREATE UNIQUE INDEX idx_users_email ON users (email); #非空约束 CREATE INDEX index_name ON table_name (column_name) WHERE column_name IS NOT NULL; #检查约束 ALTER TABLE products ADD CHECK (price > 0); #主键索引 CREATE INDEX users_id_pk ON users (id); #外键 ALTER TABLE table1_name ADD CONSTRAINT FK_id FOREIGN KEY(id) REFERENCES table2_name(id); #约束创建*********************** #索引创建*********************** CREATE INDEX idx_users_email ON users (email); CREATE INDEX idx_users_lastname_firstname ON users (last_name, first_name); #函数索引 CREATE OR REPLACE FUNCTION my_function(x INTEGER) RETURNS INTEGER AS $$ BEGIN RETURN x * x; END; $$ LANGUAGE plpgsql; CREATE INDEX my_function_index ON my_table (my_column) USING btree (my_function(my_column)); #索引创建***********************

#分区表

#这将创建一个名为sales的表,其中包含一个日期列、一个金额列和一个客户ID列。这个表将根据日期列的值进行分区。 CREATE TABLE sales ( date date, amount decimal, customer_id int ) PARTITION BY RANGE (date); #分区索引,这将创建一个名为idx_orders_order_date的分区索引,该索引将根据order_date列的值进行范围分区 CREATE INDEX idx_orders_order_date ON orders (order_date) PARTITION BY RANGE(order_date);

物化视图

CREATE MATERIALIZED VIEW IF NOT EXISTS mv_example WITH ( -- 物化视图选项 ) AS SELECT columns FROM tables WHERE conditions; # 该WITH-clause是相同 CREATE TABLE 。它允许您定义存储参数,例如 autovacuum 行为FILLFACTOR等。下面是一个例子: CREATE MATERIALIZED VIEW mat_view_2 WITH (autovacuum_enabled = false) AS SELECT grp, avg(data), count(*) FROM t_demo GROUP BY 1; SELECT 2 #刷新物化视图 REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name

视图

CREATE VIEW IF NOT EXISTS view_name AS SELECT column1, column2, ... FROM table_name WHERE condition;

序列

CREATE SEQUENCE IF NOT EXISTS sequence_name MINVALUE min_value -- 序列的最小值 MAXVALUE max_value -- 序列的最大值,如果未设置,则无上限 INCREMENT BY increment_value -- 序列的每次增长量 START WITH start_value -- 序列的起始值 CACHE cache_value -- 缓存大小,负数表示不缓存,默认为1 CYCLE | NOCYCLE -- 当达到最大值后是否循环,NOCYCLE为默认选项 ; #设置当前序列从多少开始 select setval('"schema"."sequence_name"',2222,true);

函数

CREATE OR REPLACE FUNCTION my_function(x INTEGER) RETURNS INTEGER AS $$ BEGIN RETURN x * x; END; $$ LANGUAGE plpgsql;

存储过程

CREATE OR REPLACE PROCEDURE procedure_name(parameter1 datatype, parameter2 datatype) LANGUAGE plpgsql AS $$ BEGIN -- 这里是你的代码 END; $$;

触发器

CREATE TRIGGER trigger_name AFTER INSERT ON table_name FOR EACH ROW EXECUTE PROCEDURE function_name();
最后修改时间:2024-03-21 11:44:52
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论