1. 程式人生 > 資料庫 >SQL筆記二:個性化查詢之模糊查詢、分組、排序、限制等

SQL筆記二:個性化查詢之模糊查詢、分組、排序、限制等

1.掌握in的用法

使用場景:做條件查詢的時候,條件欄位的取值有多個情況,in(範圍),not in(範圍)

SELECT * FROM  student  WHERE  id IN(1501001,1501002,1502001);

拓展:除了in,對應的有not in的用法,指條件欄位不在某個資料內的情況。

 

2.掌握模糊查詢like的用法

2.1使用%來模糊匹配

使用場景:條件欄位不完整時,且沒有字元長度限制時,可以用%做模糊匹配。

例項:查詢所有姓“李”的學生資訊。

SELECT * FROM  student  WHERE  name LIKE '李%';

拓展:以李開頭是 '李%',以胡結尾是 '%李',包含李是 '%李%'

2.2 使用_來模糊匹配

_和%區別是,_起到的是一個佔位符的作用,一個_只能匹配一個任意的字元,而%可以匹配任意長度的字元。

使用場景:條件欄位不完整時,且有字元長度限制時,可以用_做模糊匹配。

例項:查詢所有姓“李”且名字為兩個字的學生資訊。

SELECT * FROM  student  WHERE  name LIKE '李_';

 

3.between和not between

between使用場景:條件欄位的值處於(或不處於)兩個值之間

語法:SELECT 欄位 FROM 表名 WHERE column BETWEEN value1(mix) AND value2(max)

SELECT 欄位 FROM 表名 WHERE column NOT BETWEEN value1 AND value2

例項:根據學生的成績表,查出所有成績在85-90分的學號,學號不能重複

SELECT  DISTINCT id   FROM  score  WHERE   score BETWEEN 85 AND 90;   (DISTINCT去重)

 

4、DISTINCT去重

distinct使用場景:去除查詢結果中的重複資料

SELECT DISTINCT 欄位1,欄位2... FROM 表名;

 

5、GROUP BY分組語句
1、根據一列或多列對結果集進行分組

語法:GROUP BY 欄位1,欄位2

欄位1、欄位2相同的為一組,在分組的列上可以使用聚合函式COUNT、SUM、AVG、MAX、MIN

語法:SELECT AVG(欄位) FROM S GROUP BY 欄位;

 例項:

SELECT MemberID 使用者id,
min(Amount) 最小投資額,
max(Amount) 最大投資額,
count(1) 投資次數,
avg(Amount) 平均投資額
FROM loan 
GROUP BY MemberID;

 

6、HAVING 分組條件

一般和GROUP BY 聯合使用,篩選分組後的資料

與WHERE的區別:where字句在聚合前先篩選記錄,作用在GROUP BY和having字句前,而having字句在聚合後對組記錄進行篩選

如:SELECT sid,COUNT(1)  FROM  SC  GROUP BY  sid  HAVING  COUNT(1)>2;

select 主鍵,count(*) from 表名 where etl_date='20191212' group by 主鍵 having count(*)>1;

 

7、ORDER BY排序語句
ORDER BY對結果集排序

ORDER BY field [ASC | DESC]..
ASC表示升序,DESC表示降序
可以使用任意欄位作為排序條件
可以指定多個欄位進行排序
SELECT  *  FROM  表名  ORDER BY  欄位  ASC;

SELECT  *  FROM  表名  ORDER BY  欄位1(可以為聚合函式)  ASC(可省略),欄位2(可以為聚合函式)  DESC(不可省略);

--先以欄位1升序,欄位1相同,再以欄位2降序

 

8、LIMIT限制結果集語句
1、分頁---LIMIT

LIMIT  M,N(M代表從M+1條記錄開始取,N代表要查詢多少記錄)分頁---索引從0開始的,偏移量

SELECT  *  FROM  表名  LIMIT 0,10; -- 表示從第一條資料開始,取前10條資料

SELECT  *  FROM  表名 LIMIT 10,10; -- 表示從第十一條資料開始,取前10條資料

2、OFFSET偏移量

SELECT  *  FROM  表名  LIMIT  10  OFFSET  0;

SELECT  *  FROM  表名  LIMIT  10  OFFSET   10;

3、TOP語法

SELECT  *  FROM  表名  LIMIT  5; 

SELECT  *  FROM  表名  ORDER   BY  id  DESC  LIMIT  1;