PostgreSQL SQL 五大分类详细说明文档(企业级标准版)

从Oracle到PostgreSQL:详细对比与迁移工具说明 本文将从数据类型、SQL语法、存储过程和函数、工具支持等方面对比PostgreSQL和Oracle,并介绍PostgreSQL兼容Oracle的解决方案,包括Ora2Pg和OraFace等工具。在迁移过程中,了解两者之间的数据类型、SQL语法、存储过程和函数的差异是至关重要的。通过使用Ora2Pg和OraFace等工具,可以简化迁移过程,提高兼容性,确保迁移后的数据库能够平稳运行。它提供了一些Oracle特有功能的实现,使得迁移后的PostgreSQL数据库能够更好地兼容Oracle的行为。 阅读详情

以下是专为 Java 后端开发者(尤其是使用 Spring Boot 的团队)精心编写的 PostgreSQL SQL 分类详细说明文档,全面覆盖 SQL 的五大标准分类(DDL、DML、DQL、TCL、DCL),每类均包含:

  • ✅ 定义与作用
  • ✅ 核心内容与企业级必要性
  • ✅ 标准、完整、带中文注释的实战示例
  • ✅ 团队落地建议与最佳实践

全文采用结构化、注释式、可直接用于团队培训的写法,助你推动数据库规范落地。


📜 PostgreSQL SQL 五大分类详细说明文档(企业级标准版)

适用对象:Java 开发、后端架构师、测试工程师、DBA 协作团队
目标:统一团队对 SQL 的认知,规范开发行为,提升数据操作安全性、可维护性与性能。


一、SQL 总体分类说明(五大类)

PostgreSQL 遵循 ANSI SQL 标准,将 SQL 语句分为以下五类:

类别全称中文名称作用是否影响数据内容
DDLData Definition Language数据定义语言定义/修改数据库结构(表、索引、视图等)❌ 不影响数据
DMLData Manipulation Language数据操作语言增删改数据(插入、更新、删除)✅ 影响数据内容
DQLData Query Language数据查询语言查询数据(SELECT)✅ 仅读取数据
TCLTransaction Control Language事务控制语言控制事务的提交、回滚✅ 影响数据持久性
DCLData Control Language数据控制语言控制用户权限与访问安全❌ 影响权限,不影响数据

✅ 重要提示:
在企业开发中,DQL、DML、TCL 是 Java 业务代码中最常接触的三类,而 DDL 通常由 DBA 或 Flyway/Liquibase 管理,DCL 由运维或安全团队控制。


二、DDL(Data Definition Language)—— 数据库结构的“建筑师”

✅ 定义与作用:

用于创建、修改、删除数据库对象(如表、索引、视图、序列、函数等),不操作数据本身。

🔑 核心语句:

  • CREATE:创建对象
  • ALTER:修改对象结构
  • DROP:删除对象
  • TRUNCATE:清空表数据(保留结构)

💡 企业必要性:

  • 所有表结构变更必须通过版本化脚本(如 Flyway)管理,禁止直接在生产库执行 DDL。
  • 使用 TRUNCATE 替代 DELETE FROM 清空大表,性能提升 100 倍。
  • 索引是查询性能的生命线,必须显式创建并命名。

✅ 标准使用示例(带中文注释)

-- 📌 示例1:创建用户表(企业标准模板)
CREATE TABLE users (
    id BIGSERIAL PRIMARY KEY,                      -- ✅ 自增主键(推荐用于整型主键)
    uuid UUID UNIQUE NOT NULL DEFAULT gen_random_uuid(),  -- ✅ 业务主键(分布式系统推荐,避免ID暴露)
    username VARCHAR(50) UNIQUE NOT NULL,          -- ✅ 用户名唯一,非空
    email VARCHAR(100) UNIQUE NOT NULL,            -- ✅ 邮箱唯一,非空
    password_hash TEXT NOT NULL,                   -- ✅ 密码加密后存储
    status VARCHAR(20) DEFAULT 'active' CHECK (status IN ('active', 'inactive', 'banned')),  -- ✅ 枚举约束,避免脏数据
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), -- ✅ 创建时间,自动填充
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), -- ✅ 更新时间,自动填充
    metadata JSONB DEFAULT '{}'::JSONB             -- ✅ 扩展字段,存储动态配置(如用户偏好),支持索引
);

-- 📌 示例2:为常用查询字段创建索引(必须!)
CREATE INDEX idx_users_email ON users (email);                     -- ✅ 加速按邮箱登录查询
CREATE INDEX idx_users_status ON users (status);                   -- ✅ 加速状态筛选
CREATE INDEX idx_users_metadata ON users USING GIN (metadata);     -- ✅ JSONB 必须用 GIN 索引,否则查询极慢!

-- 📌 示例3:创建带外键的订单表(保证数据一致性)
CREATE TABLE orders (
    id BIGSERIAL PRIMARY KEY,
    user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,  -- ✅ 外键约束,用户删除则订单级联删除
    order_no VARCHAR(50) UNIQUE NOT NULL,                           -- ✅ 订单号唯一
    total_amount DECIMAL(10,2) NOT NULL CHECK (total_amount > 0),   -- ✅ 金额必须大于0
    status VARCHAR(20) DEFAULT 'pending' CHECK (status IN ('pending', 'paid', 'shipped', 'cancelled')),
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

-- 📌 示例4:为订单表创建复合索引(加速多条件查询)
CREATE INDEX idx_orders_user_status ON orders (user_id, status);   -- ✅ 加速“某用户所有订单状态”查询

-- 📌 示例5:使用 TRUNCATE 清空表(比 DELETE 快得多)
TRUNCATE TABLE orders RESTART IDENTITY;  -- ✅ 清空所有数据,重置自增ID(慎用!仅用于测试或初始化)

-- 📌 示例6:添加新字段(必须通过 Flyway 管理,禁止手动执行)
ALTER TABLE users ADD COLUMN phone VARCHAR(20) NULL;  -- ✅ 新增可空字段,兼容旧数据

-- 📌 示例7:修改字段类型(谨慎!需数据兼容)
ALTER TABLE users ALTER COLUMN phone TYPE VARCHAR(25);  -- ✅ 扩展手机号长度,需确保无超长数据

-- 📌 示例8:删除表(生产环境禁止直接 DROP!)
-- DROP TABLE users CASCADE;  -- ⚠️ 生产环境禁止执行!应通过状态标记软删除

✅ 团队规范建议:

  • 所有 DDL 脚本必须放在 src/main/resources/db/migration/ 下,使用 Flyway 管理版本。
  • 每个脚本命名格式:V1__create_users_table.sql,V2__add_phone_to_users.sql
  • 生产环境禁止手动执行 ALTER / DROP,必须走变更流程。

三、DML(Data Manipulation Language)—— 数据的“搬运工”

✅ 定义与作用:

用于增删改数据库中的具体数据记录,直接影响业务数据。

🔑 核心语句:

  • INSERT:插入数据
  • UPDATE:更新数据
  • DELETE:删除数据(物理删除)
  • MERGE(PostgreSQL 15+):Upsert(插入或更新)

💡 企业必要性:

  • 禁止物理删除,一律使用 status = 'deleted' 软删除。
  • 批量插入必须使用 INSERT ... VALUES (...), (...), (...),避免循环单条插入。
  • 更新必须带 WHERE 条件,禁止无条件更新。

✅ 标准使用示例(带中文注释)

-- 📌 示例1:插入单条用户数据(推荐使用参数化,Java 中用 PreparedStatement)
INSERT INTO users (username, email, password_hash, metadata)
VALUES 
    ('zhangsan', 'zhangsan@company.com', 'pbkdf2:hash123', '{"theme": "light", "lang": "zh-CN"}');

-- 📌 示例2:批量插入用户(性能关键!Java 中用 MyBatis Batch)
INSERT INTO users (username, email, password_hash, metadata)
VALUES 
    ('lisi', 'lisi@company.com', 'hash456', '{"theme": "dark"}'),
    ('wangwu', 'wangwu@company.com', 'hash789', '{"theme": "light", "notifications": {"email": false}}'),
    ('zhaoliu', 'zhaoliu@company.com', 'hash000', '{}');  -- ✅ 空 JSONB 用 '{}' 表示

-- 📌 示例3:插入时忽略重复(UPSERT,PostgreSQL 9.5+)
INSERT INTO users (username, email, password_hash)
VALUES ('zhangsan', 'zhangsan@company.com', 'new_hash')
ON CONFLICT (email) DO UPDATE SET
    password_hash = EXCLUDED.password_hash,  -- ✅ 冲突时更新密码
    updated_at = NOW();                      -- ✅ 自动更新时间戳

-- 📌 示例4:更新订单状态(必须带 WHERE!)
UPDATE orders
SET status = 'paid', updated_at = NOW()
WHERE order_no = 'ORD202510170001' AND status = 'pending';  -- ✅ 状态校验,避免误更新

-- 📌 示例5:批量更新(更新多个订单状态)
UPDATE orders
SET status = 'cancelled', updated_at = NOW()
WHERE user_id IN (1001, 1002, 1003) AND status = 'pending';

-- 📌 示例6:软删除(推荐!禁止物理删除)
UPDATE users
SET status = 'deleted', updated_at = NOW()
WHERE id = 1001;

-- 📌 示例7:删除(仅用于测试或清理归档表)
DELETE FROM orders WHERE created_at < '2024-01-01';  -- ⚠️ 生产环境慎用!建议用分区 + 定时任务归档

-- 📌 示例8:使用 MERGE(PostgreSQL 15+)实现原子性 Upsert
-- 适用于:用户登录后更新最后登录时间,若不存在则创建
MERGE INTO users AS target
USING (SELECT 'newuser' AS username, 'new@company.com' AS email, 'hash123' AS password_hash) AS source
ON target.email = source.email
WHEN MATCHED THEN
    UPDATE SET password_hash = source.password_hash, updated_at = NOW()
WHEN NOT MATCHED THEN
    INSERT (username, email, password_hash, created_at, updated_at)
    VALUES (source.username, source.email, source.password_hash, NOW(), NOW());

✅ 团队规范建议:

  • 所有 UPDATE / DELETE 必须包含 WHERE 条件,且条件字段必须有索引。
  • 所有删除操作必须改为 UPDATE ... SET status = 'deleted'。
  • 批量操作必须使用 IN (...) 或 JOIN,禁止循环单条执行。
  • Java 中使用 @Modifying + @Transactional 确保 DML 事务一致。

四、DQL(Data Query Language)—— 数据的“侦察兵”

✅ 定义与作用:

仅用于查询数据,不修改任何数据。核心语句只有 SELECT。

🔑 核心能力:

  • 基础查询、条件过滤、排序、分页
  • 多表 JOIN、子查询
  • 聚合函数(COUNT、SUM、AVG)
  • 窗口函数(ROW_NUMBER、RANK)
  • CTE(公共表表达式)
  • JSONB 查询、全文检索

💡 企业必要性:

  • 所有查询必须分页,禁止 SELECT * FROM table。
  • 复杂查询必须用 CTE 拆解,提升可读性。
  • JSONB 字段查询必须用 ->>、@>、? 等操作符,禁止用 LIKE。
  • 生产环境查询必须使用 EXPLAIN ANALYZE 分析执行计划。

✅ 标准使用示例(带中文注释)

-- 📌 示例1:基础查询(必须指定字段,禁止 SELECT *)
SELECT id, username, email, status, created_at
FROM users
WHERE status = 'active'
ORDER BY created_at DESC
LIMIT 10 OFFSET 0;  -- ✅ 分页查询:第1页,每页10条

-- 📌 示例2:多表关联查询(订单 + 用户)
SELECT
    o.order_no,
    o.total_amount,
    u.username,
    u.email
FROM orders o
JOIN users u ON o.user_id = u.id  -- ✅ 显式 JOIN,清晰关联关系
WHERE o.status = 'paid'
ORDER BY o.created_at DESC
LIMIT 20;

-- 📌 示例3:JSONB 查询(查询配置中包含特定值)
SELECT username, metadata->>'theme' AS theme
FROM users
WHERE metadata @> '{"notifications": {"email": true}}';  -- ✅ 包含查询:JSONB 中有 email=true 的通知设置

-- 📌 示例4:JSONB 路径提取(深层嵌套)
SELECT
    username,
    metadata->'settings'->>'theme' AS theme,
    metadata->'settings'->'notifications'->>'push' AS push_enabled
FROM users
WHERE metadata->'settings' ? 'theme';  -- ✅ 检查 JSONB 中是否存在 key 'theme'

-- 📌 示例5:使用 CTE 拆解复杂逻辑(推荐!)
WITH recent_orders AS (
    SELECT user_id, SUM(total_amount) AS total_spent
    FROM orders
    WHERE created_at >= '2025-01-01'
    GROUP BY user_id
    HAVING SUM(total_amount) > 1000  -- ✅ 过滤消费超过1000的用户
),
top_users AS (
    SELECT u.username, ro.total_spent,
           ROW_NUMBER() OVER (ORDER BY ro.total_spent DESC) AS rank
    FROM recent_orders ro
    JOIN users u ON ro.user_id = u.id
)
SELECT username, total_spent, rank
FROM top_users
WHERE rank <= 10;  -- ✅ 查询消费榜前10名

-- 📌 示例6:窗口函数(计算每个用户的订单排名)
SELECT
    user_id,
    order_no,
    total_amount,
    ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY total_amount DESC) AS rank_by_amount,
    RANK() OVER (ORDER BY total_amount DESC) AS global_rank
FROM orders
WHERE status = 'paid'
ORDER BY global_rank;

-- 📌 示例7:全文检索(替代 LIKE,性能提升百倍)
SELECT title, content
FROM articles
WHERE to_tsvector('english', content) @@ to_tsquery('english', 'spring & boot');  -- ✅ 搜索包含“spring”和“boot”的文章

-- 📌 示例8:分页查询(Spring Boot Pageable 标准写法)
-- Java 中:PageRequest.of(page, size, Sort.by("created_at").descending())
SELECT id, username, email
FROM users
ORDER BY created_at DESC
LIMIT 10 OFFSET 20;  -- ✅ 第3页,每页10条

-- 📌 示例9:聚合查询(统计活跃用户数)
SELECT
    COUNT(*) AS total_active_users,
    AVG(total_amount) AS avg_order_amount
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.status = 'active' AND o.status = 'paid';

✅ 团队规范建议:

  • 所有查询必须分页,LIMIT 必须存在。
  • 所有 WHERE 条件字段必须有索引,否则查询慢如蜗牛。
  • 所有 JSONB 查询使用 @>、->>、?,禁止 LIKE '%xxx%'。
  • 复杂查询必须用 CTE 拆解,提升可读性和可维护性。
  • 使用 EXPLAIN (ANALYZE, BUFFERS) 分析慢查询,纳入 CI/CD 监控。

五、TCL(Transaction Control Language)—— 数据一致性的“守护者”

✅ 定义与作用:

控制事务的提交、回滚、保存点,确保多个操作要么全部成功,要么全部失败。

🔑 核心语句:

  • BEGIN / START TRANSACTION:开启事务
  • COMMIT:提交事务(永久生效)
  • ROLLBACK:回滚事务(撤销所有更改)
  • SAVEPOINT:设置保存点(部分回滚)

💡 企业必要性:

  • 所有涉及多个表的写操作(如下单、扣库存、发券)必须用事务。
  • Java 中使用 @Transactional 注解,但需理解底层 TCL 行为。
  • 避免长事务,防止锁表。

✅ 标准使用示例(带中文注释)

-- 📌 示例1:转账事务(经典案例)
BEGIN;  -- ✅ 开启事务

-- 扣款
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;

-- 充值
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;

-- 检查余额是否足够(业务逻辑)
-- 如果这里发生异常,执行 ROLLBACK;否则 COMMIT

COMMIT;  -- ✅ 提交事务:两个操作同时生效

-- 📌 示例2:事务回滚(模拟异常)
BEGIN;

UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 999; -- ❌ 目标用户不存在,可能报错

ROLLBACK;  -- ✅ 回滚:扣款操作也被撤销,数据保持一致

-- 📌 示例3:使用保存点(部分回滚)
BEGIN;

INSERT INTO orders (user_id, order_no, total_amount) VALUES (1, 'ORD001', 200);

SAVEPOINT sp1;  -- ✅ 设置保存点

INSERT INTO orders (user_id, order_no, total_amount) VALUES (2, 'ORD002', 300);

-- 如果后续操作失败,可回滚到 sp1,保留 ORD001
ROLLBACK TO SAVEPOINT sp1;

-- 继续执行其他逻辑
INSERT INTO orders (user_id, order_no, total_amount) VALUES (3, 'ORD003', 150);

