久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL中常用的查詢子句有哪些

157次閱讀
沒有評論

共計 4486 個字符,預計需要花費 12 分鐘才能閱讀完成。

這篇文章給大家分享的是有關 MySQL 中常用的查詢子句有哪些的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。

對于數據分析,MySQL 多采用查詢,如數據的排序、分組、去重、匯總、字符串匹配等。如果查詢的數據涉及多個表,則需要連接這些表。

MySQL 中常用的查詢子句:

*1、* 排序:order by

排序是通過順序實現的,例如,從 stuinfo 表中查詢數據并按年齡排序。sql 語句是:

select * from stuinfo order by age;

查詢結果:

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

select * from stuinfo order by age desc;

查詢結果:

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

以上是針對數值型數據排序,如果是字符串,也可以用 order by 進行排序,例如,按照姓名排序,sql 語句為:

select * from stuinfo order by stuname;

查詢結果:

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

*2、* 分組:group by

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

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

查詢結果:

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

*3、* 去重:distinct

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

sql 語句為:

select distinct city from stuinfo;

查詢結果:

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

*4、* 空值:is null/is not null

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

select * from stuinfo where city is null;

查詢結果:

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

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

select * from stuinfo where city is not null;

查詢結果:

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

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

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

select count(*) from stuinfo;

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

select max(age) from stuinfo;

查詢結果:

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

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

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

查詢結果:

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

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

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

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

select avg(age) from stuinfo;

查詢結果:

MySQL 中常用的查詢子句有哪些

*6、* 別名:as

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

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

查詢結果:

MySQL 中常用的查詢子句有哪些

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

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

查詢結果:

MySQL 中常用的查詢子句有哪些

*7、* 表的連接

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

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

(1)內連接:inner join

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

MySQL 中常用的查詢子句有哪些

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

MySQL 中常用的查詢子句有哪些

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

MySQL 中常用的查詢子句有哪些

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

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

具體的 sql 語句為:

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

查詢結果:

MySQL 中常用的查詢子句有哪些

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

(2)左連接:left join

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

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

MySQL 中常用的查詢子句有哪些

還是用以上提到的學員信息表和成績表,左連接的示意圖如下。

MySQL 中常用的查詢子句有哪些

左連接的 sql 語句為:

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

查詢結果:

MySQL 中常用的查詢子句有哪些

(3)右連接:right join

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

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

MySQL 中常用的查詢子句有哪些

還是用以上提到的學員信息表和成績表,右連接的示意圖如下。

MySQL 中常用的查詢子句有哪些

右連接的 sql 語句為:

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

查詢結果:

MySQL 中常用的查詢子句有哪些

*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 中常用的查詢子句有哪些

*10、* 條件語句:having

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

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

select city from stuinfo group by city having avg(age)

查詢結果:

MySQL 中常用的查詢子句有哪些

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

*11、* 區間查找:between and

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

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

select * from stuinfo having age between 20 and 30;

查詢結果:

MySQL 中常用的查詢子句有哪些

*12、* 聯結:union

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

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

select sid from tb1unionselect sid from tb2;

查詢結果:

MySQL 中常用的查詢子句有哪些

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

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

select sid from tb1union allselect sid from tb2;

查詢結果:

MySQL 中常用的查詢子句有哪些

*13、* 日期格式化:date_format

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

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

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

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

查詢結果:

MySQL 中常用的查詢子句有哪些

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

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

查詢結果:

MySQL 中常用的查詢子句有哪些

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

*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 中常用的查詢子句有哪些

從上面看到,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 中常用的查詢子句有哪些

從上面可以看到,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 中常用的查詢子句有哪些

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

感謝各位的閱讀!關于“MySQL 中常用的查詢子句有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-18發表,共計4486字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 常州市| 万安县| 文化| 姜堰市| 电白县| 潍坊市| 昭苏县| 忻城县| 会宁县| 察雅县| 砚山县| 德安县| 桂阳县| 顺昌县| 湛江市| 柞水县| 西藏| 苗栗县| 岢岚县| 渭南市| 定西市| 介休市| 红河县| 讷河市| 南充市| 慈利县| 乌兰浩特市| 汕头市| 准格尔旗| 巫溪县| 保亭| 遂昌县| 长葛市| 阿拉善右旗| 石阡县| 梅河口市| 定结县| 资阳市| 都昌县| 咸丰县| 白城市|