COUNT()
COUNT(column_name) #返回指定列的值的數(shù)目(NULL不計(jì)入)
COUNT(*) #返回表中的記錄數(shù)
COUNT(DISTINCT column_name) #返回指定列的不同值的數(shù)目
-- 查詢(xún)客戶(hù)信息中不重復(fù)的密碼個(gè)數(shù)
SELECT COUNT(DISTINCT password) FROM customer
AVG()
返回?cái)?shù)值列的平均值。NULL值不包括在計(jì)算中,即使是中文或者字符串也能計(jì)算
語(yǔ)法:AVG(column_name)、AVG(DISTINCT column_name)
-- 查詢(xún)積分平均值,結(jié)果參考:511.00145755597015
SELECT AVG(integral) FROM customer
SELECT AVG(DISTINCT integral) FROM customer
MAX()
返回一列中的最大值。NULL值不包括在計(jì)算中,也可用于字符列
語(yǔ)法:MAX(column_name)
SELECT MAX(integral) FROM customer
SELECT MAX(username) FROM customer
注意:使用max函數(shù)查詢(xún)一個(gè)字符串類(lèi)型的整數(shù)數(shù)據(jù)時(shí),因?yàn)樽址?lèi)型大小比較是先比較首字符,然后依次往后進(jìn)行比較。如id列的數(shù)據(jù):10000,9999。使用max查出來(lái)的最大值并不是10000,而是9999。
解決方法:max(id+0)
MIN()
返回一列中的最小值。NULL值不包括在計(jì)算中,也可用于字符列
語(yǔ)法:MIN(column_name)
SELECT MIN(integral) FROM customer
SELECT MIN(username) FROM customer
SUM()
返回?cái)?shù)值列的總數(shù)(總額)
語(yǔ)法:SUM(column_name)
-- 結(jié)果參考:2191174.25
SELECT SUM(integral) FROM customer
LOAD_FILE()
讀入文件并且作為一個(gè)字符串返回文件內(nèi)容,后面的路徑可以是單引號(hào)、0x、char轉(zhuǎn)換的字符。文件無(wú)法找到,路徑不完整,沒(méi)有權(quán)限,長(zhǎng)度大于max_allowed_packet會(huì)返回null
語(yǔ)法:LOAD_FILE(file_name)
SELECT LOAD_FILE('C:/Windows/win.ini')
CAST()
將字段(或表達(dá)式)轉(zhuǎn)換成指定類(lèi)型,type的取值如下:
BINARY[(N)]、CHAR[(N)]
DECIMAL、SIGNED [INTEGER]
TIME、UNSIGNED [INTEGER]
DATE、DATETIME
語(yǔ)法:CAST(expr AS type)
-- 根據(jù)積分值排序(將varchar類(lèi)型的double數(shù)據(jù)轉(zhuǎn)換成小數(shù)再進(jìn)行排序)
SELECT * from customer ORDER BY CAST(integral AS DECIMAL)
CONVERT()
將字段(或表達(dá)式)轉(zhuǎn)換成指定類(lèi)型,type的取值同上
語(yǔ)法:CONVERT(expr,type)
-- 查詢(xún)指定用戶(hù)的積分的排名位置
SELECT count(*) from customer where integral <=
(SELECT integral from customer where mobile = '180XXXX')
ORDER BY CONVERT(integral,DECIMAL)
UUID()
返回生成一個(gè)UUID值,前三組數(shù)字從時(shí)間戳中生成,第四組數(shù)字暫時(shí)保持時(shí)間戳的唯一性,第五組數(shù)字是一個(gè)IEEE 802節(jié)點(diǎn)標(biāo)點(diǎn)值,保證空間唯一。使用UUID函數(shù),可以生成時(shí)間、空間上都獨(dú)一無(wú)二的值
-- 24ee26ad-fdaa-11e7-9abf-000c29c5d936 (36位)
SELECT UUID()
-- ac08e2cefdac11e79abf000c29c5d936 (32位)
SELECT UUID() SELECT REPLACE(UUID(),'-','') AS id
IF()
expr1為條件,如果expr1 == true,輸出(或執(zhí)行)expr2,否則輸出expr3
語(yǔ)法:IF(expr1,expr2,expr3)
-- A
SELECT IF(2,'A','B')
-- B
SELECT IF(FALSE,'A','B')
ISNULL()
如果expr不是NULL,ISNULL(expr)為false,如果使用select ISNULL(expr),輸出0
如果expr是NULL,ISNULL(expr)為true,如果使用select ISNULL(expr),輸出1
判斷空值也可使用is null
語(yǔ)法:ISNULL(expr)
-- 如果查詢(xún)某個(gè)字段為NULL則返回0,否則返回該字段值
SELECT IF (ISNULL(column_name), 0 ,column_name)
IFNULL()
如果expr1為NULL,則輸出expr2,如果expr1不為NULL,則輸出expr1。
效果與CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END相同
語(yǔ)法:IFNULL(expr1,expr2)
-- A
SELECT IFNULL(NULL,'A')
NULLIF()
如果expr1 = expr2,那么返回值為NULL,否則返回值為expr1
語(yǔ)法:NULLIF(expr1,expr2)
-- NULL
SELECT NULLIF(1,1)
-- 2
SELECT NULLIF(2,1)
INET_ATON()
返回一個(gè)代表該地址數(shù)值的整數(shù),參數(shù)為一個(gè)作為字符串的網(wǎng)絡(luò)地址的"點(diǎn)地址"。
在存儲(chǔ)由INET_ATON()產(chǎn)生的值時(shí),推薦你使用INT UNSIGNED列(表示范圍更大)
INET_ATON(n1.n2.n3.n4),數(shù)字按照 n1×2^24 + n2×2^16 + n3×2^8 + n4 進(jìn)行計(jì)算
-- 4294967295
SELECT INET_ATON('255.255.255.255')
-- 2130706433
SELECT INET_ATON('127.0.0.1')
-- 2130706433
SELECT INET_ATON('127.1')
INET_NTOA()
給定一個(gè)數(shù)字網(wǎng)絡(luò)地址(4或8比特),返回作為字符串的該地址的點(diǎn)地址表示
語(yǔ)法:INET_NTOA(expr)
-- 127.0.0.1
SELECT INET_NTOA(2130706433)
-- 209.207.224.40
SELECT INET_NTOA(3520061480)