COMMIT;  -- ✅ 最终提交:ORD001 和 ORD003 生效,ORD002 被回滚

✅ 团队规范建议:

  • Java 中使用 @Transactional(propagation = REQUIRES_NEW) 控制嵌套事务。
  • 所有 @Transactional 方法必须明确边界,避免跨服务调用导致事务蔓延。
  • 生产环境监控长事务(>5s),配置 log_min_duration_statement = 5000。

六、DCL(Data Control Language)—— 权限的“守门人”

✅ 定义与作用:

控制用户对数据库对象的访问权限,保障数据安全。

🔑 核心语句:

  • GRANT:授予权限
  • REVOKE:收回权限
  • CREATE USER / DROP USER
  • ALTER ROLE

💡 企业必要性:

  • 生产环境禁止使用超级用户(postgres)。
  • 必须按“最小权限原则”分配账号。
  • 分离:应用账号(读写)、报表账号(只读)、运维账号(DDL)。

✅ 标准使用示例(带中文注释)

-- 📌 示例1:创建应用专用用户(禁止使用 postgres)
CREATE USER app_user WITH PASSWORD 'SecureAppPass123!';  -- ✅ 密码必须符合安全策略

-- 📌 示例2:创建只读报表用户
CREATE USER report_reader WITH PASSWORD 'ReadOnlyPass456!';

-- 📌 示例3:授予应用用户对所有表的读写权限
GRANT CONNECT ON DATABASE myapp TO app_user;          -- ✅ 允许连接数据库
GRANT USAGE ON SCHEMA public TO app_user;             -- ✅ 允许访问 public 模式
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO app_user;  -- ✅ 对所有表有读写权限
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO app_user; -- ✅ 对所有序列有使用权(用于自增ID)

-- 📌 示例4:授予报表用户只读权限
GRANT CONNECT ON DATABASE myapp TO report_reader;
GRANT USAGE ON SCHEMA public TO report_reader;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO report_reader;  -- ✅ 只允许查询,禁止修改

-- 📌 示例5:设置默认权限(未来新建表自动授权)
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO report_reader;

-- 📌 示例6:回收权限(如员工离职)
REVOKE SELECT ON orders FROM report_reader;

-- 📌 示例7:查看当前用户权限(调试用)
\du  -- 在 psql 中执行,列出所有角色及其权限

✅ 团队规范建议:

  • 数据库账号必须按角色划分:app_user、report_reader、admin。
  • 所有账号密码必须通过 Vault 或 K8s Secret 管理,禁止写在配置文件中。
  • 生产环境开启 sslmode=require,强制加密连接。
  • 定期审计权限(每季度),使用 pg_roles 和 information_schema.table_privileges 查看。

七、总结:五大 SQL 分类企业级使用对照表

类别核心语句是否影响数据Java 开发者最常接触企业落地建议
DDLCREATE, ALTER, DROP, TRUNCATE❌⚠️ 仅 DBA/Flyway所有变更走 Flyway 版本管理
DMLINSERT, UPDATE, DELETE✅✅✅✅禁止物理删除,必须软删除;批量操作用 IN
DQLSELECT✅(只读)✅✅✅必须分页,禁止 SELECT *,JSONB 用操作符
TCLBEGIN, COMMIT, ROLLBACK✅✅✅✅所有跨表写操作必须事务,Java 用 @Transactional
DCLGRANT, REVOKE❌⚠️ 仅 DBA/运维分离账号,最小权限,密码加密存储

✅ 终极建议:推动团队落地的 5 条铁律

  1. 所有 DDL 必须通过 Flyway 管理,禁止手动执行。
  2. 所有 DELETE 必须改为 UPDATE status = ‘deleted’。
  3. 所有 SELECT 必须分页 + 指定字段,禁止 SELECT *。
  4. 所有涉及多个表的写操作必须用 @Transactional。
  5. 生产环境禁止使用超级用户,必须按角色分配最小权限。

【PostgreSQL教程】PostgreSQL详细介绍 PostgreSQL是一个强大的开源对象关系数据库系统,它使用并扩展了SQL语言,并结合了许多功能,可以安全地存储和扩展最复杂的数据工作负载。PostgreSQL的起源可以追溯到1986年,是加州大学伯克利分校POSTGRES项目的一部分,在核心平台上有超过35年的积极开发。 阅读详情

