【學習筆記】PostgreSQL進階查詢之排序、分組和條件查詢


這一節主要包含如下內容:

  • ORDER BY 子句
  • GROUP BY 子句
  • HAVING 子句
  • 條件查詢
    —AND
    —OR
    —NOT
    —LIKE
    —IN
    —BETWEEN

一、ORDER BY 子句

說明:

按序查詢表

語法:

SELECT column_list 
FROM table_name 
[WHERE condition] 
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

參數說明:

  • column_list:它指定要檢索的列或計算。
  • table_name:它指定要從中檢索記錄的表。FROM子句中必須至少有一個表。
  • WHERE conditions:可選。 它規定必須滿足條件才能檢索記錄。
  • ASC:可選。它通過表達式按升序排序結果集(默認,如果沒有修飾符是提供者)。
  • DESC:可選。 它通過表達式按順序對結果集進行排序。
    示例1(單列排序):
select * from employees
order by age asc;

結果1:

示例2(多列排序):

select * from employees
order by age, address asc;

結果2:

二、GROUP BY 子句

說明:

用於將具有相同數據的表中的這些行分組在一起(提取出指定列中數據內容完全不同的列)

語法:

SELECT column_list 
FROM table_name 
WHERE [conditions ] 
GROUP BY column1, column2....columnN 
ORDER BY column1, column2....columnN

示例1:

select age from employees
group by age;

結果1:

示例2:

select name,address from employees
group by name,age,address,salary;

結果2:

三、HAVING 子句

說明:

HAVING子句與GROUP BY子句組合使用,用於選擇函數結果滿足某些條件的特定行

語法:

SELECT column1, column2 
FROM table1, table2 
HERE [ conditions ] 
GROUP BY column1, column2 
HAVING [ conditions ] 
ORDER BY column1, column2

示例(顯示name的重復次數小於2次的數據):

select name
from employees
group by name having count(name) < 2;

結果:

三、條件查詢

3.1 AND條件

語法:

SELECT column1, column2, ..... columnN 
FROM table_name 
WHERE [search_condition] 
AND [search_condition];

示例:

select * from employees
where age > 21
and salary >100000;

結果:

3.2 OR條件

語法:

SELECT column1, column2, ..... columnN 
FROM table_name 
WHERE [search_condition] 
OR [search_condition];

示例:

select * from employees
where age = 21
or age = 25;

結果:

3.3 NOT條件

語法:

SELECT column1, column2, ..... columnN 
FROM table_name WHERE [search_condition] NOT [condition];

示例:

select * from employees
where age not in (21,23);

結果:

3.4 LIKE條件

說明:

LIKE條件與WHERE子句一起用於從指定條件滿足LIKE條件的表中獲取數據

語法:

SELECT column1, column2, ..... columnN 
FROM table_name 
WHERE [search_condition] LIKE [condition];

示例1:

select * from employees
where name like 'Ma%';

結果1:

示例2:

select * from employees
where address like '%大道%';

結果2:

3.5 IN條件

說明:

IN條件與WHERE子句一起用於從指定條件滿足IN條件的表中獲取數據(這是個列表,而非范圍)

語法:

SELECT column1, column2, ..... columnN 
FROM table_name 
WHERE [search_condition] IN [condition];

示例:

select * from employees
where age in (21, 24);

結果:

3.6 BETWEEN 條件

說明:

BETWEEN條件與WHERE子句一起用於從指定條件滿足BETWEEN條件的表中獲取數據(這是個范圍)

語法:

SELECT column1, column2, ..... columnN 
FROM table_name 
WHERE [search_condition] BETWEEN [condition];

示例:

select * from employees
where age between 21 and 24;

結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM