PostgreSQL使用(四)——数据查询

说明:对于一门SQL语言,数据查询是我们非常常用的,也是SQL语言中非常大的一块。本文介绍PostgreSQL使用中的数据查询,如有一张表,内容如下:

在这里插入图片描述

简单查询

--- 1.查询某张表的全部数据
select * from tb_student;-- 2.查询某张表的指定字段
select id, name from tb_student;-- 3.给字段、表取别名查询,as可省略
select ts.id as 编号, ts.name as 姓名 from tb_student as ts;

单表指定条件查询

-- 1.查询指定记录,如id = 1
select * from tb_student where id = 1;-- 2.in查询,如id为1、2、3的记录
select * from tb_student where id in (1, 2, 3);-- 3.between and查询,如生日在1990年1月1日到2月1日之间的记录
select * from tb_student where birthdate between '1990-01-01' and '1990-02-01';-- 4.like模糊查询,如姓名以“李”开头的记录
select * from tb_student where name like '李%';

其中通配符%为匹配任意个字符,_为匹配一个字符,如

  • 李%:表示以李开头的记录;

  • %李%:表示字段中包含李的记录;

  • 李_:表示字段为两个字符,且第一个为李的记录;

单表指定条件复杂查询操作

-- 1.查询空值内容,如生日为空的记录
select * from tb_student where birthdate is null;-- 2.and、or多条件查询,如生日不为空并且姓名为“小何”的记录
select * from tb_student where birthdate is not null and name = '小何';-- 3.查询结果集排序,其中默认升序,asc可省略,desc表示降序
select * from tb_student order by id;-- 4.查询结果集排序,根据生日进行降序排序,null值排在最后,nulls first表示null值排在最前,默认是nulls last
select * from tb_student order by birthdate desc nulls last ;-- 5.limit关键字查询,按照成绩降序,取前3名
select * from tb_student order by score desc limit 3;-- 6.limit关键字查询,按照id排序,从第3个记录开始,取3条记录
select * from tb_student order by id limit 3 offset 2

注意事项:

  • 判断某个字段不为空或为空,不能写成 != null或者=null

  • order by 可指定多个字段,如order by id, score desc,表示按照id升序排序,id相同按照score降序排序;

  • limit 3 offset 2可实现分页功能,传递当前页码,每页显示条数,换成下面这个SQL即可

select * from tb_student limit 每页显示条数 offset (当前页码 - 1) * 每页显示条数

多表连接查询

创建一张班级表,学生表里新增一个班级字段,表示该学生所属的班级信息,如下:

(班级表)

在这里插入图片描述

(学生表,新增一个班级字段,表示所属班级的id)

在这里插入图片描述

-- 1.inner join查询,查交集,两个表中都能匹配上的,即每个学生都有班级的记录
select * from tb_student inner join tb_class on tb_student.class_id = tb_class.id;-- 2.left join,取左表全部数据与右表匹配,匹配不上的数据右侧补空,即全部的学生记录,学生的班级在班级表中匹配不上的补空
select * from tb_student left join tb_class on tb_student.class_id = tb_class.id;-- 3.right join,取右表全部数据与左表匹配,匹配不上的数据左侧补空,即全部的班级记录,班级信息在学生表中匹配不上的补空
select * from tb_student right join tb_class on tb_student.class_id = tb_class.id;

inner join 查询结果如下,取学生表和班级表里的交集记录;

在这里插入图片描述

left join 查询结果如下,取全部学生表与班级表的记录,匹配不上的班级用null填充;

在这里插入图片描述

right join 查询结果如下,取全部班级表与学生表的记录,匹配不上的学生用null填充;

在这里插入图片描述

子查询

-- 1.exists查询,查询学生表中在班级表中存在的记录
select * from tb_student where exists (select * from tb_class where tb_student.class_id = tb_class.id);-- 2.in关键字子查询,功能同上
select * from tb_student where class_id in (select id from tb_class);-- 3.标量子查询,查询学生表中班级名为“高一(1)班”的记录
select * from tb_student where class_id = (select id from tb_class where name = '高一(1)班');

