91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-12-20 17:34:13 來源:億速云 閱讀:578 作者:小新 欄目:MySQL數據庫

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

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

MySQL中常用的查詢子句:

*1、 *排序:order by

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

select * from stuinfo order by age;

查詢結果:

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

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

select * from stuinfo order by age desc;

查詢結果:

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

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

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

select * from stuinfo order by stuname;

查詢結果:

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

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

*2、 *分組:group by

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

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

查詢結果:

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

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

*3、 *去重:distinct

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

sql語句為:

select distinct city from stuinfo;

查詢結果:

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

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

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

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

select * from stuinfo where city is null;

查詢結果:

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

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

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

select * from stuinfo where city is not null;

查詢結果:

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

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

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

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

select count(*) from stuinfo;

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

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

select max(age) from stuinfo;

查詢結果:

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

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

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

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

查詢結果:

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

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

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

求和,用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)<25;

查詢結果:

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中常用的查詢子句有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

白银市| 思茅市| 武平县| 抚州市| 辽阳市| 称多县| 奉化市| 犍为县| 怀化市| 德令哈市| 弋阳县| 罗甸县| 商丘市| 黎平县| 易门县| 秦皇岛市| 平塘县| 南和县| 海淀区| 台北县| 柳林县| 河曲县| 芷江| 清涧县| 宁陕县| 即墨市| 井陉县| 陇西县| 枝江市| 遂昌县| 清水县| 衡阳县| 常熟市| 溆浦县| 定边县| 平和县| 南木林县| 涡阳县| 双柏县| 辽源市| 双流县|