PostgreSQL表的查询(难度适中)

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: PostgreSQL表的查询(难度适中)

b8858089314d45beac9d043893d0f012.png


🐴 1.环境准备


建表语句如下:


CREATE TABLE COMPANY(

ID INT PRIMARY KEY NOT NULL,

NAME TEXT NOT NULL,

AGE INT NOT NULL,

ADDRESS CHAR(50),

SALARY REAL

);


INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)

VALUES (1, ‘Paul’, 32, ‘California’, 20000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)

VALUES (2, ‘Allen’, 25, ‘Texas’, 15000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)

VALUES (3, ‘Teddy’, 23, ‘Norway’, 20000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)

VALUES (4, ‘Mark’, 25, 'Rich-Mond ', 65000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)

VALUES (5, ‘David’, 27, ‘Texas’, 85000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)

VALUES (6, ‘Kim’, 22, ‘South-Hall’, 45000.00 );

INSERT INTO COMPANY(ID,NAME,AGE,ADDRESS,SALARY)

VALUES (7, ‘James’, 24, ‘Houston’, 10000.00 );


f67c9777f82f41d6b90f55bfc7803691.png


🐴 2.select语句


a 找出AGE大于等于25且薪资大于等于65000 --and

select * from company where age>=25 and salary>=65000;

b 找出AGE大于等于25或者薪资大于等于65000 --or

select * from company where age>=25 or salary>=65000;

c 找不age字段不为空的数据 --null

select * from company where age is not null;

d 找出表company name字段以Pa开头的数据 --like

select * from company where name like ‘Pa%’;

select * from company where salary::text like ‘20%’;

注意:PG的like只能匹配到字符串

e 找出age为25或者27的员工 --in

select * from company where age in (25,27);

f 找出age不为25或者27的员工 --not in

select * from company where age not in (25,27);

g 找出age不为25到27的员工 --between

select * from company where age between 25 and 27;


🐴 3.子查询


案例:找出年龄大于 薪资大于65000员工的年龄

select * from company where age>(

select age from company where salary>65000);

判断条件存不存在

select * from company

where exists (select age from company where salary>95000)


🐴 4.LIMIT字句


案例1:列出表company表前3条记录

select * from company limit 3;

案例2:列出表company表4-7的记录

select * from company limit 4 OFFSET 3;


🐴 5.order by


asc:升序 DESC:降序

案例:对表company name降序,薪资升序

select * from company order by name desc,salary asc;


🐴 6.group by


案例:查询company表同年龄段薪资的平均值

select age,avg(salary) from company group by age;


🐴 7.with子句


辅助的用法,便于大查询

案例:查找下工资小于20000的数据,并计算他们的和

with recursive t(n) as(

values(0)

union all

select salary from company where salary <20000

)

select sum(n) from t;


🐴 8.having子句


实例:

找出重名的员工的姓名

select name from company

group by name

having count(*)>1;


🐴 9.distinct


作用:去除重复值,获得唯一

实例:获取公司员工的姓名

select distinct name from company;


⛳️11. PostgreSQL数据库有什么优势?

PostgreSQL数据库是功能强大的开源数据库,

它支持丰富的数据类型(如JSON和JSONB类型、数组类型)和自定义类型。

PostgreSQL数据库提供了丰富的接口,可以很方便地扩展它的功能,

如可以在GiST框架下实现自己的索引类型,支持使用C语言写自定义函数、触发器,

也支持使用流行的编程语言写自定义函数。

PostgreSQL数据库具有以下优势:

PostgreSQL数据库是目前功能最强大的开源数据库,

它是最接近工业标准SQL92的查询语言,

至少实现了SQL:2011标准中要求的179项主要功能中的160项

(注:目前没有哪个数据库管理系统能完全实现SQL:2011标准中的所有主要功能)。

稳定可靠:PostgreSQL是唯一能做到数据零丢失的开源数据库。

目前有报道称国内外有部分银行使用PostgreSQL数据库。

开源省钱: PostgreSQL数据库是开源的、免费的,

而且使用的是类BSD协议,在使用和二次开发上基本没有限制。

支持广泛:PostgreSQL 数据库支持大量的主流开发语言,

包括C、C++、Perl、Python、Java、Tcl以及PHP等。

PostgreSQL社区活跃:PostgreSQL基本上每3个月推出一个补丁版本,

这意味着已知的Bug很快会被修复,有应用场景的需求也会及时得到响应。


● PostgreSQL是加州大学伯克利分校计算机系开发的,一个开源免费的关系式数据库管理系统,

经过长达15年以上的积极开发和不断改进,PostgreSQL已在可靠性、稳定性、数据一致性等获得了业内相对高的声誉。

● PostgreSQL可以运行在所有主流操作系统上,包括Linux、AIX、HP-UX、Solaris和Windows等34种平台。

● PostgreSQL是完全的事务安全性数据库,

完整地支持外键、联合、视图、触发器和存储过程(并支持多种语言开发存储过程)。