标量子查询,指的是将一个查询的结果作为另一个查询的值来使用;

查询结果集合并

对于多个查询结果集合并,可使用union allunion,如下:

-- 1.union all合并,结果不去重,速度快
select * from tb_student where class_id in (1,2) union all select * from tb_student where birthdate is not null;-- 2.union 合并,结果去重,速度慢
select * from tb_student where class_id in (1,2) union select * from tb_student where birthdate is not null;

union all查询结果,有重复数据:

在这里插入图片描述

union查询结果,无重复数据:

在这里插入图片描述

需要注意,合并的结果集字段数量需要相等,如果不一样多,可以在字段少的那边加上null字段,使其相等。如下,我在两张表左右各自新增一个null字段:

在这里插入图片描述

总结

本文介绍了PostgreSQL使用中的数据查询,参考下面视频:

  • 一天学完 PostgreSQL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3267084.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】手把手教你单链表(c语言)(附源码)

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:数据结构 目录 前言 1.单链表的概念与结构 2.单链表的结构定义 3.单链表的实现 3.1 单链表的方法声明 3.2 单链表方法实现 3.2.1 打印链表 3.2.2 创建新…

DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null

文章目录 一、报错内容二、原因三、DB2中的VARCHAR(100)类型能存储多少汉字? 一、报错内容 Cause: com.ibm.db2.jcc.am.mo: DB2 SQL Error: SQLCODE-302, SQLSTATE22001, SQLERRMCnull, DRIVER3.58.82 ; DB2 SQL Error: SQLCODE-302, SQLSTATE22001, SQLERRMCnull,…

Redis 7.x 系列【26】集群模式动态扩容、动态缩容

有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 动态扩容1.1 安装、启动1.2 加入新节点1.3 分配哈希槽1.4 加入从节点 2. 缩容2.1 删…

文献解读-群体测序-第二十三期|《一项前瞻性队列研究中膀胱癌的驱动和乘客DNA甲基化非侵入诊断和监测》

关键词:群体测序;基因测序;变异检测; 文献简介 标题(英文):Non-invasive diagnosis and surveillance of bladder cancer with driver and passenger DNA methylation in a prospective cohort…

Ryujinx(Switch模拟器) v1.1.1361 汉化版

Ryujinx 是一款免费、开源的 Nintendo Switch 模拟器,它可以在电脑上模拟 Nintendo Switch 游戏机的运行环境,让玩家们能够在 PC 上畅玩 Switch 游戏。Ryujinx 支持大部分 Nintendo Switch 游戏,包括 The Legend of Zelda: Breath of the Wil…

生成式AI的双重路径:Chat与Agent的融合与竞争

文章目录 每日一句正能量前言整体介绍对话系统(Chat)自主代理(Agent)结论 技术对比技术差异优势与劣势技术挑战结论 未来展望发展趋势Chat与Agent的前景社会和经济影响结论 后记 每日一句正能量 在避风的港湾里,找不到…

【Qt 】JSON 数据格式详解

文章目录 1. JSON 有什么作用?2. JSON 的特点3. JSON 的两种数据格式3.1 JSON 数组3.2 JSON 对象 4. Qt 中如何使用 JSON 呢?4.1 QJsonObject4.2 QJsonArray4.3 QJsonValue4.4 QJsonDocument 5. 构建 JSON 字符串6. 解析 JSON 字符串 1. JSON 有什么作用? &#x…

四、单线程多路IO复用+多线程业务工作池

文章目录 一、前言1 编译方法 二、单线程多路IO复用多线程业务工作池结构三、重写Client_Context类四、编写Server类 一、前言 我们以及讲完单线程多路IO复用 以及任务调度与执行的C线程池,接下来我们就给他结合起来。 由于项目变大,尝试解耦项目&#…

谷粒商城实战笔记-66-商品服务-API-品牌管理-JSR303数据校验

