当前位置: 首页 > news >正文

揭阳网站制作服务禹城网站设计

揭阳网站制作服务,禹城网站设计,常州网站建设找思创,网站后台如何上传ico图标1. 存储过程与函数 1.1 创建存储过程 存储过程是一组预编译的SQL语句,可以简化复杂的操作。以下是一个简单的存储过程示例: CREATE OR REPLACE FUNCTION add_user(username VARCHAR, email VARCHAR) RETURNS VOID AS $$ BEGININSERT INTO users (use…

1. 存储过程与函数

1.1 创建存储过程

存储过程是一组预编译的SQL语句,可以简化复杂的操作。以下是一个简单的存储过程示例:

CREATE OR REPLACE FUNCTION add_user(username VARCHAR, email VARCHAR) 
RETURNS VOID AS $$
BEGININSERT INTO users (username, email) VALUES (username, email);
END;
$$ LANGUAGE plpgsql;

调用存储过程:

SELECT add_user('john_doe', 'john@example.com');

1.2 创建函数

函数与存储过程类似,但函数可以返回值。以下是一个计算两数之和的函数示例:

CREATE OR REPLACE FUNCTION add_numbers(a INTEGER, b INTEGER) 
RETURNS INTEGER AS $$
BEGINRETURN a + b;
END;
$$ LANGUAGE plpgsql;

调用函数:

SELECT add_numbers(10, 20);

2. 触发器

触发器是在特定事件发生时自动执行的程序,如插入、更新或删除操作。

2.1 创建触发器

以下示例展示了在 users 表上创建触发器,当插入新用户时,自动记录时间戳到 audit_log 表:

CREATE TABLE audit_log (id SERIAL PRIMARY KEY,username VARCHAR(50),action VARCHAR(50),action_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);CREATE OR REPLACE FUNCTION log_user_action() 
RETURNS TRIGGER AS $$
BEGININSERT INTO audit_log (username, action) VALUES (NEW.username, 'INSERT');RETURN NEW;
END;
$$ LANGUAGE plpgsql;CREATE TRIGGER after_user_insert
AFTER INSERT ON users
FOR EACH ROW
EXECUTE FUNCTION log_user_action();

3. 扩展与模块

PostgreSQL 提供了丰富的扩展,可以扩展其功能。

3.1 安装与使用扩展

例如,安装并使用 pgcrypto 扩展进行数据加密:

CREATE EXTENSION pgcrypto;-- 使用 pgcrypto 进行数据加密
INSERT INTO users (username, email, password) VALUES 
('alice', 'alice@example.com', crypt('mypassword', gen_salt('bf')));

3.2 常用扩展

  • PostGIS: 提供地理空间数据支持。
  • pg_trgm: 支持基于三元组的字符串相似性搜索。
  • hstore: 键值对存储。

4. 全文搜索

PostgreSQL 提供了强大的全文搜索功能,用于高效地搜索文本数据。

4.1 配置全文搜索

创建表并插入数据:

CREATE TABLE documents (id SERIAL PRIMARY KEY,content TEXT
);INSERT INTO documents (content) VALUES 
('PostgreSQL is a powerful, open-source object-relational database system.'),
('It has a proven architecture and runs on all major operating systems.');

4.2 创建全文搜索索引

创建全文搜索索引以提高搜索效率:

CREATE INDEX idx_gin_content ON documents USING GIN (to_tsvector('english', content));

4.3 执行全文搜索

使用 to_tsvectorto_tsquery 函数进行全文搜索:

SELECT * FROM documents
WHERE to_tsvector('english', content) @@ to_tsquery('PostgreSQL & powerful');

5. JSON 数据类型与操作

PostgreSQL 支持存储和操作 JSON 数据类型,非常适合处理半结构化数据。

5.1 存储 JSON 数据

创建包含 JSON 数据类型的表:

CREATE TABLE products (id SERIAL PRIMARY KEY,name VARCHAR(100),attributes JSONB
);INSERT INTO products (name, attributes) VALUES 
('Laptop', '{"brand": "Dell", "memory": "16GB", "storage": "512GB"}'),
('Smartphone', '{"brand": "Apple", "memory": "4GB", "storage": "64GB"}');

5.2 查询 JSON 数据

使用操作符和函数查询 JSON 数据:

-- 查询 brand 为 Dell 的产品
SELECT * FROM products
WHERE attributes->>'brand' = 'Dell';-- 查询并提取存储大小
SELECT name, attributes->>'storage' AS storage FROM products;

6. 案例实战

6.1 练习题目

  1. 创建一个存储过程,插入订单数据并更新库存。
  2. 创建一个触发器,在删除订单时记录日志。
  3. 使用 pgcrypto 加密用户密码。
  4. 为产品描述字段创建全文搜索索引并执行搜索。

6.2 示例答案

  1. 创建存储过程:
CREATE OR REPLACE FUNCTION add_order(user_id INTEGER, product_id INTEGER, quantity INTEGER) 
RETURNS VOID AS $$
BEGININSERT INTO orders (user_id, product_id, quantity) VALUES (user_id, product_id, quantity);UPDATE products SET stock = stock - quantity WHERE id = product_id;
END;
$$ LANGUAGE plpgsql;
  1. 创建触发器:
CREATE TABLE order_log (id SERIAL PRIMARY KEY,order_id INTEGER,action VARCHAR(50),action_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);CREATE OR REPLACE FUNCTION log_order_deletion() 
RETURNS TRIGGER AS $$
BEGININSERT INTO order_log (order_id, action) VALUES (OLD.id, 'DELETE');RETURN OLD;
END;
$$ LANGUAGE plpgsql;CREATE TRIGGER after_order_delete
AFTER DELETE ON orders
FOR EACH ROW
EXECUTE FUNCTION log_order_deletion();
  1. 使用 pgcrypto 加密用户密码:
CREATE EXTENSION pgcrypto;UPDATE users SET password = crypt('newpassword', gen_salt('bf')) WHERE username = 'alice';
  1. 创建全文搜索索引并执行搜索:
CREATE INDEX idx_gin_description ON products USING GIN (to_tsvector('english', description));SELECT * FROM products
WHERE to_tsvector('english', description) @@ to_tsquery('powerful & laptop');

系统文章目录:

PostgreSQL 简介与基础(一)

PostgreSQL 基本SQL语法(二)

PostgreSQL 高级SQL查询(三)

PostgreSQL 数据库设计与管理(四)

PostgreSQL 高级功能(五)

PostgreSQL 性能优化与调优(六)

PostgreSQL 高可用性与灾难恢复策略(七)

PostgreSQL 安全性与权限管理(八)

PostgreSQL 高级功能与扩展(九)

PostgreSQL 分区表与并行查询(十)

PostgreSQL 索引优化与性能调优(十一)

PostgreSQL 日志管理与故障排查(十二)

PostgreSQL 高可用性与容错性(十三)

http://www.yayakq.cn/news/131266/

相关文章:

  • 方城网站设计阜阳网站开发招聘
  • 学做馒头面包哪个网站好重庆新闻头条最新消息
  • 好看的商城网站软件开发和网站开发哪个更好
  • 产品盘网站建设wordpress 转载 插件
  • 以企业介绍为主做外贸网站好吗网站建设需要什么内容
  • 手机营销网站模板网站关于我们什么意思
  • 网站开发vs2013济南市城乡建设部网站首页
  • 邵阳建设银行网站是多少多语种网站营销
  • 有没有什么专门做兼职的网站吗wordpress菜单右上角
  • 中国建设网官方网站硅灰设计页面纸张大小
  • 漳浦网站建设网站架构分析怎么写
  • 广东省住房和城乡建设厅官方网站营口网站建设单位
  • 网站制作技巧017互联网家装
  • 如何网站点击率印度网站建设多少钱
  • 国产一级a做爰片免费网站买了虚拟主机怎么建设网站
  • 国内做设备网站哪些好动漫制作专业能报名的专插本学校
  • 国外设计导航网站大全wamp 网站开发首先做什么
  • 博山网站建设yx718中山 网站关键词优化
  • 网站打模块外发加工网站源码下载
  • 广西中小型营销型网站建设公司wordpress增加下载功能
  • 河南网站开发wordpress图片自动alt
  • 襄阳网站建设品牌网站死链检查
  • 建设银行黄陂支行网站平面设计与广告设计
  • 同一个服务器可以做多个网站医院网站建设方案招标文件
  • 阿里服务器租用价格表seo建设
  • 用jquery做的书籍网站百度推广账户怎么开
  • 网站首页不被收录优惠券网站怎么做的
  • 设计师赚钱的网站梧州网站设计理念
  • 河北邢台路桥建设公司网站小程序开发教程推荐
  • 加盟做网站网站导航是什么