日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

對于數據分析來說,MySQL使用最多的是查詢,比如對數據進行排序、分組、去重、匯總及字符串匹配等,如果查詢的數據涉及多個表,還需要要對表進行連接,本文就來說說MySQL中常用的查詢子句。

1、排序:order by

排序通過order by實現,例如,從表stuinfo中查詢數據,并按照年齡排序,sql語句為:

select * from stuinfo order by age;

查詢結果:

MySQL中常用的15個查詢子句

 

可以看到,查詢結果是按照年齡進行升序排列的,如果要實現降序排列,只需要在后面加上desc即可,sql語句為:

select * from stuinfo order by age desc;

查詢結果:

MySQL中常用的15個查詢子句

 

此時的查詢結果按照年齡降序排列。

如果是字符串,也可以用order by進行排序,例如,按照姓名排序,sql語句為:

select * from stuinfo order by stuname;

查詢結果:

MySQL中常用的15個查詢子句

 

從上面可以看到,字符串排序其實是按照首字母進行升序排列,當然還可以對日期進行排序,請自行思考。

2、分組:group by

分組通過group by子句實現,例如,按照性別分組,sql語句為。

select gender,count(*) from stuinfo group by gender;

查詢結果:

MySQL中常用的15個查詢子句

 

以上sql語句按照性別分組,并給出每組的人數,按照其他字段分組也是類似的。

3、去重:distinct

去重是數據處理中常見的操作,通過distinct子句實現,例如查詢學員所在的所有城市,這就需要去重,因為有些學員在同一個城市。

sql語句為:

select distinct city from stuinfo;

查詢結果:

MySQL中常用的15個查詢子句

 

可以看到,去重就是在去重字段前加上distinct即可。

4、空值:is null/is not null

空值就是判斷某個字段為空或者不為空的記錄,例如,查詢城市為空的記錄,sql語句為:

select * from stuinfo where city is null;

查詢結果:

MySQL中常用的15個查詢子句

 

可以看到,查詢為空的記錄其實就是where條件后跟is null。

反過來,如果查詢城市不為空的記錄,跟上is not null即可,sql語句為:

select * from stuinfo where city is not null;

查詢結果:

MySQL中常用的15個查詢子句

 

想系統學習數據分析?請查看下方專欄。


專欄
數據分析師入門與實戰
作者:笨鳥學數據分析
298幣
4人已購
查看

 

5、匯總:計數、最值、求和、均值

匯總其實計數、求最大值/最小值、求和、求均值等。

最常用的統計表中有多少記錄,通過count實現,sql語句為:

select count(*) from stuinfo;

查詢結果:

MySQL中常用的15個查詢子句

 

查詢表中某個字段的最大值和最小值,通過max/min實現,例如查詢最大年齡,sql語句為:

select max(age) from stuinfo;

查詢結果:

MySQL中常用的15個查詢子句

 

接下來的一個問題:查詢年齡最大的學員的姓名,sql語句怎么寫?

這是一個條件查詢,條件就是年齡要等于最大的年齡,按照這個思路,寫出sql語句:

select stuname,age from stuinfo 
where age=(select max(age) from stuinfo);

查詢結果:

MySQL中常用的15個查詢子句

 

從上面可以看到,其實是把最大的年齡查詢出來作為條件,再查詢對應的姓名和年齡。

留個思考題:如何查詢年齡最小的學員姓名?

求和,用sum即可,一定是對數值型數據求和,跟count類似,這樣不做演示。

最后是均值,用avg,例如,查詢所有學員的平均年齡,sql語句為:

select avg(age) from stuinfo;

查詢結果:

MySQL中常用的15個查詢子句

 

6、別名:as

別名,就是as,意為用作,例如,查詢出年齡的最大值、最小值和均值,sql語句為:

select max(age),min(age),avg(age) from stuinfo;

查詢結果:

MySQL中常用的15個查詢子句

 

這樣顯示字段名不太好看,我們可以用as起一個別名,sql語句為:

select max(age) as age_max,min(age) as age_min,avg(age) as age_avg from stuinfo;

查詢結果:

MySQL中常用的15個查詢子句

 

7、表的連接

當要查詢的記錄涉及兩個或者兩個以上的表時,就需要表的連接。

表的連接有三種:內連接、左連接和右連接。

(1)內連接:inner join

內連接相當于求兩個表的交集,如下圖所示。

MySQL中常用的15個查詢子句

 

例如,有兩個表:學員信息表和成績表,有一個共同的列:學號,如下圖所示。

MySQL中常用的15個查詢子句

 

現在想查詢出每個學員的姓名和成績,查詢結果如下圖所示。

MySQL中常用的15個查詢子句

 

以上查詢結果中的姓名需要從第一個表中提取,成績需要從第二個表中提取,這叫表的連接

因為學號是共同的列,所以根據學號連接即可,以上的這種連接方式是獲取兩個表中學號相同的記錄,叫作內連接

具體的sql語句為:

select sname,score from 
tb1 inner join tb2 on tb1.sid=tb2.sid;

查詢結果:

MySQL中常用的15個查詢子句

 

需要注意的是,連接條件用on。

(2)左連接:left join

左連接是以左表為基準,去匹配右表中的記錄,如果右表中沒有對應匹配記錄則為空。

左連接用集合中的文氏圖表示如下。

