【PostgreSQL 17】3 查询

简单查询

别名

SELECT
	first_name AS "名字", 
	last_name AS "姓氏"
FROM
	employees
;

去重

SELECT
	DISTINCT department_id, job_id
FROM
	employees
;

对组合进行去重,而不只是department_id
image

无FROM快速查询

SELECT
	1+1 AS "结果",
	version() AS "版本"
;

image

利用查询条件过滤数据

BETWEEN

SELECT
	*
FROM
	employees
WHERE
	hire_date <= '2005-01-01'
AND
	salary BETWEEN 10000 AND 12000
;

IN

SELECT
	*
FROM
	employees
WHERE
	salary IN (10000, 11000)
;

image

字符串的模糊匹配 LIKE

ILIKE 不区分大小写

% 任意多个字符

SELECT
	first_name
FROM
	employees
WHERE
	first_name LIKE 'S%'
OR
	first_name LIKE '%s'
;

_ 任意一个字符

SELECT
	's ' LIKE 's_'
;

image

\转义字符

SELECT
	*
FROM
	employees
WHERE
	first_name LIKE 'S\%'
	-- first_name LIKE 'S#%' ESCAPE '#'
;

空值判断

IS NULL可以简写为ISNULL,
IS NOT NULL 可以简写为NOTNULL

SELECT
	*
FROM
	employees
WHERE
	manager_id IS NULL
;

IS [NOT] DISTINCT FROM 运算符支持空值比较

SELECT
	1 IS DISTINCT FROM null
;

image

复杂查询

AND

SELECT
	*
FROM 
	employees
WHERE
	first_name = 'Steven'
AND
	last_name = 'King'
;

OR

SELECT
	*
FROM 
	employees
WHERE
	first_name = 'Steven'
OR
	last_name = 'King'
;

注意点

OR 短路运算
1/0没有运算,所以不会报错。

SELECT
	1=1
OR
	1/0=1
;

AND 优先级更高

SELECT 
	*
FROM
	employees
WHERE
	salary = 10000
OR
	salary = 12000
AND
	department_id = 80
;

image

排序显示

默认为升序 ASC
降序 DESC
null在排序时视为最大值

SELECT 
	employee_id, first_name, last_name, hire_date, salary
FROM
	employees
ORDER BY
	first_name DESC
;

image
也可以用查询字段中的字段序号来排序

SELECT 
	employee_id, first_name, last_name, hire_date, salary
FROM
	employees
ORDER BY
	2 DESC
;

使用NULLS FIRST将NULL排到最前面

SELECT 
	employee_id, manager_id
FROM
	employees
ORDER BY
	manager_id NULLS FIRST
;

限制返回结果的数量

SELECT 
	employee_id, manager_id
FROM
	employees
FETCH FIRST 10 ROWS ONLY
;
SELECT 
	employee_id, manager_id
FROM
	employees
LIMIT 10
;
SELECT 
	employee_id, manager_id
FROM
	employees
FETCH FIRST 10 ROWS WITH TIES   -- 和最后值相同的行都会返回
;

分页查询 OFFSET

查询从第11个开始的10个

SELECT 
	employee_id, manager_id
FROM
	employees
OFFSET 10 ROWS
FETCH FIRST 10 ROWS ONLY
;
SELECT 
	employee_id, manager_id
FROM
	employees
LIMIT 10
OFFSET 10
;

参考资料

[1] 不剪发的Tony老师 PostgreSQL开发指南 第05节~第08节
[2] 不剪发的Tony老师 PostgreSQL开发指南 第09节~第11节

posted @ 2025-08-07 10:07  每天都要哈哈笑  阅读(6)  评论(0)    收藏  举报