● PostgreSQL支持了大多数SQL标准的数据类型,

包括整型、数值型、布尔型、字节型、字符型、日期型、时间型、二进制的大对像(图片、声音和视频)。

● PostgreSQL的存储过程开发可以使用众多的程序语言,

包括Java、Perl、Python、Ruby、Tcl、C/C++和自带的PL/pgSQL,

其中的PL/pgSQL与Oracle的PL/SQL很相似,内置了数百个函数,

功能从基本的算术计算和字符串处理到加密逻辑计算并与Oracle有高度兼容性。

● PostgreSQL对很多高级开发语言有原生的编程接口,

如C/C++、Java、.Net、Perl、Python、Ruby、Tcl和ODBC以及其他语言等,也包含各种文档。

● PostgreSQL有很多高级功能,像多版本并发控制(MVCC)、按时间点恢复(PITR)、表空间、异步复制、嵌套事务、在线热备、复杂查询的规划和优化以及为容错而进行的预写日志等。

● PostgreSQL支持国际字符集、多字节编码并支持使用当地语言进行排序、大小写处理和格式化等操作。

● PostqreSQL有很多高品质的图形化的PostgreSQL管理工具软件,包括开源和商业性质的。

● PostgreSQL的源代码可以自由获取,它的授权是在非常自由的开源授权下,

这种授权允许用户在各种开源或是闭源项目中使用、修改和发布PostgreSQL的源代码。

用户对源代码的可以按用户意愿进行任何修改、改进。

● 目前有不少业务系统使用PostgreSQL在实际生产环境下管理着超过4TB的数据。

● PostgreSQL的快速发展是由于MySQL被Oracle公司收购导致的,

同时在2019年微软官宣收购PostgreSQL初创公司Citus Data。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
7月前
|
SQL 关系型数据库 PostgreSQL
把PostgreSQL的表导入SQLite
把PostgreSQL的表导入SQLite
95 0
|
7月前
|
存储 关系型数据库 数据库
postgresql|数据库|提升查询性能的物化视图解析
postgresql|数据库|提升查询性能的物化视图解析
684 0
|
1月前
|
SQL 关系型数据库 数据库
PostgreSQL性能飙升的秘密:这几个调优技巧让你的数据库查询速度翻倍!
【10月更文挑战第25天】本文介绍了几种有效提升 PostgreSQL 数据库查询效率的方法,包括索引优化、查询优化、配置优化和硬件优化。通过合理设计索引、编写高效 SQL 查询、调整配置参数和选择合适硬件,可以显著提高数据库性能。
169 1
|
4月前
|
缓存 关系型数据库 数据库
PostgreSQL 查询性能
【8月更文挑战第5天】PostgreSQL 查询性能
82 8
|
5月前
|
SQL 监控 关系型数据库
实时计算 Flink版操作报错合集之在设置监控PostgreSQL数据库时,将wal_level设置为logical,出现一些表更新和删除操作报错,怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
6月前
|
SQL 关系型数据库 数据库
Python执行PostgreSQL数据库查询语句,并打印查询结果
本文介绍了如何使用Python连接和查询PostgreSQL数据库。首先,确保安装了`psycopg2`库,然后创建数据库连接函数。接着,展示如何编写SQL查询并执行,例如从`employees`表中选取所有记录。此外,还讨论了处理查询结果、格式化输出和异常处理的方法。最后,提到了参数化查询和事务处理以增强安全性及确保数据一致性。
Python执行PostgreSQL数据库查询语句,并打印查询结果
|
5月前
|
Java 关系型数据库 API
使用Spring Boot和PostgreSQL构建高级查询
使用Spring Boot和PostgreSQL构建高级查询
|
6月前
|
SQL 关系型数据库 数据库
Python查询PostgreSQL数据库
木头左教你如何用Python连接PostgreSQL数据库:安装`psycopg2`库,建立连接,执行SQL脚本如创建表、插入数据,同时掌握错误处理和事务管理。别忘了性能优化,利用索引、批量操作提升效率。下期更精彩!💡 csvfile
Python查询PostgreSQL数据库
|
6月前
|
关系型数据库 PostgreSQL
postgresql如何将没有关联关系的两张表的字段合并
【6月更文挑战第2天】postgresql如何将没有关联关系的两张表的字段合并
151 3
|
6月前
|
SQL 关系型数据库 数据库连接
ClickHouse(20)ClickHouse集成PostgreSQL表引擎详细解析
ClickHouse的PostgreSQL引擎允许直接查询和插入远程PostgreSQL服务器的数据。`CREATE TABLE`语句示例展示了如何定义这样的表,包括服务器信息和权限。查询在只读事务中执行,简单筛选在PostgreSQL端处理,复杂操作在ClickHouse端完成。`INSERT`通过`COPY`命令在PostgreSQL事务中进行。注意,数组类型的处理和Nullable列的行为。示例展示了如何从PostgreSQL到ClickHouse同步数据。一系列的文章详细解释了ClickHouse的各种特性和表引擎。
178 0