PostgreSQL 常用 SELECT 数据查询命令示例

pg条件表达式查询case 和语句 语义:判断啊是否为空,为空,将a转化成b。语义:这个字段在这个值或者范围出现几次。如果写范围,case不用写字段名。 阅读详情

PostgreSQL 的 SELECT 语句是 SQL 中最核心的数据查询功能,用于从数据库中检索数据。以下是 PostgreSQL 中 SELECT 语句的多种用法和详细中文注释示例,涵盖基础到高级用法。


1. 基本查询:查询所有列

-- 从 users 表中查询所有列的所有数据
SELECT * FROM users;

2. 查询指定列

-- 仅查询用户的姓名和邮箱
SELECT name, email FROM users;

3. 使用 WHERE 条件筛选数据

-- 查询年龄大于 25 的用户
SELECT name, age FROM users WHERE age > 25;

4. 使用逻辑运算符(AND、OR、NOT)

-- 查询年龄大于 20 且城市为北京的用户
SELECT * FROM users WHERE age > 20 AND city = '北京';

-- 查询年龄小于 18 或城市为上海的用户
SELECT * FROM users WHERE age < 18 OR city = '上海';

-- 查询非管理员用户
SELECT * FROM users WHERE NOT is_admin;

5. 使用 IN 运算符匹配多个值

-- 查询城市为北京、上海或广州的用户
SELECT * FROM users WHERE city IN ('北京', '上海', '广州');

6. 使用 BETWEEN 范围查询

-- 查询年龄在 20 到 30 之间的用户(包含边界)
SELECT * FROM users WHERE age BETWEEN 20 AND 30;

7. 使用 LIKE 进行模糊匹配

-- 查询姓名以 '张' 开头的用户(% 表示任意字符序列)
SELECT * FROM users WHERE name LIKE '张%';

-- 查询邮箱包含 'gmail' 的用户
SELECT * FROM users WHERE email LIKE '%gmail%';

-- 查询姓名第二个字为 '小' 的用户(_ 表示单个字符)
SELECT * FROM users WHERE name LIKE '_小%';

8. 使用 ILIKE 实现不区分大小写的模糊匹配(PostgreSQL 特有)

-- 不区分大小写地查询邮箱包含 'GMAIL' 的用户
SELECT * FROM users WHERE email ILIKE '%gmail%';

9. 排序:ORDER BY

-- 按年龄升序排列用户
SELECT * FROM users ORDER BY age ASC;

-- 按姓名降序排列
SELECT * FROM users ORDER BY name DESC;

-- 多列排序:先按城市升序,再按年龄降序
SELECT * FROM users ORDER BY city ASC, age DESC;

10. 限制返回行数:LIMIT 和 OFFSET

-- 只返回前 5 条记录
SELECT * FROM users LIMIT 5;

-- 跳过前 10 条,返回接下来的 5 条(常用于分页)
SELECT * FROM users LIMIT 5 OFFSET 10;

11. 去重:DISTINCT

-- 查询所有不同的城市(去重)
SELECT DISTINCT city FROM users;

12. 别名:AS

-- 为列起别名
SELECT name AS 姓名, email AS 邮箱 FROM users;

-- 为表起别名(在复杂查询中常用)
SELECT u.name, o.order_date 
FROM users AS u 
JOIN orders AS o ON u.id = o.user_id;

13. 聚合函数(COUNT、SUM、AVG、MAX、MIN)

-- 统计用户总数
SELECT COUNT(*) AS 用户总数 FROM users;

-- 计算平均年龄
SELECT AVG(age) AS 平均年龄 FROM users;

-- 查询最大年龄
SELECT MAX(age) AS 最大年龄 FROM users;

-- 查询最小年龄
SELECT MIN(age) AS 最小年龄 FROM users;

-- 计算订单总金额
SELECT SUM(amount) AS 总金额 FROM orders;

14. 分组查询:GROUP BY

-- 按城市分组,统计每个城市的用户数量
SELECT city, COUNT(*) AS 人数 FROM users GROUP BY city;

-- 按城市分组,计算每个城市的平均年龄
SELECT city, AVG(age) AS 平均年龄 FROM users GROUP BY city;

15. 分组后筛选:HAVING