相关推荐

Halcon实战:5分钟搞定线序颜色检测(附完整代码解析)

本文详细介绍了如何使用Halcon在5分钟内实现工业级线序颜色检测的高效方案。通过机器视觉技术,结合实战项目经验,提供完整的代码解析和优化技巧,帮助开发者快速构建鲁棒性强、准确率高的检测系统,适用于电子制造和汽车线束等行业。

weixin_29098367的博客 440

PostgreSQL 其他常用 SQL 操作深度详解文档

PostgreSQL高级SQL操作指南(Java开发者必备) 摘要:本文为Java开发者提供PostgreSQL五大标准SQL分类外的9个关键高级操作,涵盖序列管理、函数/触发器、递归CTE查询等核心功能。通过标准化示例演示如何实现自动ID生成、业务逻辑下沉、树形结构处理等企业级需求,强调性能优化与团队规范。文档采用清晰中文注释,所有示例可直接用于生产环境,帮助开发者从基础使用进阶到数据库精通,构建高性能、可靠的数据架构。特别针对Spring Boot团队提供最佳实践建议,如自动维护字段、复杂聚合下沉等技术

python15397的博客 932

Tip-Adapter: Training-free Adaption of CLIP for Few-shot Classification

对比式视觉-语言预训练,也称为CLIP,通过大规模的图像-文本对来学习视觉表示,为zero-shot知识迁移展示了新的范式。它在下游任务上展现出令人瞩目的性能,实现了zeri-shot的知识迁移。为了进一步增强CLIP的适应能力,现有方法提出了微调可学习模块的方法,显著提高了少样本情况下的性能,但也引入了额外的训练时间和计算资源。在本文中,我们提出了一种适用于CLIP的无需训练的少样本分类方法,称为Tip-Adapter。

qq_43800752的博客 1161

从零开始学PostgreSQL (七) & PostgreSQL SQL入门

SQL命令一般分为DQL、DML、DDL三类。DQL:数据查询语句,基本就是SELECT查询命令,用于数据查询。DML:Data Manipulation Language,即数据操纵语言,主要用于插入、更新、 删除数据,所以也分为INSERT、UPDATE、DELETE三种语句。DDL:Data Definition Language,即数据定义语言,简单来说,是用于创建、删除、修改表、索引等数据库对象的语言。

CoderChronicle的博客 1542

投第一篇SCIE英文期刊(详细步骤)

一个投稿SCIE英文期刊的过程

weixin_48849679的博客 1万+

第十篇|网络子系统 ②——无损以太网、PFC/ECN、DCQCN 与拥塞可视化

网络部分了解了解

qq_37535542的博客 1873

postgreSQL的sql语句

postgreSQL的sql语句

weixin_57259781的博客 1031

节省人力成本40%!仓储物流AI机器人调度系统实战案例(含路径规划算法与系统架构图)

首先,我们需要定义一个Node类self.x = x # 节点x坐标self.y = y # 节点y坐标self.g = g # 从起点到当前节点的实际成本(g值)self.h = h # 从当前节点到终点的启发式成本(h值)self.f = g + h # 总成本(f值)self.parent = None # 父节点(用于回溯路径)self.task_id = task_id # 任务IDself.priority = priority # 任务优先级(1=最高,5=最低)

小程序开发 948

PostgreSQL 的整体架构详细梳理

以上即 PostgreSQL 从核心进程模型、内存与存储结构,到 SQL 处理、事务复制、扩展分片和运维监控的全栈架构详解,可作为 MySQL 架构文章在 PostgreSQL 领域的对应版本。:支持 Read Committed、Repeatable Read、Serializable(基于可序列化快照隔离 SSI 实现)。:使用 Foreign Data Wrapper 可访问外部数据源(如 MySQL、Kafka、HDFS 等)。:执行计划操作,访问表/索引、进行连接、聚合、排序等。

喝醉酒的小白 1219

Spring AI Alibaba实战训练营-16 NL2SQL (自然语言转 SQL)应用开发指南

本文介绍了一个基于AI的智能BI应用开发项目,主要实现自然语言转SQL(NL2SQL)功能,包含对话模块、MCP模块、向量数据管理模块。项目采用Spring AI Alibaba框架,集成通义千问大模型,支持内存向量库和AnalyticDB向量数据库两种存储方案。重点展示了chat模块的三个控制器实现:AnalyticNl2SqlController用于生产环境,SimpleChatController适用于开发测试,Nl2sqlForGraphController支持基于图的复杂对话流程。系统通过将业务知

