SQL --查詢

mysql  查詢的基本語法java

select 屬性名 
from 表名/視圖 
[where 條件表達式] 
[group by 屬性名 [having 條件表達式]]
[order by 屬性名 [asc|desc]]
[limit offset,row count]

where子句:按照"條件表達式"指定的條件進行查詢mysql

group by子句:按照"屬性名"指定的字段進行分組正則表達式

having子句:有group by纔能有having子句,只有知足"條件表達式"中指定的條件才能輸出sql

group by子句:一般和count()、sum()等聚合函數一塊兒使用函數

order by子句:按照"屬性名"字段進行排序,默認是asc(升序排列)ui

經常使用查詢code

1.帶like的字符匹配查詢
排序

1.1通配符"%",匹配任意長度的字符,包括零字符字符串

//匹配以a開頭,以z結尾的字符串
select * from t_test tt where tt.name like 'a%z';
//匹配以a開頭的字符串
select * from t_test tt where tt.name like 'a%';
//匹配以z結尾的字符串
select * from t_test tt where tt.name like '%z';

1.2單個匹配字符"_",只能匹配一個字符
it

//字符串位數爲2,以a開頭
select * from t_test where tt.name like 'a_';
//字符串位數爲2,以z結尾
select * from t_test where tt.name like '_z';

2.having 過濾分組

having是配合group by 使用的,即只有group by存在的狀況下,纔會有having。

select * from t_test tt group by tt.id having 過濾條件

在group by 中使用with rollup

select tt.id,count(1) as total from t_test tt group by tt.id with rollup

備註:使用rollup時,不能同時使用order by 子句對結果進行排序,由於rollup與order by是互斥的。

3.合併查詢

使用union關鍵字進行合併查詢,兩個查詢對應的列數和數據類型必須相同。

union:刪除重複的記錄

union all:不刪除重複記錄也不對結果進行自動排序

select id,name from t_test1 where id > 10
union
select id,name from t_test2 where name = '張三';

4.正則表達式查詢

mysql中使用REGEXP關鍵字指定正則表達式的字符匹配

4.1 查詢以特定字符或字符串開頭的記錄

字符"^"匹配以特定字符或字符串開頭的記錄

SELECT * FROM t_commodity tc WHERE tc.COMMODITY_ID REGEXP '^0'

4.2查詢以特定字符或字符串結尾的記錄

字符"$"匹配以特定字符或字符串結尾的記錄

SELECT * FROM t_commodity tc WHERE tc.COMMODITY_ID REGEXP '1$'

4.3 使用符號"."來代替字符串中任意一個字符

SELECT * FROM t_commodity tc WHERE tc.COMMODITY_ID REGEXP '0.1'

4.4 使用"*"和"+"來匹配多個字符

"*"匹配前面的字符任意屢次,包括0次,不限制該字符出現的位置。

"+"匹配前面的字符至少1次。

select * from t_fruits tf where tf.name REGEXP '^or*'

查詢的結果要求:o開頭,r匹配任意屢次(不限制r出現的位置)

結果示例以下:

orange、opprend等

4.5 匹配指定字符串

正則表達式能夠匹配指定字符串,若是須要匹配多個字符串,多個字符串之間用分隔符"|"隔開

select * from t_fruits tf where tf.name REGEXP 'lxl|panda'

結果示例

cclxl、pandaxx等。

4.6 匹配指定字符串中的任意一個

[]括號指定一個字符集合,只匹配其中的任意一個字符

select * from t_fruits where tf.name REGEXP '[xp]'

結果示例

lxl、panda

相關文章
相關標籤/搜索