-- 查询用户数量大于 2 的城市
SELECT city, COUNT(*) AS 人数 
FROM users 
GROUP BY city 
HAVING COUNT(*) > 2;

注意:HAVING 用于对聚合结果进行筛选,而 WHERE 用于行级筛选。


16. 多表连接查询(JOIN)

-- 内连接:只返回匹配的记录
SELECT u.name, o.order_date, o.amount
FROM users u
INNER JOIN orders o ON u.id = o.user_id;

-- 左外连接:返回左表所有记录,右表无匹配则为 NULL
SELECT u.name, o.order_date
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;

-- 右外连接:返回右表所有记录
SELECT u.name, o.order_date
FROM users u
RIGHT JOIN orders o ON u.id = o.user_id;

-- 全外连接:返回两个表的所有记录
SELECT u.name, o.order_date
FROM users u
FULL OUTER JOIN orders o ON u.id = o.user_id;

17. 子查询(Subquery)

-- 查询订单金额高于平均值的用户
SELECT name FROM users 
WHERE id IN (
    SELECT user_id FROM orders 
    WHERE amount > (SELECT AVG(amount) FROM orders)
);

-- 在 SELECT 中使用子查询(标量子查询)
SELECT name, 
       (SELECT AVG(amount) FROM orders WHERE user_id = users.id) AS 平均订单金额
FROM users;

18. 使用 CASE 表达式进行条件判断

-- 根据年龄分组显示年龄段
SELECT name, age,
       CASE 
           WHEN age < 18 THEN '未成年'
           WHEN age BETWEEN 18 AND 60 THEN '成年'
           ELSE '老年'
       END AS 年龄段
FROM users;

19. 使用窗口函数(Window Functions)

-- 为每个用户计算其订单金额的排名
SELECT user_id, amount,
       RANK() OVER (ORDER BY amount DESC) AS 排名
FROM orders;

-- 按用户分组计算每个订单在其用户内的累计金额
SELECT user_id, order_date, amount,
       SUM(amount) OVER (PARTITION BY user_id ORDER BY order_date) AS 累计金额
FROM orders;

20. 使用 CTE(Common Table Expression)提高可读性

-- 使用 CTE 查询订单金额前 3 的用户信息
WITH top_users AS (
    SELECT user_id, SUM(amount) AS total_amount
    FROM orders
    GROUP BY user_id
    ORDER BY total_amount DESC
    LIMIT 3
)
SELECT u.name, u.email, tu.total_amount
FROM users u
JOIN top_users tu ON u.id = tu.user_id;

21. 使用 UNION 合并多个查询结果

-- 合并北京和上海的用户列表(去重)
SELECT name, city FROM users WHERE city = '北京'
UNION
SELECT name, city FROM users WHERE city = '上海';

-- 使用 UNION ALL 保留重复项
SELECT name FROM users WHERE age < 20
UNION ALL
SELECT name FROM users WHERE city = '北京';

22. 使用 EXISTS 检查子查询是否存在结果

-- 查询有订单的用户
SELECT name FROM users u
WHERE EXISTS (
    SELECT 1 FROM orders o WHERE o.user_id = u.id
);

23. 使用数组和 JSON 查询(PostgreSQL 高级特性)

-- 假设 users 表有 hobbies 字段为 TEXT[] 数组类型
SELECT name, hobbies FROM users WHERE '读书' = ANY(hobbies);

-- 假设 profile 字段为 JSON 类型
SELECT name, profile->>'phone' AS 手机号 
FROM users 
WHERE profile->>'city' = '北京';

24. 使用 LATERAL 关键字进行横向连接

-- 对每个用户获取其最近的一笔订单
SELECT u.name, latest_order.amount, latest_order.order_date
FROM users u
CROSS JOIN LATERAL (
    SELECT amount, order_date
    FROM orders o
    WHERE o.user_id = u.id
    ORDER BY order_date DESC
    LIMIT 1
) AS latest_order;

25. 使用 VALUES 构造临时数据集

-- 构造一个临时表格进行查询
SELECT * FROM (
    VALUES ('张三', 25, '北京'),
           ('李四', 30, '上海')
) AS temp(name, age, city);

26. 使用 EXPLAIN 查看查询执行计划(调试用)

-- 查看查询的执行计划,用于性能优化
EXPLAIN SELECT * FROM users WHERE age > 30;

