用户
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