program哲学 1583

Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.5 RTC设备编写与实现

4. Linux kernel RTC子系统goldfish_rtc driver分析。电脑,会需要时间,还比如 我们的手机、平板,都需要时间;驱动基本就是应用层需要什么数据你给什么数据就行,基本必须实现的就是。3.2 Linux kernel RTC 设备描述符讲解。中看到他的具体实现,也可以根据他的寄存器描述直接在。5. 将驱动添加进kernel和测试RTC驱动。系统来说,时间是一个非常重要的功能;之类的函数接口,接下来我们就开始讲解如何写。,所以我们直接移植设备树即可。,他的寄存器很简单,你可以从。

DSMGUOGUO的博客 568

PostgreSQL SQL HINT的使用说明

本文来自:http://www.023dns.com/Database_mssql/5974.html PostgreSQL优化器是基于成本的 (CBO) , (当然, 如果开启了GEQO的话, 在关联表数量超过一定阈值后, 会采用GEQO, 这主要是由于在关联表太多的情况下, 穷举法可能带来巨大的PLAN开销, 所以GEQO输出的执行计划不一定是最优的)   本文要谈的和GEQO没什么关系,...

数据库生态圈(RDB & NoSQL & Bigdata)——专注于关系库应用与研究(Oracle & Mysql & Postgresql & SQL Server ) 3079

YOLO26 数据标注工具:LabelImg、Label Studio实战指南:主流标注工具的安装配置与使用技巧,高效完成目标检测数据标注

本文介绍了目标检测中数据标注的核心地位与常用工具。数据标注质量直接影响模型性能,需要关注准确性、一致性等维度。文章详细讲解了边界框、类别标签等基本概念,并对比了LabelImg、Label Studio等主流标注工具的特点。重点介绍了LabelImg的轻量级、易用性等优势,以及Label Studio的协作功能,为不同规模项目提供标注工具选择建议。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1173

PostgreSQL和Oracle的sql差异

oracle的递归查询中level表示查询深度(或者递归层次),在PG中没有此含义的关键字,需要自行在with recursive实现。PG having语句必须在group by之后,oracle可以在group by之前。null和’’在oracle中是一致的,最终都会存储为null,在PG中会进行区分。Oracle delete语句可以没有from,pg必须要有from。[注:'999999' ---- 6位数为COL1字段的长度]PG中无效的别名,可以尝试加as关键字,例如name。

m0_46478042的博客 1759

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SQL developer 连接 Postgresql

要使用 Oracle SQL Developer 连接 PostgreSQL (PG) 数据库,你需要进行一些配置步骤,因为 SQL Developer 原生不支持 PostgreSQL,但它可以通过第三方JDBC驱动来支持。

jnrjian的博客 283

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

探索Google Cloud SQL for PostgreSQL:从设置到文档加载

通过本文,你了解了如何设置和使用Google Cloud SQL for PostgreSQL来加载文档。这将帮助你快速构建和扩展数据库驱动的应用程序。Document loader概念指南Document loader操作指南。

tt_jishu的博客 1026

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

PostgreSQL——SQL优化

本文介绍了PostgreSQL数据库SQL优化的关键方法。首先通过EXPLAIN命令分析执行计划,重点关注执行顺序、核心指标(cost、rows、width等)和扫描方式(Seq Scan、Index Scan等)。其次解析不同连接方式(Nested Loop、Hash Join等)的适用场景及风险。最后提出实战分析步骤:定位耗时查询、检查统计偏差、优化扫描方式、减少I/O操作等。

小新没有蜡笔的博客 913

PostgreSQL 的 SQL 查询之旅

当输入并执行时,这条看似简单的 SQL 语句,实际上会在 PostgreSQL 内部触发一段复杂而精密的处理流程。该过程涉及多个后台进程、精细的内存管理机制,以及数十年数据库优化研究的成果。

IvorySQL的博客 992

5分钟实现企业级Text-to-SQL:WrenAI与PostgreSQL无缝集成指南