总结

PostgreSQL 的 SELECT 语句功能极其丰富,支持:

  • 基础查询、条件筛选、排序、分页
  • 聚合、分组、去重
  • 多表连接、子查询、CTE
  • 窗口函数、CASE 表达式
  • 高级特性:JSON、数组、LATERAL、UNION 等

这些功能使得 PostgreSQL 能够处理从简单查询到复杂数据分析的各种场景。

💡 提示:合理使用索引、避免 SELECT *、优化 WHERE 条件可显著提升查询性能。

深入解析数据查询操作:SELECT 语句的使用与应用 title: 深入解析数据查询操作:SELECT 语句的使用与应用author:excerpt:数据查询是数据库操作中最频繁、最重要的一部分。无论是开发应用程序、进行数据分析,还是维护数据库,熟练使用 SELECT 语句都是必不可少的技能。本文将系统地讲解 PostgreSQL 中的 SELECT 语句,包括基本查询、条件查询以及如何利用 ORDER BY 和 LIMIT 进行排序与限制展示的数据量。扫描在关系型数据库管理系统中,数据查询(SELECT)是与数据交互的核心操作之一。 阅读详情

相关推荐

01.PostgreSQL基本SELECT语句

SQL 是用于访问和处理数据库的标准的计算机语言。SQL有两个标准:分别是SQL92和SQL99,他们分别代表了92年和99年颁布的SQL标准,我们今天使用的SQL语言依然遵循这些标准。注意:除了 SQL 标准之外,大部分 SQL 数据库程序都拥有它们自己的私有扩展!

DSDS454651的博客 1607

postgresql 中 case 的用法

SQL CASE表达式是一种通用的条件表达式,类似于其它语言中的if/else语句。

cuisidong1997的博客 3589

7、PostgreSQL基础SQL使用指南

本文详细介绍了PostgreSQL中基础和高级的SQL使用方法,包括SQL查询语言概述、数据库对象的创建、数据处理、SELECT查询的高级用法、视图和触发器的创建以及事务的定义。内容涵盖了SQL关键字、表结构修改、角色权限管理、多表连接、子查询、聚合函数、HAVING子句、视图简化查询、触发器自动化操作和事务控制等方面,帮助读者全面掌握PostgreSQL数据库的核心SQL操作技能。

n4o5p6q7r的博客 164

Pg中case理解

sql中case理解

weixin_45761101的博客 2117

5、深入探索 SQL:数据访问与查询技巧

本文深入讲解了SQL中SELECT语句的使用技巧,包括使用psql访问数据库、基本命令、数据检索、行筛选、排序、限制结果、处理日期和时间、关联多表操作等内容。同时提供了实际案例、注意事项和最佳实践,帮助读者全面掌握SQL查询技术。

nft7creator的博客 75

postgresql数据库的例子

postgresql数据库的一个关于租赁DVD的商店的例子,里面详细介绍了DVD租赁的一些逻辑表。

PostgreSQL常用命令

3 显示当前数据库中的所有表。

xiliuhu的专栏 6126

Unity基础篇-----Input输入

2、Input.GetTouch()方法,主要用于移动端开发使用,此方法主要获取触摸屏幕的操作数据,首先通过Input.touchCount这个方法获取到手指触摸屏幕的次数,通过GetTouch方法传输触摸次数,调用Touch结构判断手指的状态来是否为设定的状态,符合的话则执行相关内容。参数(“Horizontal”)表示左右的值,值为-1时,表示你在一直按下左方向对应的按键、设备类型为手柄时,表示你把推杆推到了最左边,为0时为默认位置,手柄中对应正中间,为1时与-1时对应的情况正好相反。

why820mmm的博客 3495

postgres 的相关数据库命令操作

命令行工具或图形化工具(如 pgAdmin)。以下是详细的步骤和相应的 SQL 命令,帮助您查看数据库、查看表结构、执行增删改查(CRUD)操作,以及添加字段、修改数据类型和约束。这些操作涵盖了基本的数据库管理和数据操作任务。根据您的具体需求,您可以进一步探索更高级的功能,如事务管理、索引优化、视图和存储过程等。要进入 PostgreSQL 数据库并执行各种操作,您需要使用。语句可以向现有表中添加新字段。

weixin_42113341的博客 3530

CF鼠标宏防封指南:手把手教你调校罗技G HUB压枪脚本的延迟与随机数

本文详细解析了如何通过罗技G HUB的Lua脚本功能调校鼠标宏,实现拟真操作体验。重点介绍了随机数应用、动态后坐力补偿和智能操作序列等高级技术,帮助玩家在不违反游戏规则的前提下提升操作精度。

weixin_26841957的博客 332

Ai数字人直播系统源码部署

虚拟形象定制,直播内容智能生成,多语言支持,智能互动,声音克隆,24 小时不间断直播,多平台直播,智能数据分析,实时情感识别,视频合成,Ai数字人直播系统源码出售,Ai数字人直播系统源码部署实现 AI 数字人 24 小时不间断直播功能是一个较为复杂的任务,涉及到多个方面,如直播流的推送、内容的持续生成、系统的稳定性保障等。以下为你提供一个简化的实现思路和示例代码,借助 Python 结合 FFmpeg 工具来模拟 24 小时不间断直播。

weixin_ggwwsscc的博客 1253

PostgreSQL 常用 SELECT 数据查询命令

PostgreSQL SELECT 命令实用指南 SELECT 是 PostgreSQL 中最核心的查询命令,掌握其用法能显著提升开发效率。本文从基础到高级,通过 12 个实用示例讲解 SELECT 的用法: 基础查询:SELECT * FROM users 指定字段:SELECT username, email FROM users 条件查询:WHERE username = 'zhangsan' 模糊查询:ILIKE 和 JSONB 搜索 分页查询:LIMIT 10 OFFSET 10 去重查询:DIS

python15397的博客 1072

【Agent从入门到实践】40 容错优化:异常处理、重试机制、降级策略

各位小伙伴,咱们的多Agent框架一路优化到现在,决策快、执行效率高、资源用得省,看似啥都行,但只要一遇到网络波动、工具故障、数据异常调用web_search工具时网络超时,整个检索任务直接失败,写作Agent没数据可用向量库连接异常,向量检索直接崩掉,依赖检索结果的Agent全趴窝单个Agent执行出错,整个并行任务流程直接中断,前功尽弃高并发下部分工具调用失败,框架没有备用方案,只能返回任务失败说白了,咱们之前的框架只有正常执行逻辑,没有异常兜底逻辑。

人工智能AI技术 908

Postgresql Tutorial

Postgresql Tutorial

...... 496

倒立摆的PLC控制(模型分析+ SCL源代码)

首先简单介绍下倒立摆模型,下面这幅图是MATLAB网站上的倒立摆模型,下面我们利用牛顿第二运动定律建立摆杆的运动方程。

RXXW_Dor的博客 3327

lammps教程:实例讲解npt、nvt系综的选择

对于lammps新手来说,系综的选择令人困惑,到底是应该用nvt系综还是npt系综? 我在初学lammps时就被这个问题困扰了很久。如果去问别人,可能会告诉你一个答案:根据模拟需要确定。 其实和没说一样。 到底如何确定系综,确实不是一句两句能够说清楚的,不同的体系、不同的模拟目的要选择不同的系综。 前几天遇到的一个合金的模拟案例,比较有代表性,分享出来供大家参考。 建模方法和之前介绍过的高熵合金建模方法类似,先建立单晶模型,然后使用替换原子的命令获得合金结构。 建模完成后,按照常规,先上nvt系综进行驰豫

lammps_jiayou的博客 9765

PostgreSQL(2)常用命令(附教程)

目录 Centos篇 1.进入退出 2.基本查看命令 3.库、表操作 4.字段类型 5.约束条件 6.INSERT语句 7.SELECT语句 8.WHERE语句 9.数据抽出选项 10.统计抽出数据 11.方便函数 12.更新和删除 13.变更表结构 14.操作多个表 15.视图 16.事务 windows篇 1.建立数据库连接 2.访问数据库 学习postgresql数据库视频学习笔记 链接B站小马视频: https://www.bilibili.com/vi

baidu_34785556的博客 688

七天征服AutoSAR/SomeIP_01速成配置并代码生成