MySQL中常用的15個查詢子句

 

還是用以上提到的學員信息表和成績表,左連接的結果為:

MySQL中常用的15個查詢子句

 

左連接的sql語句為:

select sname,score from 
tb1 left join tb2 on tb1.sid=tb2.sid;

查詢結果:

MySQL中常用的15個查詢子句

 

(3)右連接:right join

右連接是以右表為基準,去匹配左表中的記錄,如果左表中沒有對應匹配記錄則為空。

右連接用集合中的文氏圖表示如下。

MySQL中常用的15個查詢子句

 

還是用以上提到的學員信息表和成績表,右連接的結果為:

MySQL中常用的15個查詢子句

 

右連接的sql語句為:

select sname,score from 
tb1 right join tb2 on tb1.sid=tb2.sid;

查詢結果:

MySQL中常用的15個查詢子句

 

8、字符串匹配:like

有時候在字符串查找時,需要查找符合某個匹配模式的字符串。

例如,在表stuinfo中,查找城市中含有字符串‘an’的記錄,sql語句為:

select * from stuinfo where city like '%an%';

注意:匹配模式中的%表示匹配任意長度的任意字符串。

9、集合:in

查找屬于某個集合的記錄用in。

例如,查找城市為北京或者天津的記錄,sql語句為:

select * from stuinfo where city in('Beijing','Tianjin');

查詢結果:

MySQL中常用的15個查詢子句

 

10、條件語句:having

這里說的條件語句是having,跟where類似,但是一般和統計函數連用。

比如,查找平均年齡小于25歲的城市,sql語句為:

select city from stuinfo group by city having avg(age)<25;

查詢結果:

MySQL中常用的15個查詢子句

 

以上sql語句先按照城市分組,再跟條件語句having。

11、區間查找:between and

between and用于查找符合某個區間(包含兩個邊界的值)的記錄。

例如,查找年齡介于20到30歲之間的記錄,sql語句為:

select * from stuinfo having age between 20 and 30;

查詢結果:

MySQL中常用的15個查詢子句

 

12、聯結:union

聯結,也叫聯合,用于連接兩個查詢的結果,并且去重。

例如,兩個表中都有學號,用sql語句分別從這兩個表中查詢出學號,然后聯結。

select sid from tb1
union
select sid from tb2;

查詢結果:

MySQL中常用的15個查詢子句

 

以上sql語句相當于將兩個select語句的查詢結果用union合并,并且是去重合并。

如果不想去重,用union all即可,sql如下。

select sid from tb1
union all
select sid from tb2;

查詢結果:

MySQL中常用的15個查詢子句

 

13、日期格式化:date_format

在SQL中,對于日期時間的處理也是很常見的問題。

例如,按照年份、月份或者日期等對數據進行分組匯總,就需要從日期時間中提取年份、月份及日期等。

舉個例子,獲取每個學員的出生年份,sql語句為:

select date_format(birthdate,'%Y') as birth_year from stuinfo;

查詢結果:

MySQL中常用的15個查詢子句

 

獲取出生月份也是如此,只是參數用'%m',sql語句為:

select date_format(birthdate,'%m') as birth_year from stuinfo;

查詢結果:

MySQL中常用的15個查詢子句

 

獲取到年份、月份后,就可以按照年份、月份進行分組查詢統計了。

14、條件分支:case語句

條件分支是數據統計中的一個很重要的應用,在MySQL中用case語句表達條件分支,case語句有以下兩種用法。

用法一:

例如,根據學員所處的城市,將記錄標記為一線城市及其他,sql語句為:

select distinct city,
	case city
		when 'Beijing' then '一線城市'
		when 'Shanghai' then '一線城市'
    else '其他' end as city_level
from stuinfo;

查詢結果:

MySQL中常用的15個查詢子句

 

從上面看到,case后面跟的是要判斷的字段,when后跟的是不同的情況,then則是不同情況對應的類別,最后的else表示其他情況。

整個case語句相當于給原來的表增加一個字段:city_level,然后我們可以根據這個字段進行分組查詢。

用法二:

例如,根據學員的年齡進行分層,青年、中年及其他,sql語句為:

select stuname,age,
	case when age<30 then '青年'
    when age>=30 and age<35 then '中年'
    else '其他' end as age_level
from stuinfo;

查詢結果:

MySQL中常用的15個查詢子句

 

從上面可以看到,case后面跟的是條件when,即年齡滿足什么條件時,將其劃分到對應的類別,最后的else表示其他情況。

整個case語句相當于給原來的表增加一個字段:age_level,然后我們可以根據這個字段進行分組查詢。

15、變量

最后,談談MySQL中的變量,當然,MySQL中的變量有好幾種類型,這里只說用戶變量,像@var這種。

例如,我們希望根據學員的年齡計算出每個人到35歲還有幾年,這里可以定義一個變量并賦值為35,然后利用這個變量減去年齡就得到結果。

首先,定義變量var,sql語句為:

set @var:=35;

接著,使用這個變量,sql語句為:

select @var-age as age_gap from stuinfo;

查詢結果:

MySQL中常用的15個查詢子句

 

當然,關于變量還有很多更復雜的用法,多用于計算連續登陸天數這種問題或者存儲過程中。

以上就是MySQL中常用的15個查詢子句。

分享到:
標簽:MySQL
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定