文章目录 一,引入JSR 303依赖二,接口参数启用校验功能三,给字段添加校验注解NotBlank 和 NotNull 的区别NotBlankNotNull比较 四,BindingResult获取校验结果五,自定义错误消息六,其他校验规则 在Web应用程序…

【AIGC】构建自己的谷歌搜索引擎服务并使用

一、谷歌 谷歌的搜索引擎需要自己创建服务才能启用检索api。(需自行翻墙和创建自己的谷歌账号) 1.1 API服务创建 1)登陆https://console.cloud.google.com/: 2) 选择新建项目,取号项目名即可(比如:Olin…

【Java】/* 异常 */

目录 ​编辑 一、错误和异常的体系 二、异常 2.1 异常的分类 2.2 异常的处理形式 2.3 如何抛出异常 2.4 捕获处理异常 2.5 finally存在的意义 2.6 异常处理流程总结 2.7 自定义异常类 一、错误和异常的体系 1. Java中所有的异常和错误都有对应的类来进行描述。 2. 由…

【日常记录】【JS】JS中查询参数处理工具URLSearchParams

文章目录 1. 引言2. URLSearchParams2.1 URLSearchParams 的构造函数2.2 append() 方法2.3 delete() 方法2.4 entries() 方法2.5 forEach() 方法2.6 get() 方法2.7 getAll() 方法2.8 has() 方法2.9 keys() 方法2.10 set() 方法2.11 toString() 方法2.12 values() 方法 参考链接…

Protobuf序列化原理学习

Protobuf 序列化原理学习 1. 基本概念 消息:由于Protocp Buffer主要用于数据存储、网络通信的场景,将结构化的数据(数据结构或对象)进行序列化,生成二进制串来保存或传输。把要序列化的结构化数据称为**消息**。 T -…

Activiti学习之入门个人任务(07)

这里写目录标题 一、分配任务负责人1.1 固定分配1.2 表达式分配1.2.1 UEL表达式1.2.2 使用流程变量分配任务1.2.3 注意事项 1.3 监听器分配 二、查询任务2.1 查询负责人待办2.2 关联businessKey 三、办理任务 一、分配任务负责人 1.1 固定分配 在进行业务流程建模时指定固定的…

vdb:虚拟数据库

将文件虚拟成数据库,序列化写入、反序列化读取、直接读取。

离散型制造业中,MES系统的应用场景

在离散型制造业中,MES(制造执行系统)系统的应用场景极为丰富且关键,它贯穿于整个生产过程的各个环节,从生产计划到生产执行,再到质量控制和物料管理,都发挥着不可替代的作用。以下是离散制造业中…

本地化部署一个简单的AI大模型,Llama3.1

7 月 23 日消息,Meta 今晚正式发布llama3.1,提供 8B、70B 及 405B 参数版本。 Meta 称 4050 亿参数的 Llama 3.1-405B 在常识、可引导性、数学、工具使用和多语言翻译等一系列任务中,可与 GPT-4、GPT-4o、Claude 3.5 Sonnet 等领先的闭源模型…

收藏:高性价比https证书

在当今的数字化世界中,网络安全已经成为了每个网站所有者的首要关注点,为了保护网站的安全,防止数据被窃取或篡改,使用SSL证书已经成为了一种标准的做法,SSL证书是一种用于加密网站和用户之间数据传输的证书&#xff0…

[240726] Mistral AI 发布新一代旗舰模型 | Node.js 合并 TypeScript 文件执行提案

目录 Mistral AI 发布新一代旗舰模型:Mistral Large 2Node.js 合并 TypeScript 文件执行提案:--experimental-strip-types Mistral AI 发布新一代旗舰模型:Mistral Large 2 Mistral AI 宣布推出新一代旗舰模型 Mistral Large 2,该…

2024新版 黑马程序员《C++零基础入门》笔记——第一章19 cin中文乱码的解决

1.cin中文乱码的解决 2.代码实践 # include "iostream" # include "windows.h" using namespace std;int main() {SetConsoleOutputCP(CP_UTF8);string str;cin >> str;cout << str << endl;return 0; } 注意&#xff0c;勾选之后以后也…