本文为AutoSAR中SomeIP配置开发的实操指南摘要,重点介绍通过通信矩阵快速构建SomeIP工程的方法。核心内容包括:1)基于Excel通信矩阵生成系统描述文件(arxml);2)在AutoSAR工具中导入文件自动生成协议栈配置,涵盖ETHIF、SoAd等模块;3)关键报错处理(COM/PDUR/SOAD/SD模块的配置修正);4)SomeIPXF的数据编解码配置;5)SWC组件与RTE任务映射。教程强调"先完成再完美"的实践原则,指导开发者快速生成基础代码框架,为后续协议调试奠定

大叔带刺的博客 302

PostgreSQL 实用命令速查手册:从入门到高效管理

本文提供了PostgreSQL从入门到高效管理的实用命令速查手册,涵盖数据库连接、用户权限管理、表操作、数据查询、高级维护及问题排查等核心内容。特别适合开发者和DBA快速掌握PostgreSQL常用命令,提升数据库管理效率。

weixin_29288313的博客 343

innovus:像ICC2一样设置placement label

ICC2有placement label/placement rule功能,能控制各种类型cell 之间的spacing规则,包括top和bottom edge的spacing。innovus也有相同的功能,以下示例方便大家了解用法。我们需要给所有OAI* cell之间设置一个spacing rule,让他们不要上下或者挨着。效果如下图,这个spacing指的是同一边的间距,不是cell间距。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 833

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【PostgreSQL】数据查询-概述

假设有一个名为table1的表,此命令将从table1中检索所有行和所有用户定义的列。例如*,psql 程序将在屏幕上显示一个 ASCII 艺术表,而客户端库将提供从查询结果中提取单个值的函数。选择列表规范是指表表达式恰好提供的所有列。选择列表还可以选择可用列的子集或使用列进行计算。SELECT FROM table1是一种简单的表表达式:它只读取一个表。通常,表表达式可以是基表、联接和子查询的复杂构造。检索或从数据库中检索数据的命令的过程称为查询。如果选择列表中的表达式返回不同的结果,这将更有用。

圈小圈DBA的博客 892

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

PostgreSQL 入门学习教程,从入门到精通,PostgreSQL 16 查询数据 —语法详解与实战案例(9)

本文提供了PostgreSQL 16查询数据的完整教学数据库示例,包含学生表、成绩表和教师表的结构创建语句及注释说明。通过20条学生数据和配套成绩数据(每位学生3科成绩),覆盖了多种查询场景,包括空值处理、外键关联、数据范围约束等。数据库设计考虑了中文排序支持、级联删除等特性,适合用于PostgreSQL查询语法的学习与实践。所有SQL语句可直接执行,便于读者对照案例代码获得真实执行效果。

qq_45746668的博客 524

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Week8学习总结-数据库

Week8学习总结-数据库 一. 关系数据库 1. 关系数据库特点 理论基础:关系代数,关系运算,一阶谓词逻辑。 具体表象:用二维表(有行和列)组织数据。 编程语言:结构化查询语言(SQL - Structured Query Language)。 注意:数据库中的数据尽量不要为空值 2. ER模型(实体关系模型)和概念模型图 ER模型,全称为实体关系模型(Entity-Relationship Model),由美籍华裔计算机科学家陈品山先生提出,是概念数据模型的高层描述方式,如下图所示。

HenryWang0412的博客 917

PostgreSQL常用命令&常见错误

PostgreSQL常用操作命令 创建数据库新用户 CREATE USER test WITH PASSWORD '1q2w3e'; 注意:语句要以分号结尾,密码要用单引号括起来。 创建用户数据库 CREATE DATABASE testdb01 OWNER test; 将数据库的所有权限赋予用户 GRANT ALL PRIVILEGES ON DATABASE testdb01 TO test; 修改数据库的owner为test用户(如果创建时未指定owner、也可以通过alter命令指定) al

sunny05296的博客 2万+

【PostgreSQL】数据查询-XML 函数

有一组函数和类函数的表达式可以用来从 SQL 数据产生 XML 内容。它们特别适合于将查询结果格式化成 XML 文档以便于在客户端应用中处理。

圈小圈DBA的博客 2411
上一篇: 2、Spring Boot 3 如何使用 Redis 数据库,以及 Redis 操作客户端选择
下一篇: 什么是 N+1 查询问题?推荐怎么解决?
龙茶清欢
博客等级 码龄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、付费专栏及课程。

余额充值