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://www.mzph.cn/pingmian/50209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Qt】QLabel常用属性相关API

QLabel是Qt框架中用于显示文本或图案的小部件。在Qt应用程序中,QLabel是用来呈现静态文本或图像给用户的重要部分 QLabel属性陈列 属性说明textQLabel中的文本内容textFormat 文本的格式 Qt::PlainText 纯文本Qt::RichText 富文本Qt::MarkdownText markdown…

【数据结构】排序算法(冒泡排序、插入排序、希尔排序、选择排序、堆排序、计数排序)

生命不可能有两次,但许多人连一次也不善于度过。💓💓💓 目录 ✨说在前面 🍋知识点一:排序的概念和应用 • 🌰1.排序及其概念 • 🌰2.排序的应用 • 🌰3.常见的排序算…

qt做的分页控件

介绍 qt做的分页控件 如何使用 创建 Pagination必须基于一个QWidget创建,否则会引发错误。 Pagination* pa new Pagination(QWidget*);设置总页数 Pagination需要设置一个总的页数,来初始化页码。 pa->SetTotalItem(count);设置可选的每页数量…

前端养成记-实现一个低配版简单版本的vue3表单自定义设计组件

简介: 通过使用了最新的vue3,vite2,TypeScript等主流技术开发,并配合使用vuedraggable 插件以及antd design vue 组件库实现低配版本的自定义表单设计组件; 项目地址:https://gitee.com/hejunqing/vue3-antdv-generator

PyTorch模型训练步步详解:从零开始构建深度学习流程

P y T o r c h 训练模型流程图 PyTorch训练模型流程图 P y T orc h 训练模型流程图

非凸T0算法,如何获取超额收益?

什么是非凸 T0 算法? 非凸 T0 算法基于投资者持有的股票持仓,利用机器学习等技术,短周期预测,全自动操作,抓取行情波动价差,增厚产品收益。通过开仓金额限制、持仓时长控制等,把控盈亏风险&…

学习笔记:MySQL数据库操作5

1. 触发器(Triggers) 触发器是数据库的一种高级功能,它允许在执行特定数据库操作(如INSERT、UPDATE、DELETE)之前或之后自动执行一段代码。 1.1 创建商品和订单表 商品表(goods) gid: 商品编号…

会话存储、本地存储,路由导航守卫、web会话跟踪、JWT生成token、axios请求拦截、响应拦截

1、会话存储、本地存储 前端浏览器中存储用户信息,会话存储、本地存储、cookie 会话存储(sessionStorage):会话期间存储,关闭浏览器后,数据就会销毁 sessionStorage.setItem("account",resp.d…

反射型与dom型的xss的区别【源码分析】

反射型 XSS 和 DOM 型 XSS 都属于跨站脚本攻击 (XSS) 的类型,它们的共同点是均能通过注入恶意脚本在用户浏览器中执行,不同点是dom型xss不经过服务器,而反射型是经过服务器的。但是,它们在攻击方式、执行过程和防御措施上有所不同…

Servlet2-HTTP协议、HttpServletRequest类、HttpServletResponse类

目录 HTTP协议 什么是HTTP协议 HTTP协议的特点 请求的HTTP协议格式 GET请求 POST请求 常用的请求头说明 哪些是GET请求,哪些是POST请求 响应的HTTP协议格式 常见的响应码说明 MIME类型说明 HttpServletRequest类 作用 常用方法 如何获取请求参数 po…

IP 泄露: 原因与避免方法

始终关注您的IP信息! 您的IP地址不仅显示您的位置,它包含几乎所有的互联网活动信息! 如果出现IP泄漏,几乎所有的信息都会被捕获甚至非法利用! 那么,网站究竟如何追踪您的IP地址?您又如何有效…

从0开始的STM32HAL库学习9

定时器输入捕获测频率 生成待测信号 配置环境 选择如上图所示 代码修改 在main函数中加入 HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1); 测量信号频率 配置环境 如图所示打开TIM3定时器 1. 设置TI1FP1为ResetMode,即清空计数 2. 使用内部时钟 3. 通道 1 设置为输…

日本的便利店真的“无所不能”?!简直不要太方便了

众所周知,日本便利店可谓是日本人离不来的存在了!真真是“要啥有啥”,可以说日本的便利店才是真正意义上的“便利”~ 那日本的便利店到底有什么与众不同呢??今天小编来带大家盘点一下日本便利店的那些服务。 一、购票…

《2024新质生产力引领下十大重点产业趋势解读--大模型篇》,深剖当下爆火的大模型产业!

01 报告导读 “新质生产力”重要性再提升。 近日,作为热词的“新质生产力”再度被多次提及,“新质生产力”这一概念近年来在经济和社会发展中被频繁提及,它指的是通过创新驱动,利用新技术、新业态、新模式推动生产力发展的新形态…

opencascade AIS_MouseGesture AIS_MultipleConnectedInteractive源码学习

AIS_MouseGesture //! 鼠标手势 - 同一时刻只能激活一个。 enum AIS_MouseGesture { AIS_MouseGesture_NONE, //!< 无激活手势 // AIS_MouseGesture_SelectRectangle, //!< 矩形选择&#xff1b; //! 按下按钮开始&#xff0c;移动鼠标定义矩形&…

【Linux】玩转操作系统,深入刨析进程状态与调度机制

目录 1. 进程排队2. 进程状态的表述2.1. 进程状态2.2 运行状态2.3. 阻塞状态2.4. 挂起状态 3. Linux下具体的进程状态3.1. 运行状态R3.2. 可中断睡眠状态S3.3. 不可中断睡眠状态D3.4. 停止状态T3.5. 死亡状态X3.6. 僵尸状态Z 4. 孤儿进程5. 优先级6. Linux的调度与切换6.1. 四个…

在linux上面用drissionpage自动化遇到反爬?

目录 一、反爬内容1、案例12、案例2 二、后来发现的问题解决 一、反爬内容 1、案例1 反爬的响应文本返回如下&#xff1a;爬虫均能精准识别,测试链接:https://ziyuan.baidu.com/crawltools/index)非正常爬虫访问时:返回的压缩报文内容无法直接识别,可一定程度上保护站点信息安…

C语言进阶——一文带你深入了解“C语言关键字”(中篇)

本篇文章属于C语言进阶篇的“C语言关键字”&#xff0c;旨在分享我对C语言关键字的深度学习和了解。同时带领大家深入浅出的走进C语言进阶知识——关键字篇&#xff01; 目录 一、变量的命名规则 二、标识符的命名规则 一、变量的命名规则 1、命名应当直观且可以拼读&#x…

【YashanDB知识库】yasdb jdbc驱动集成BeetISQL中间件,业务(java)报autoAssignKey failure异常

问题现象 BeetISQL中间件版本&#xff1a;2.13.8.RELEASE 客户在调用BeetISQL提供的api向yashandb的表中执行batch insert并将返回sequence设置到传入的java bean时&#xff0c;报如下异常&#xff1a; 问题的风险及影响 影响业务流程正常执行&#xff0c;无法获得batch ins…

史诗级动态分屏多画面PR开场视频模板MOGRT

Premiere Pro模板&#xff0c;创意史诗级动态分屏多画面开场视频模板mogrt 主要特点 全高清&#xff08;19201080&#xff09;分辨率 Pr2021或更高版本软件 非常易于定制 00:33秒持续时间 7个文本占位符 34个媒体占位符 https://prmuban.com/39328.html