你是否还在为业务团队频繁的数据分析需求而烦恼?财务部门需要月度销售报表、运营团队要实时用户行为分析、产品经理想了解功能使用情况——这些需求都需要数据团队编写大量SQL查询,不仅耗时还容易出错。现在,借助WrenAI与PostgreSQL的深度集成,普通业务人员也能通过自然语言直接查询数据库,5分钟即可完成传统需要数小时的数据分析流程。 读完本文你将掌握: - WrenAI与PostgreSQL的...

gitblog_00355的博客 780

深入解析 SQL 方言:常见类型与功能分类

DDL 用于定义和管理数据库对象,是数据库结构搭建的基础。CREATE:用于创建各种数据库对象,如用于创建数据库,用于创建表,用于创建视图,用于创建索引等。ALTER:用于修改已存在的数据库对象的结构,例如可以添加、删除或修改表的列,可调整索引的属性。DROP:用于删除数据库对象,如DROP TABLE删除表,DROP INDEX删除索引等,操作需谨慎,因为删除的对象不可轻易恢复。TRUNCATE:用于快速删除表中的所有数据,与DELETE语句相比,它不记录事务日志,执行速度更快,但不能回滚。

m0_57836225的博客 1271

WrenAI Text-to-SQL 意图分类完整指南:一句话问下去的 4 条路

用户问题含糊时,生成的 SQL 往往偏离真实需求——问题多半不出在模型,而是系统没有先弄清"这句话到底在问什么"。WrenAI 把意图分类(Intent Classification)放在文本转 SQL 流程的最前端:一个问题先被判定为四类之一,再走对应通道。按官方给出的数据,这套机制能让文本转 SQL 准确率提升 40%,同时把人工干预成本降低 30%。 [![WrenAI 文本转SQL与意图

gitblog_00879的博客 378

深入探讨如何在Google Cloud SQL for PostgreSQL中加载文档

通过本文的学习,您已经掌握了如何在Google Cloud SQL for PostgreSQL中使用Langchain加载文档。Document loader概念指南Document loader操作指南。

qq_29929123的博客 878

[利用Google Cloud SQL for PostgreSQL实现高效文档加载的完整指南]

本文详细介绍了如何利用Google Cloud SQL for PostgreSQL的Langchain集成来加载文档。这样做不仅简化了数据库管理,同时也提升了应用程序的效率。Langchain文档加载器概念指南Langchain文档加载器使用指南。

zjhnfmkh的博客 587

Postgresql SQL入门

SQL命令一般分为DQL、DML、DDL三类。•DQL:数据查询语句,基本就是SELECT查询命令,用于数据查询。•DML:Data Manipulation Language,即数据操纵语言,主要用于插入、更新、 删除数据,所以也分为INSERT、UPDATE、DELETE三种语句。•DDL: Data Definition Language, 即数据定义语言,简单来说,是用于创建、删除、修改表、索引等数据库对象的语言。

CoderChronicle的博客 279

PostgreSQL 慢 SQL

优先工具化:改写前可通过pgBadgerpgHero定位慢 SQL 瓶颈,避免盲目改写;索引是基础:所有改写场景的高效执行,均依赖合理的索引设计(关联字段、查询字段、排序字段);贴合 PostgreSQL 特性:充分利用JOIN优化、函数索引、书签分页等专属特性,避免照搬其他数据库(如 MySQL)的优化思路;数据驱动:改写前后必须通过执行计划和统计数据验证效果,避免主观判断。

我是一名在测试领域扎根15年+的“老匠人” 815

PostgreSQL 12 文档: SQL 语法

每条命令的标准符合和兼容的信息可以在相关的参考页中找到。— 更改一个数据库角色拥有的数据库对象的拥有关系。— 定义一个用户到一个外部服务器的新映射。— 为一个表定义一条新的行级安全性策略。— 移除一个数据库角色拥有的数据库对象。— 定义或更改应用到一个对象的安全标签。— 移除一个用于外部服务器的用户映射。— 在当前事务中定义一个新的保存点。— 更改一个外部数据包装器的定义。— 更改一个文本搜索解析器的定义。— 收集有关一个数据库的统计信息。— 从一个查询的结果创建一个新表。

pger 的博客 692
上一篇: PostgreSQL 企业级使用指导手册(Java 后端开发者版)
下一篇: PostgreSQL DDL(数据定义语言)深度详解文档
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值