一、 簡單查詢
1.?????Select語句
Select [distinct] * | {字段名1,字段名2,字段名3,。。。}
???????? From表名
???????? [where條件表達式1]
???????? [groupby 字段名 [having 條件表達式2]]
???????? [orderby 字段名 [asc|desc]]
???????? [limit[offset] 記錄數(shù)]
(1)???Distinct是可選參數(shù),用于剔除查詢結果中重復的數(shù)據(jù);
(2)???Group by是可選參數(shù),用于將查詢結果按照指定字段進行分組;having也是可選次參賽,用于對分組后的結果進行過濾
(3)???Order by是可選參數(shù),用于將查詢結果按照指定字段進行排序,排序方式由參數(shù)ASC或DESC控制,如果不指定,則默認為升序排列(ASC)
(4)???Limit 是可選參數(shù),用于限制查詢結果的數(shù)量,limit后面可以跟兩個參數(shù),第一個參數(shù)offset表示偏移量,如果偏移量為0,則從查詢結果的第一條記錄開始,偏移量為n則從查詢結果中的第n+1條記錄開始。如果不指定,則默認為0. 第二個參數(shù)‘記錄數(shù)’表示返回查詢記錄的條數(shù)。
2.?????查詢所有字段
(1)???在select語句中指定所有字段
(2)???在select語句中使用*通配符代替所有字段:查詢結果只能按照字段在表中定義的順序顯示。
3.?????查詢指定字段
二、 按條件查詢
1.?????帶關系運算符的查詢
2.?????帶in關鍵字的查詢:in關鍵字用于判斷某個字段的值是否在指定集合中。
3.?????帶between and關鍵字的查詢:用于判斷某個字段的值是否在指定的范圍內。
4.?????空值查詢
5.?????帶distint關鍵字的查詢:過濾掉查詢記錄中重復的值
當distinct關鍵字作用于多個字段時,只有它后面指定的多個字段值都相同,才會被認為是重復記錄。
6.?????帶like關鍵字的查詢:like關鍵字可以判斷兩個字符串是否相匹配。格式如下:
????????Select * | [{字段名1,字段名2,…} from 表名
????????Where 字段名 [not] like ‘匹配字符串’;
(1)???百分號(%)通配符:匹配任意長度的字符串,包括空字符串
可以使用多個%通配符,也可以和not一起使用
(2)???下劃線(_)通配符:只能匹配單個字符,如果要匹配多個字符,需要使用多個下劃線通配符,如果使用多個下劃線匹配多個連續(xù)的字符則下劃線之間不能有空格。如‘M_ _QL’中間有一個空格,只能匹配’My SQL’而不能匹配‘mysql’。
(3)???使用百分號和下劃線通配符進行查詢操作:
注意:如果要匹配字符串中的百分好和下劃線,就需要在銅牌字符串中使用‘’對百分號和下劃線進行轉義,如’%’匹配百分號字面值。
7.?????帶and關鍵字的多條件查詢:使用and關鍵字可以連接兩個或者多個查詢條件,只有滿足所有條件的記錄才會被返回。每多加一個查詢條件就多加一個and關鍵字。
8.?????帶or關鍵字的多條件查詢:只要滿足一個條件即返回記錄。
9.?????Or和and關鍵字在一起使用的情況:and的優(yōu)先級高于or, 應優(yōu)先運算and兩邊的條件表達式,再運算or兩邊的條件表達式。
三、 高級查詢
1.?????聚合函數(shù):count(),sum(),avg(),max()和min()
(1)?????count()函數(shù)用來統(tǒng)計記錄的條數(shù):selectcount(*) from 表名
(2)?????sum()函數(shù)用于求出表中某個字段所有值的總和:select sum(字段名) from 表名
(3)?????avg()函數(shù)用于求出某個字段所有值的平均值:select avg(字段名) from 表名;
(4)?????max()函數(shù)是求最大值的函數(shù),用于求出某個字段的最大值:select max(字段名) from 表名。
(5)?????min()函數(shù)是求最小值的函數(shù):selectmin(字段名) from 表名
2.?????對查詢結果排序
Select 字段名1,字段名2,… from表名 order by 字段名1[ASC | DESC],字段名2[ASC | DESC]…
3.?????分組查詢
Select 字段名1,字段名2,… from 表名 group by 字段名1,字段名2,… [having 條件表達式];
(1)???單獨使用group by分組:查詢結果安裝字段中不同的值進行分類,查詢結果只顯示每個組中的一條記錄。
(2)???Group by 和聚合函數(shù)一起使用
(3)???Group by和having關鍵字一起使用
Having關鍵字和where關鍵字的作用相同,都用于設置條件表達式對查詢結果進行過濾,兩者的區(qū)別在于having關鍵字后可以跟聚合函數(shù),而where關鍵字不能。通常having關鍵字都和group by一起使用,用于對分組后的結果進行過濾。
4.?????使用LIMIT限制查詢結果的數(shù)量:指定查詢結果從哪一條記錄開始以及一共查詢多少條信息。
????????Select 字段名1,字段名2,… from表名 limit [offset,] 記錄數(shù)
5.?????函數(shù)(列表)
數(shù)學函數(shù)
函數(shù)名稱 |
作用 |
Abs(x) |
返回x的絕對值 |
Sqrt(x) |
返回x的非負2次方根 |
Mod(x,y) |
返回x被y除后的余數(shù) |
Ceiling(x) |
返回不小于x的最小整數(shù) |
Floor(x) |
返回不大于x的最大整數(shù) |
Round(x,y) |
對x進行四舍五入操作,小數(shù)點后保留y位 |
Runcate(x,y) |
舍去x中小數(shù)點y位后面的數(shù) |
Sign(x) |
返回x的符號,-1,0或1 |
?
字符串函數(shù)
函數(shù)名稱 |
作用 |
Length(str) |
返回字符串str的長度 |
Concat(s1,s2,…) |
返回一個或者多個字符串連接產生的新的字符串 |
Trim(str) |
刪除字符串兩側的空格 |
Replace(str,s1,s2) |
使用字符串s2替換字符串str中所有的字符串s1 |
Substring(str,n,len) |
返回字符串str的子串,起始位置為n,長度為len |
Reverse(str) |
返回字符串反轉后的結果 |
Locate(s1,str) |
返回子串s1在字符串str中的起始位置 |
日期和時間函數(shù)
函數(shù)名稱 |
作用 |
Curdate() |
獲取系統(tǒng)當前日期 |
Curtime() |
獲取系統(tǒng)當前時間 |
Sysdate() |
獲取當前系統(tǒng)日期和時間 |
Time_to_sec() |
返回將時間轉換成秒的結果 |
Adddate() |
執(zhí)行日期的加運算 |
Subdate() |
執(zhí)行日期的減運算 |
Date_format() |
格式化輸出日期和時間值 |
?
條件判斷函數(shù)
函數(shù)名稱 |
作用 |
If(expr, v1, v2) |
如果expr表達式為true返回v1,否則返回v2 |
Ifnull(v1,v2) |
如果v1不為null返回v1,否則返回v2 |
Case expr when v1 then r1 [when v2 then r2…] [else rn] end |
如果expr值等于v1、v2等,則返回對應位置then后面的結果,否則返回else后的結果rn |
?
加密函數(shù)
函數(shù)名稱 |
作用 |
Md5(str) |
對字符串str進行MD5加盟 |
Encode(str, pwd_str) |
使用pwd作為密碼加密字符串str |
Decode(str, pwd_str) |
使用pwd作為密碼解密字符串str |
?
(1)???Concat(str1,str2,…)返回結果為連接參數(shù)產生的字符串,如果任何一個參數(shù)為null,則返回值為null.
四、 為表和字段取別名
1.?????為表取別名:select * from 表名 [as] 別名;
如下例子,s.gender表示student表的gender字段
2.?????為字段取別名:select 字段名 [AS] 別名 [,字段名 [as] 別名,…] from 表名;
本文講解了MySQL數(shù)據(jù)庫單表查詢,更多相關內容請關注php中文網。
相關推薦: