與MSSQL對比學習MYSQL的心得(六)--函數(shù)
數(shù)學函數(shù)
1、求余函數(shù)MOD(X,Y)
MOD(X,Y)返回x被y除后的余數(shù),MOD()對于帶有小數(shù)部分的數(shù)值也起作用,他返回除法運算后的精確余數(shù)
SELECT MOD(31,8)
2、四舍五入函數(shù)TRUNCATE(X,Y)
TRUNCATE(X,Y)返回被舍去至小數(shù)點后y位的數(shù)字x。若y的值為0,則結果不帶有小數(shù)點或不帶有小數(shù)部分。
若y設為負數(shù),則截去(歸零)x小數(shù)點左邊起第y位開始后面所有低位的值。
SELECT TRUNCATE(1.32,1)
TRUNCATE(1.32,1)保留小數(shù)點后一位數(shù)字,返回值為1.3
TIPS:ROUND(X,Y)函數(shù)在截取值的時候會四舍五入,而TRUNCATE(x,y)直接截取值,并不進行四舍五入
3、求余函數(shù)HEX(X)和UNHEX(X)函數(shù)
有以下的代碼可以演示HEX和UNHEX的功能:
SELECT HEX('this is a test str')
查詢的結果為:746869732069732061207465737420737472
SELECT UNHEX('746869732069732061207465737420737472')
查詢的結果為:this is a test str
字符串函數(shù)
計算字符串字符數(shù)的函數(shù)
1、CHAR_LENGTH(STR)返回值為字符串str所包含的字符個數(shù)。一個多字節(jié)字符算作一個單字符
SELECT CHAR_LENGTH('DATE')
2、合并字符串函數(shù)CONCAT_WS(x,s1,s2,......)
CONCAT_WS(x,s1,s2,......),CONCAT_WS代表CONCAT with Separator,是CONCAT()函數(shù)的特殊形式。
第一個參數(shù)x是其他參數(shù)的分隔符,分隔符的位置放在要連接的兩個字符串之間。分隔符可以是一個字符串,也可以是
其他參數(shù)。如果分隔符為NULL,則結果為NULL。函數(shù)會忽略任何分隔符參數(shù)后的NULL值。
SELECT CONCAT_WS('-','1st','2nd','3rd'),CONCAT_WS('-','1st',NULL,'3rd')
CONCAT_WS('-','1st','2nd','3rd')使用分隔符‘-'將3個字符串連接成一個字符串,結果為“1st-2nd-3rd”;
CONCAT_WS('-','1st',NULL,'3rd')因為第二個值為NULL,所以第二個值不會出現(xiàn)在結果里
3、替換字符串的函數(shù)INSERT(S1,X,LEN,S2)
INSERT(S1,X,LEN,S2)函數(shù)跟SQLSERVER里的STUFF()函數(shù)的功能是一樣的,這里不作介紹了
4、填充字符串的函數(shù)LPAD(S1,LEN,S2)和RPAD(S1,LEN,S2)
LPAD(S1,LEN,S2)返回字符串s1,其左邊由字符串s2填補到len字符串長度。假如s1的長度大于len,則返回值被縮短至len字符。
LPAD()函數(shù)和RPAD()函數(shù)功能跟SQLSERVER里的 REPLACE()相似,不過功能更加強大
SELECT LPAD('hello',4,'??'),LPAD('hello',10,'??')
字符串“hello”長度大于4,不需要填充,因此LPAD('hello',4,'??')只返回被縮短的長度為4的子串
字符串“hello”長度小于10,LPAD('hello',10,'??')返回結果為“?????hello”,左側填充“?”,長度為10
5、RPAD(S1,LEN,S2)返回字符串s1,其右邊被字符串s2填補至len字符長度。假如字符串s1的長度大于len,則返回值被縮短到len字符長度
SELECT RPAD('hello',4,'?')
字符串“hello”長度大于4,不需要填充,因此RPAD('hello',4,'?')只返回被縮短的長度為4的子串"hell"
6、刪除空格的函數(shù)TRIM(S)
TRIM(S)刪除字符串s兩側的空格
MYSQL這里比SQLSERVER方便,SQLSERVER要刪除兩邊的空格,需要使用: SELECT LTRIM(RTRIM(' hello '))
SELECT TRIM(' book ')
刪除指定字符串的函數(shù)TRIM(S1 FROM S)
7、TRIM(S1 FROM S)刪除字符串s中兩端所有的子字符串s1。s1為可選項,在未指定情況下,刪除空格
SELECT TRIM('xy' FROM 'xyxboxyokxxyxy')
'xyxboxyokxxyxy'兩端的重復字符串“xy”,而中間的“xy”并不刪除,結果為
xboxyokx
8、重復生成字符串的函數(shù)REPEAT(S,N)
這個函數(shù)跟SQLSERVER里的REPLICATE()函數(shù)是一樣的,參數(shù)個數(shù)都是一樣的,這里不作介紹了
9、比較字符串大小的函數(shù)STRCMP(S1,S2)
STRCMP(S1,S2)若所有的字符串均相同,則返回0;若根據(jù)當前分類次序,第一個參數(shù)小于第二個,則返回-1,其他情況返回1
SELECT STRCMP('txt','txt2') ,STRCMP('txt2','txt'),STRCMP('txt','txt')
“txt”小于“txt2”,因此 STRCMP('txt','txt2') 返回結果為-1
STRCMP('txt2','txt')返回結果為1
“txt”與“txt”相等,因此STRCMP('txt','txt')返回結果為0
10、匹配子串開始位置的函數(shù)
LOCATE(STR1,STR)、POSITION(STR1 IN STR)、INSTR(STR,STR1)3個函數(shù)作用相同,返回子字符串str1在字符串str中的開始位置
這三個函數(shù)跟SQLSERVER里的CHARINDEX()函數(shù)功能類似
SELECT LOCATE('ball','football'),POSITION('ball' IN 'football') ,INSTR('football','ball')
子字符串“ball”在字符串“football”中從第5個字母位置開始,因此3個函數(shù)返回結果都為5
11、返回指定位置的字符串的函數(shù)
ELT(N,字符串1,字符串2,字符串3,...,),若N=1,則返回值為字符串1,若N=2,則返回值為字符串2,以此類推。
若N小于1或大于參數(shù)的數(shù)目,則返回值為NULL
SELECT ELT(3,'1st','2nd','3rd'),ELT(3,'net','os')
由結果可以看到,ELT(3,'1st','2nd','3rd')返回第3個位置的字符串“3rd”;指定返回字符串位置超出參數(shù)個數(shù),返回NULL
12、返回指定字符串位置的函數(shù)FIELD(S,S1,S2,...)
FIELD(S,S1,S2,...)返回字符串s在列表s1,s2,......中第一次出現(xiàn)的位置,在找不到s的情況下,返回值為0。
如果s為NULL,則返回值為0,原因是NULL不能同任何值進行同等比較。
SELECT FIELD('hi','hihi','hey','hi','bas') AS coll, FIELD('hi','hihi','lo','hilo','foo') AS col2
FIELD('hi','hihi','hey','hi','bas')函數(shù)中字符串hi出現(xiàn)在列表的第3個字符串位置,因此返回結果為3
FIELD('hi','hihi','lo','hilo','foo') 列表中沒有字符串hi,因此返回結果為0
13、返回子串位置的函數(shù)FIND_IN_SET(S1,S2)
FIND_IN_SET(S1,S2)返回字符串s1在字符串列表s2中出現(xiàn)的位置,字符串列表是一個由多個逗號
‘,'分開的字符串組成的列表。如果s1不在s2或s2為空字符串,則返回值為0。如果任意一個參數(shù)為NULL,則返回值為NULL。
這個函數(shù)在第一個參數(shù)包含一個逗號‘,'時將無法正常運行。
SELECT FIND_IN_SET('hi','hihi,hey,hi,bas')
雖然FIND_IN_SET(S1,S2)和FIELD(S,S1,S2,...)兩個函數(shù)格式不同,但作用類似,都可以返回指定字符串在字符串列表中的位置
14、選取字符串的函數(shù)MAKE_SET(X,S1,S2,...)
MAKE_SET(X,S1,S2,...)返回由x的二進制數(shù)指定的相應位的字符串組成的字符串,s1對應比特1,s2對應比特01以此類推。
s1,s2...中的NULL值不會被添加到結果中。
SELECT MAKE_SET(1,'a','b','c') AS col1, MAKE_SET(1|4,'hello','nice','world') AS col2
1的二進制值為0001,4的二進制值為0100,1與4進行異或操作之后的二進制值為0101,從右到左第一位和第三位為1。
MAKE_SET(1,'a','b','c')返回第一個字符串
MAKE_SET(1|4,'hello','nice','world') 返回從左端開始第一和第三個字符串組成的字符串
日期和時間函數(shù)
1、獲取當前日期的函數(shù)和獲取當前時間的函數(shù)
CURDATE()、CURRENT_DATE()、CURRENT_TIMESTAMP()、LOCALTIME()、NOW()、SYSDATE()
以上函數(shù)都是返回當前日期和時間值,MYSQL的函數(shù)數(shù)量的確比SQLSERVER多很多,SQLSERVER獲取當前時間和日期用的
函數(shù)是: SELECT GETDATE()
SELECT NOW()
返回UTC日期的函數(shù)和返回UTC時間的函數(shù)
MYSQL里返回UTC日期和時間是分開的,而SQLSERVER里是一起的
SELECT GETUTCDATE()
MYSQL
SELECT UTC_DATE(),UTC_TIME()
2、獲取月份的函數(shù)MONTHNAME(DATE)
MONTHNAME(DATE)函數(shù)返回日期date對應月份的英文全名
SELECT MONTHNAME('2013-8-2')
返回8月份的英文
3、獲取季度、分鐘和秒鐘的函數(shù)
QUARTER(DATE)返回date對應的一年中的季度值,范圍是從1~4
使用QUARTER(DATE)函數(shù)返回指定日期對應的季度
SELECT QUARTER('11-04-01')
4月份在第二季度,所以返回2
4、MINUTE(TIME)返回time對應的分鐘數(shù),范圍是從0~59
SELECT MINUTE('11-02-03 10:10:06')
返回10分鐘
5、SECOND(time) 返回time對應的秒數(shù),范圍是從0~59
SELECT SECOND('10:23:10')
返回10秒
6、獲取日期的指定值的函數(shù)EXTRACT(type FROM date)
EXTRACT(type FROM date)這個函數(shù)跟SQLSERVER里的DATEPART()函數(shù)是一樣的
獲取日期中的年份
SQLSERVER
SELECT DATEPART(YEAR,'2013-2-3')
MYSQL
SELECT EXTRACT(YEAR FROM '2013-2-3')
7、時間和秒鐘轉換的函數(shù)
TIME_TO_SEC(time)返回已轉化為秒的time參數(shù),轉換公式為:小時*3600+分鐘*60+秒
SELECT TIME_TO_SEC('23:22:00')
SEC_TO_TIME(second)函數(shù)可以將秒轉換為小時、分鐘和秒數(shù)的second參數(shù)值
SELECT SEC_TO_TIME('84120')
SEC_TO_TIME(second)函數(shù)和TIME_TO_SEC(time)函數(shù)互為反函數(shù)
8、計算日期和時間的函數(shù)
MYSQL里計算日期和時間的函數(shù)比較多
增加日期:DATE_ADD(date,interval expr type),ADDDATE(date,interval expr type)
減去日期:DATE_SUB(date,interval expr type),SUBDATE(date,interval expr type)
增加時間:ADD_TIME(date,expr)
減去時間:SUBTIME(date,expr)
時間差:DATEDIFF()
日期和時間格式化:
DATE_FORMAT(date,format)
TIME_FORMAT(time,format)
返回日期時間字符串的顯示格式:GET_FORMAT(val_type,format_type)
相對來說,SQLSERVER在時間日期方面的計算就沒有那么多函數(shù)了
基本上SQLSERVER利用下面兩個函數(shù)來通殺日期時間計算的場景
SELECT DATEADD(),DATEDIFF()
條件判斷函數(shù)
條件判斷函數(shù)也稱為流程控制函數(shù),根據(jù)滿足的條件的不同,執(zhí)行相應的流程。
MYSQL中進行條件判斷的函數(shù)有IF、IFNULL、CASE
雖然SQLSERVER里也有IF和CASE,不過MYSQL里的IF語句的語法跟SQLERVER有很大出入
1、IF(expr,v1,v2)函數(shù)
IF(expr,v1,v2)如果表達式expr是TRUE(expr<>0 and expr<>NULL),則IF()的返回值為v1;
否則返回值為v2。IF()的返回值為數(shù)字值或字符串值,具體情況視其所在語境而定
SELECT IF(1>2,2,3)
1>2的結果為FALSE,IF(1>2,2,3)返回第二個表達式的值3。
TIPS:如果v1或v2中只有一個明確是NULL,則IF()函數(shù)的結果類型為非NULL表達式的結果類型。
2、IFNULL(V1,V2)函數(shù)
IFNULL(V1,V2)假如v1不為NULL,則IFNULL(V1,V2)的返回值為v1;否則其返回值為v2。
IFNULL()的返回值是數(shù)字或是字符串,具體情況視語境而定
SELECT IFNULL(1,2),IFNULL(NULL,10)
IFNULL(1,2)雖然第二個值也不為空,但返回結果依然是第一個值;
IFNULL(NULL,10)第一個值為空,因此返回“10”
注意:IFNULL(V1,V2)函數(shù)跟SQLSERVER里的 SELECT NULLIF() 函數(shù)不一樣
SQLSERVER里的NULLIF函數(shù)
需要兩個參數(shù),如果兩個指定的表達式等價,則返回null
例子:NULLIF(a,b)
說明:如果a和b是相等的,那么返回NULL,如果不相等返回a
select NULLIF('eqeqweqwe','1') 結果是eqeqweqwe
select NULLIF(1,1) 結果是NULL
a和b的類型要一致
3、CASE函數(shù)
注意:一個CASE表達式的默認返回值類型是任何返回值的相容集合類型,但具體情況視其所在語境而定。
如果用字符串語境中,則返回結果為字符串。如果用在數(shù)字語境中,則返回結果為十進制、實數(shù)值或整數(shù)值
這個數(shù)據(jù)類型在拼接SQL語句的時候特別容易忽略,有時候會在拼接SQL語句的時候,case 后面的表達式或者when后面的表達式不一致報錯!
參考文章:http://support.microsoft.com/kb/969467/zh-cn
修補程序: 錯誤消息,當您運行查詢時,SQL Server 2008年中使用 CASE 函數(shù):"轉換失敗時轉換為數(shù)據(jù)類型 < Type2 > < Type1 > 值 < 值 >"
在MSDN論壇也有一個相關的帖子,大概是因為拼接sql的時候case 后面的表達式值的數(shù)據(jù)類型和else后面的表達式值的數(shù)據(jù)類型不一致導致拼接sql失敗
具體的帖子地址忘記了,也找不到,如果找到以后會補充上
系統(tǒng)信息函數(shù)
1、獲取MYSQL版本號、連接數(shù)和數(shù)據(jù)庫名的函數(shù)
VERSION()返回指示MYSQL服務器版本的字符串。這個字符串使用utf8字符集
SELECT VERSION()
2、CONNECTION_ID()返回MYSQL服務器當前連接的次數(shù),每個連接都有各自唯一的ID
查看當前用戶的連接數(shù)
SELECT CONNECTION_ID()
這里返回1,返回值根據(jù)登錄的次數(shù)會有不同。
3、SHOW PROCESSLIST;
4、SHOW FULL PROCESSLIST;
processlist命令的輸出結果顯示了有哪些線程在運行,不僅可以查看當前所有的連接數(shù),還可以查看當前的連接狀態(tài)
幫助識別出有問題的查詢語句等。
如果是root帳號,能看到所有用戶的當前連接。如果是其他普通帳號,則只能看到自己占用的連接。showprocesslist只能列出當前100條
如果想全部列出,可以使用SHOW FULL PROCESSLIST命令
SHOW PROCESSLIST
SHOW FULL PROCESSLIST
show full processlist會看到連接使用的內(nèi)存
show processlist
show full processlist
各個列的含義
(1)id列,用戶登錄mysql時,系統(tǒng)分配的“connection_id”
(2)user列,顯示當前用戶。如果不是root,這個命令就只顯示用戶權限范圍的sql語句
(3)host列,顯示這個語句是從哪個ip的哪個端口上發(fā)的,可以用來跟蹤出現(xiàn)問題語句的用戶
(4)db列,顯示這個進程目前連接的是哪個數(shù)據(jù)庫
(5)command列,顯示當前連接的執(zhí)行的命令,一般取值為休眠(sleep),查詢(query),連接(connect)
(6)time列,顯示這個狀態(tài)持續(xù)的時間,單位是秒
(7)state列,顯示使用當前連接的sql語句的狀態(tài),很重要的列,后續(xù)會有所有狀態(tài)的描述,state只是語句執(zhí)行中的某一個狀態(tài)。一個sql語句,
以查詢?yōu)槔?/p>
可能需要經(jīng)過
copying to tmp table,
sorting result,
sending data
等狀態(tài)才可以完成
(8)info列,顯示這個sql語句,是判斷問題語句的一個重要依據(jù)。
5、DATABASE()和SCHEMA()函數(shù)返回使用utf8字符集的默認(當前)數(shù)據(jù)庫名
SELECT DATABASE(),SCHEMA()
可以看到,兩個函數(shù)的作用相同
6、獲取用戶名的函數(shù)
USER()、CURRENT_USER()、CURRENT_USER、SYSTEM_USER()、SESSION_USER()
這幾個函數(shù)返回當前被MYSQL服務器驗證的用戶名和主機名組合。這個值符合確定當前登錄用戶
存取權限的MYSQL帳戶。一般情況下,這幾個函數(shù)的返回值是相同的。
SELECT USER(),CURRENT_USER(),SYSTEM_USER()
返回結果指示了當前帳戶連接服務器的用戶名以及所連接的客戶主機,root為當前登錄的用戶名,localhost為登錄的主機名
7、獲取字符串的字符集和排序方式的函數(shù)
CHARSET(STR)返回字符串str自變量的字符集
SELECT CHARSET('abc') ,CHARSET(CONVERT('abc' USING latin1)),CHARSET(VERSION())
CHARSET('abc')返回系統(tǒng)默認的字符集utf8;
CHARSET(CONVERT('abc' USING latin1))返回的字符集為latin1;
VERSION()返回的字符串使用utf8字符集,因此CHARSET返回結果為utf8
8、COLLATION(str)返回字符串str的字符排列方式
SELECT COLLATION(_latin2 'abc'),COLLATION(CONVERT('abc' USING utf8))
可以看到,使用不同字符集時字符串的排列方式不同
9、獲取最后一個自動生成的ID值的函數(shù)
LAST_INSERT_ID()自動返回最后一個INSERT或UPDATE為AUTO_INCREMENT列設置的第一個發(fā)生的值
(1)一次插入一條記錄
首先創(chuàng)建表worker,其ID字段帶有AUTO_INCREMENT約束
CREATE TABLE worker( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, NAME VARCHAR(30) )
分別單獨向表worker插入2條記錄
INSERT INTO worker VALUES(NULL,'jimmy'); INSERT INTO worker VALUES(NULL,'tom') SELECT * FROM worker
查看已經(jīng)插入的數(shù)據(jù)可以發(fā)現(xiàn),最后一條插入的記錄的ID字段值為2,使用LAST_INSERT_ID()查看最后自動生成的ID值
SELECT LAST_INSERT_ID()
可以看到,一次插入一條記錄時,返回值為最后一條插入記錄的ID值
(2)一次同時插入多條記錄
接下來,向表中插入多條記錄
INSERT INTO worker VALUES(NULL,'kevin'),(NULL,'michal'),(NULL,'nick')
查詢已經(jīng)插入的記錄
SELECT * FROM worker
可以看到最后一條記錄的ID字段值為5,使用LAST_INSERT_ID()查看最后自動生成的ID值
SELECT LAST_INSERT_ID()
結果顯示,ID字段值不是5而是3,這是為什麼呢?
在向數(shù)據(jù)表插入一條記錄時,LAST_INSERT_ID()返回帶有AUTO_INCREMENT約束的字段最新生成的值2;繼續(xù)向表
中同時添加3條記錄,這時候因為當使用一條INSERT語句插入多個行時,LAST_INSERT_ID只返回插入的第一行數(shù)據(jù)
時產(chǎn)生的值,在這里為第3條記錄。之所以這樣,是因為這使依靠其他服務器復制同樣的INSERT語句變得簡單
TIPS:LAST_INSERT_ID是與table無關的,如果向表a插入數(shù)據(jù)后,再向表b插入數(shù)據(jù),LAST_INSERT_ID返回表b中的ID值
這里跟SQLSERVER不一樣
使用下面腳本來測試,無論使用方式一還是方式二,當前的LAST_INSERT_ID都是最后一個值
CREATE TABLE [dbo].[aaa]( [a] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, [name] [nvarchar](50) NOT NULL ) ON [PRIMARY]
USE [sss] SELECT * FROM [dbo].[aaa] INSERT INTO [dbo].[aaa] ( [name] ) VALUES ( N'sdfsdf' -- name - nvarchar(50) ) SELECT * FROM [dbo].[aaa] INSERT INTO [dbo].[aaa] ( [name] ) VALUES ( N'sdf969' -- name - nvarchar(50) ),('lkjj96'),('565656') SELECT IDENT_CURRENT('aaa') SELECT * FROM [dbo].[aaa]
加密函數(shù)
1、加密函數(shù)PASSWORD(STR)
PASSWORD(STR)從原文密碼str計算并返回加密后的密碼字符串,當參數(shù)為NULL時,返回NULL
SELECT PASSWORD('NEWPWD')
MYSQL將PASSWORD函數(shù)加密后的密碼保存到用戶權限表中
TIPS:PASSWOR()函數(shù)在MYSQL服務器的鑒定系統(tǒng)中使用;不應將他用在個人應用程序中,PASSWORD()函數(shù)加密是單向的(不可逆)
PASSWORD執(zhí)行密碼加密與UNIX中密碼加密方式不同
2、加密函數(shù)MD5(str)
MD5(str)為字符串算出一個MD5 128比特校驗和。該值以32位十六進制數(shù)字的二進制字符串形式返回,若參數(shù)為NULL,則會返回NULL
SELECT MD5('123')
3、加密函數(shù)ENCODE(str,pswd_str)
ENCODE(str,pswd_str)使用pswd_str作為密碼,加密str。使用DECODE()解密結果,結果是一個和str長度相同的二進制字符串
SELECT ENCODE('nihao','123')
可以看到加密后的結果為亂碼
4、解密函數(shù)DECODE(crypt_str,pswd_str)
DECODE(crypt_str,pswd_str)使用pswd_str作為密碼,解密加密字符串crypt_str,crypt_str是由ENCODE()返回的字符串
SELECT DECODE(ENCODE('nihao','123'),'123')
可以看到,解密出來的字符串
ENCODE()和DECODE互為反函數(shù)
其他函數(shù)
1、格式化函數(shù)FORMAT(x,n)
FORMAT(x,n)將數(shù)字x格式化,并以四舍五入的方式保留小數(shù)點后n位,結果以字符串的形式返回。
若n為0,則返回結果函數(shù)不含小數(shù)部分
SELECT FORMAT(12332.123465,4)
FORMAT(12332.123465,4)保留4位小數(shù)點值,并進行四舍五入,結果為12,332.1235
2、不同進制的數(shù)字轉換的函數(shù)
CONV(N,from_base,to_base)函數(shù)進行不同進制數(shù)間的轉換。
SELECT CONV('a',16,2)
CONV('a',16,2)將十六進制的a轉換為二進制表示的數(shù)值。
3、IP地址與數(shù)字相互轉換的函數(shù)
INET_ATON(expr)給出一個作為字符串的網(wǎng)絡地址的點地址表示,返回一個代表該地址數(shù)值的整數(shù)。
地址可以是4或8比特地址
INET_NTOA(expr)給定一個數(shù)字網(wǎng)絡地址(4或8比特),返回作為字符串的該地址的點地址表示。
4、加鎖函數(shù)和解鎖函數(shù)
GET_LOCK(str,timeout)設法使用字符串str給定的名字得到一個鎖,超時為timeout秒。
RELEASE_LOCK(str)解開被GET_LOCK()獲取的,用字符串str所命名的鎖。
IS_FREE_LOCK(str)檢查名為str的鎖是否可以使用
IS_USED_LOCK(str)檢查名為str的鎖是否正在被使用
5、重復執(zhí)行指定操作的函數(shù)
BENCHMARK(count,expr)函數(shù)重復count次執(zhí)行表達式expr。他可以用于計算MYSQL處理表達式的速度。
結果值通常為0(0只是表示處理過程很快,并不是沒有花費時間)
另一個作用是他可以在MYSQL客戶端內(nèi)部報告語句執(zhí)行的時間。
首先,使用PASSWORD函數(shù)加密密碼
SELECT PASSWORD('nihao')
可以看到PASSWORD()函數(shù)執(zhí)行花費的時間為0.00098秒
下面使用BENCHMARK函數(shù)重復執(zhí)行PASSWORD操作500000次
SELECT BENCHMARK(500000,PASSWORD('nihao'))
由此可以看出,使用BENCHMARK執(zhí)行500000次的時間為0.49690秒,明顯比執(zhí)行一次的時間延長了。
TIPS:BENCHMARK報告的時間是客戶端經(jīng)過的時間,而不是在服務器端的CPU時間,每次執(zhí)行后報告的時間并不一定是相同的。
6、改變字符集的函數(shù)
CONVERT(...using...)帶有USING的CONVERT()函數(shù)被用來在不同的字符集之間轉化數(shù)據(jù)。
SELECT CHARSET('string'),CHARSET(CONVERT('string' USING latin1))
默認為utf8字符集,通過CONVERT()將字符串“string”的默認字符集改為latin1
7、改變數(shù)據(jù)類型的函數(shù)
CAST(x,AS type)和CONVERT(x,type)函數(shù)將一個類型的值轉換為另一個類型的值,可轉換的type有:
BINARY、CHAR(n)、DATE、TIME、DATETIME、DECIMAL、SIGNED、UNSIGNED
在SQLSERVER里也是使用這兩個函數(shù)進行數(shù)據(jù)類型轉換的~
SELECT CAST(100 AS CHAR(2)),CONVERT('2013-8-9 12:12:12',TIME)
可以看到, CAST(100 AS CHAR(2))將整數(shù)數(shù)據(jù)100轉換為帶有2個顯示寬度的字符串類型,結果為10
CONVERT('2013-8-9 12:12:12',TIME)將DATETIME類型的值,轉換為TIME類型值,結果為“12:12:12”
總結
這一節(jié)簡單介紹了MYSQL里的一些函數(shù),并且比較了與SQLSERVER的區(qū)別
TIPS:
1、MYSQL中,日期時間以字符串形式存儲在數(shù)據(jù)表中,因此可以使用字符串函數(shù)分別截取日期時間值的不同部分
2、修改默認的字符集,更改MYSQL默認的字符集,在Windows中,只需要修改my.ini,該文件在MYSQL安裝目錄下。
修改配置文件中的default-character-set和character-set-server參數(shù)值,將其改為想要的字符集名稱,如:
gbk、gb2312、latin1等,修改完之后,重啟MYSQL服務,即可生效。
如果不確定當前使用的字符集,可以使用下面的SQL語句來查看當前字符集進行對比
SHOW VARIABLES LIKE 'character_set_%'
如有不對的地方,歡迎大家拍磚o(∩_∩)o
控制流程函數(shù) 編輯 [1] a) CASE WHEN THEN 函數(shù) 語法:CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ……] [ELSE result ]END CASE WHEN [condition] THEN result [WHEN[condition] THEN result ……] [ELSE result] END ; 函數(shù)用法說明:在第一個方案中, 當滿足條件value =compare-value 時,返回對應的result,否則返回ELSE后的result。 在第二個方案中,當滿足條件condition時,返回對應的result,否則返回ELSE后的result。 兩種方案中,如果都不滿足而且如果沒有ELSE 部分,則返回值為NULL b) IF 函數(shù)用法 語法: IF(expr1,expr2,expr3) 函數(shù)用法說明:如果 expr1 是 TRUE (expr1 <> 0 and expr1 <> NULL) ,則 IF() 的返回值為 expr2 ; 否則返回值則為 expr3 。 IF() 的返回值為數(shù)字值或字符串值,具體情況視其所在語境而定 c) IFNULL 函數(shù) 語法: IFNULL(expr1,expr2) 函數(shù)用法說明:假如 expr1 不為 NULL ,則 IFNULL() 的返回值為 expr1 ; 否則其返回值為 expr2 。 IFNULL() 的返回值是數(shù)字或是字符串,具體情況取決于其所使用的語境 2字符串函數(shù) 編輯 a) 函數(shù) ascii(str) 函數(shù)用法說明:返回值為字符串 str 的最左字符的數(shù)值。假如 str 為空字符串,則返回值為 0 。假如 str 為 NULL ,則返回值為 NULL 。 ASCII() 用于帶有從 0 到 255 的數(shù)值的字符 b) 函數(shù) BIN(N) 函數(shù)用法說明:返回值為 N 的二進制值的字符串表示,其中 N 為一個 longlong (BIGINT) 數(shù)字。這等同于 CONV(N ,10,2) 。假如 N 為 NULL ,則返回值為 NULL 。 c) 函數(shù)CHAR(N ,... [USING charset ]) 函數(shù)用法說明: CHAR() 將每個參數(shù) N 理解為一個整數(shù),其返回值為一個包含這些整數(shù)的代碼值所給出的字符的字符串。 NULL 值被省略。 d) 函數(shù)CHAR_LENGTH(str ) 函數(shù)使用說明:返回值為字符串 str 的長度,長度的單位為字符。一個多字節(jié)字符算作一個單字符。對于一個 包含五個二字節(jié)字符集 , LENGTH() 返回值為 10, 而 CHAR_LENGTH() 的返回值為 5 e) 函數(shù) CHARACTER_LENGTH(str ) 函數(shù)使用說明: CHARACTER_LENGTH() 是 CHAR_LENGTH() 的同義詞。 f) 函數(shù) COMPRESS(string_to_compress ) 函數(shù)使用說明: COMPRESS( 壓縮一個字符串。這個函數(shù)要求 MySQL 已經(jīng)用一個 諸如 zlib 的壓縮庫壓縮過。 否則,返回值始終是 NULL 。 UNCOMPRESS() 可將壓縮過的字符串進行解壓縮 ) 。 g) 函數(shù) CONCAT(str1 ,str2 ,...) 函數(shù)使用說明:返回結果為連接參數(shù)產(chǎn)生的字符串。如有任何一個參數(shù)為 NULL ,則 返回值為 NULL 。或許有一個或多個參數(shù)。 如果所有參數(shù)均為非二進制字符串,則結果為非二進制字符串。 如果自變量中含有任一二進制字符串,則結果為一個二進制字符串。一個數(shù)字參數(shù)被轉化為與之相等的二進制字符串格式;若要避免這種情況,可使用顯式類型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col) h) 函數(shù) CONCAT_WS(separator ,str1 ,str2 ,...) 函數(shù)使用說明: CONCAT_WS() 代表 CONCAT With Separator ,是 CONCAT() 的 特殊形式。 第一個參數(shù)是其它參數(shù)的分隔符。分隔符的位置放在要連接的兩個字符串之間。分隔符可以是一個字符串,也可以是其它參數(shù)。如果分隔符為 NULL ,則結果為 NULL 。函數(shù)會忽略任何分隔符參數(shù)后的 NULL 值。 i) 函數(shù)CONV(N from_base, to_base) 函數(shù)使用說明:不同數(shù)基間轉換數(shù)字。返回值為數(shù)字的 N 字符串表示,由 from_base 基轉化為 to_base 基。如有任意一個參數(shù)為 NULL ,則返回值為 NULL 。自變量 N 被理解為一個整數(shù),但是可以被指定為一個整數(shù)或字符串。最小基數(shù)為 2 ,而最大基數(shù)則為 36 。 If to_base 是一個負數(shù),則 N 被看作一個帶符號數(shù)。否則, N 被看作無符號數(shù)。 CONV() 的運行精確度為 64 比特。 j) 函數(shù) ELT(N ,str1 ,str2 ,str3 ,...) 函數(shù)使用說明:若 N = 1 ,則返回值為 str1 ,若 N = 2 ,則返回值為 str2 ,以此 類推。 若 N 小于 1 或大于參數(shù)的數(shù)目,則返回值為 NULL 。 ELT() 是 FIELD() 的補數(shù) k) 函數(shù) EXPORT_SET(bits ,on ,off [,separator [,number_of_bits ]]) 函數(shù)使用說明: 返回值為一個字符串,其中對于 bits 值中的每個位組,可以得到 一個 on 字符串,而對于每個清零比特位,可以得到一個 off 字符串。 bits 中的比特值按照從右到左的順序接受檢驗 ( 由低位比特到高位比特 ) 。字符串被分隔字符串分開 ( 默認為逗號 ‘,') ,按照從左到右的順序被添加到結果中。 number_of_bits 會給出被檢驗的二進制位數(shù) ( 默認為 64) 。 l) 函數(shù) FIELD(str, str1, str2, str3, …...) 函數(shù)使用說明:返回值為 str1 , str2 , str3 ,…… 列表中的 str 指數(shù)。在找不到 str 的情況下,返回值為 0 。如果所有對于 FIELD() 的參數(shù)均為字符串,則所有參數(shù)均按照字符串進行比較。如果所有的參數(shù)均為數(shù)字,則按照數(shù)字進行比較。否則,參數(shù)按照雙倍進行比較。如果 str 為 NULL ,則返回值為 0 ,原因是 NULL 不能同任何值進行同等比較。 FIELD() 是 ELT() 的補數(shù)。 m) 函數(shù)FIND_IN_SET(str, strlist) 函數(shù)使用說明: 假如字符串 str 在由 N 子鏈組成的字符串列表 strlist 中, 則返 回值的范圍在 1 到 N 之間 。一個字符串列表就是一個由一些被 ‘,' 符號分開的自鏈組成的字符串。如果第一個參數(shù)是一個常數(shù)字符串,而第二個是 type SET 列,則 FIND_IN_SET() 函數(shù)被優(yōu)化,使用比特計算。如果 str 不在 strlist 或 strlist 為空字符串,則返回值為 0 。如任意一個參數(shù)為 NULL ,則返回值為 NULL 。 這個函數(shù)在第一個參數(shù)包含一個逗號 (‘,') 時將無法正常運行。 n) 函數(shù) FORMAT(X ,D ) 函數(shù)使用說明: 將 number X 設置為格式 '#,###,###.##', 以四舍五入的方式保留到小數(shù)點后 D 位 , 而返回結果為一個字符串。 o) 函數(shù) HEX(N_or_S ) 函數(shù)使用說明:如果N_OR_S 是一個數(shù)字,則返回一個 十六進制值 N 的 字符串表示,在這里, N 是一個longlong (BIGINT) 數(shù)。這相當于 CONV(N,10,16) 。如果N_OR_S 是一個字符串,則返回值為一個N_OR_S 的十六進制字符串表示,其中每個N_OR_S 里的每個字符被轉化為兩個十六進制數(shù)字。 p) 函數(shù)INSTR(str,substr) 函數(shù)使用說明:返回字符串 str 中子字符串的第一個出現(xiàn)位置。這和LOCATE() 的雙參數(shù)形式相同,除非參數(shù)的順序被顛倒。 q) 函數(shù)LCASE(str) 函數(shù)使用說明:LCASE() 是 LOWER() 的同義詞 r) 函數(shù)LEFT(str,len) 函數(shù)使用說明:返回從字符串str 開始的len 最左字符 s) 函數(shù) LENGTH(str ) 函數(shù)使用說明: 返回值為字符串 str 的長度,單位為字節(jié)。一個多字節(jié)字符算作多字節(jié)。這意味著 對于一個包含 5 個 2 字節(jié)字符的字符串, LENGTH() 的返回值為 10, 而 CHAR_LENGTH() 的返回值則為5 。 t) 函數(shù) LOAD_FILE(file_name) 函數(shù)使用說明:讀取文件并將這一文件按照字符串的格式返回。 文件的位置必須在服務器上 , 你必須為文件制定路徑全名,而且你還必須擁有 FILE 特許權。文件必須可讀取,文件容量必須小于 max_allowed_packet 字節(jié)。若文件不存在,或因不滿足上述條件而不能被讀取, 則函數(shù)返回值為 NULL u) 函數(shù) LOCATE(substr ,str ) , LOCATE(substr ,str ,pos ) 函數(shù)使用說明:第一個語法返回字符串 str 中子字符串substr 的第一個出現(xiàn)位置。第二個語法返回字符串 str 中子字符串substr 的第一個出現(xiàn)位置, 起始位置在pos 。如若substr 不在str 中,則返回值為0 。 v) 函數(shù)LOWER(str ) 函數(shù)使用說明:返回字符串 str 以及所有根據(jù)最新的字符集映射表變?yōu)樾懽帜傅淖址? w) 函數(shù)LPAD(str ,len ,padstr ) 函數(shù)使用說明:返回字符串 str , 其左邊由字符串padstr 填補到len 字符長度。假如str 的長度大于len , 則返回值被縮短至 len 字符。 x) 函數(shù)LTRIM(str ) 函數(shù)使用說明:返回字符串 str ,其引導空格字符被刪除。 y) 函數(shù) MAKE_SET(bits ,str1 ,str2 ,...) 函數(shù)使用說明: 返回一個設定值 ( 一個包含被 ‘,' 號分開的字字符串的字符串 ) ,由在 bits 組中具有相應的比特的字符串組成。 str1 對應比特 0, str2 對應比特 1, 以此類推。 str1 , str2 , ... 中的 NULL 值不會被添加到結果中。 z) 函數(shù) MID(str ,pos ,len ) 函數(shù)使用說明: MID(str ,pos ,len ) 是 SUBSTRING(str ,pos ,len ) 的同義詞。 aa) 函數(shù) OCT(N ) 函數(shù)使用說明:返回一個 N 的八進制值的字符串表示,其中 N 是一個 longlong (BIGINT) 數(shù)。這等同于 CONV(N,10,8) 。若 N 為 NULL ,則返回值為 NULL 。 bb) 函數(shù) OCTET_LENGTH(str ) 函數(shù)使用說明: OCTET_LENGTH() 是 LENGTH() 的同義詞。 cc) 函數(shù)ORD(str ) 函數(shù)使用說明:若字符串str 的最左字符是一個多字節(jié)字符,則返回該字符的代碼, 代碼的計算通過使用以下公式計算其組成字節(jié)的數(shù)值而得出: (1st byte code) + (2nd byte code × 256) + (3rd byte code × 2562 ) ... 假如最左字符不是一個多字節(jié)字符,那么 ORD() 和函數(shù)ASCII() 返回相同的值 dd) 函數(shù) POSITION(substr IN str ) 函數(shù)使用說明:POSITION(substr IN str ) 是 LOCATE(substr ,str ) 同義詞 ee) 函數(shù)QUOTE(str ) 函數(shù)使用說明:引證一個字符串,由此產(chǎn)生一個在SQL 語句中可用作完全轉義數(shù)據(jù)值的結果。 返回的字符串由單引號標注,每例都帶有單引號 (‘'') 、 反斜線符號 (‘\') 、 ASCII NUL 以及前面有反斜線符號的Control-Z 。如果自變量的值為NULL, 則返回不帶單引號的單詞 “NULL” 。 ff) 函數(shù)REPEAT(str ,count ) 函數(shù)使用說明:返回一個由重復的字符串str 組成的字符串,字符串str 的數(shù)目等于count 。 若 count <= 0, 則返回一個空字符串。若str 或 count 為 NULL ,則返回 NULL 。 gg) 函數(shù)REPLACE(str ,from_str ,to_str ) 函數(shù)使用說明:返回字符串str 以及所有被字符串to_str 替代的字符串from_str 。 hh) 函數(shù)REVERSE(str ) 函數(shù)使用說明:返回字符串 str ,順序和字符順序相反。 ii) 函數(shù)RIGHT(str ,len ) 函數(shù)使用說明:從字符串str 開始,返回最右len 字符。 jj) 函數(shù)RPAD(str ,len ,padstr ) 函數(shù)使用說明:返回字符串str , 其右邊被字符串 padstr 填補至len 字符長度。假如字符串str 的長度大于 len , 則返回值被縮短到與 len 字符相同長度 kk) 函數(shù)RTRIM(str ) 函數(shù)使用說明:返回字符串 str ,結尾空格字符被刪去。 ll) 函數(shù) SOUNDEX(str ) 函數(shù)使用說明:從str 返回一個soundex 字符串。 兩個具有幾乎同樣探測的字符串應該具有同樣的 soundex 字符串。一個標準的soundex 字符串的長度為4 個字符,然而SOUNDEX() 函數(shù)會返回一個人以長度的字符串。 可使用結果中的SUBSTRING() 來得到一個標準 soundex 字符串。在str 中, 會忽略所有未按照字母順序排列的字符。所有不在A-Z 范圍之內(nèi)的國際字母符號被視為元音字母。 mm) 函數(shù)expr1 SOUNDS LIKE expr2 函數(shù)使用說明: 這相當于SOUNDEX(expr1 ) = SOUNDEX(expr2 ) 。 nn) 函數(shù)SPACE(N ) 函數(shù)使用說明:返回一個由N 間隔符號組成的字符串 oo) 函數(shù)SUBSTRING(str ,pos ) , SUBSTRING(str FROM pos ) SUBSTRING(str ,pos ,len ) , SUBSTRING(str FROM pos FOR len ) 函數(shù)使用說明:不帶有l(wèi)en 參數(shù)的格式從字符串str 返回一個子字符串,起始于位置 pos 。帶有l(wèi)en 參數(shù)的格式從字符串str 返回一個長度同len 字符相同的子字符串,起始于位置 pos 。 使用 FROM 的格式為標準 SQL 語法。也可能對pos 使用一個負值。假若這樣,則子字符串的位置起始于字符串結尾的pos 字符,而不是字符串的開頭位置。在以下格式的函數(shù)中可以對pos 使用一個負值。 pp) 函數(shù)SUBSTRING_INDEX(str ,delim ,count ) 函數(shù)使用說明:在定界符 delim 以及count 出現(xiàn)前,從字符串str 返回自字符串。若count 為正值, 則返回最終定界符( 從左邊開始) 左邊的一切內(nèi)容。若count 為負值,則返回定界符(從右邊開始)右邊的一切內(nèi)容。 qq) 函數(shù) TRIM([{BOTH | LEADING | TRAILING} [remstr ] FROM] str ) TRIM(remstr FROM] str ) 函數(shù)使用說明:返回字符串 str , 其中所有remstr 前綴和/ 或后綴都已被刪除。若分類符BOTH 、LEADIN 或TRAILING 中沒有一個是給定的, 則假設為BOTH 。 remstr 為可選項,在未指定情況下,可刪除空格 rr) 函數(shù)UCASE(str) 函數(shù)使用說明:UCASE() 是UPPER() 的同義詞 ss) 函數(shù)UNCOMPRESS(string_to_uncompress ) 函數(shù)使用說明:對經(jīng)COMPRESS() 函數(shù)壓縮后的字符串進行解壓縮。若參數(shù)為壓縮值,則結果為 NULL 。這個函數(shù)要求 MySQL 已被諸如zlib 之類的壓縮庫編譯過。否則, 返回值將始終是 NULL tt) 函數(shù) UNCOMPRESSED_LENGTH(compressed_string ) 函數(shù)使用說明: 返回壓縮字符串壓縮前的長度。 uu) 函數(shù) UNHEX(str) 函數(shù)使用說明:執(zhí)行從 HEX(str ) 的反向操作。就是說,它將參數(shù)中的每一對十六進制數(shù)字理解為一個數(shù)字,并將其轉化為該數(shù)字代表的字符。結果字符以二進制字符串的形式返回 vv) 函數(shù) UPPER(str ) 函數(shù)使用說明:返回字符串 str , 以及根據(jù)最新字符集映射轉化為大寫字母的字符 3數(shù)學函數(shù) 編輯 a) 函數(shù) ABS(X) 函數(shù)使用說明:返回 X 的絕對值 b) 函數(shù) ACOS(X ) 函數(shù)使用說明:返回 X 反余弦 , 即 , 余弦是 X 的值。若 X 不在 -1 到 1 的范圍之內(nèi),則返回 NULL 。 c) 函數(shù) ASIN ( X ) 函數(shù)使用說明:返回X 的反正弦,即,正弦為X 的值。若X 若X 不在-1 到 1 的范圍之內(nèi),則返回 NULL 。 d) 函數(shù)ATAN(X ) 函數(shù)使用說明:返回 X 的反正切,即,正切為 X 的值。 e) 函數(shù) ATAN(Y ,X ) , ATAN2(Y ,X ) 函數(shù)使用說明:返回兩個變量 X 及 Y 的反正切。 它類似于 Y 或 X 的反正切計 算 , 除非兩個參數(shù)的符號均用于確定結果所在象限。 f) 函數(shù) CEILING(X ) CEIL(X ) 函數(shù)使用說明:返回不小于 X 的最小整數(shù)值。 g) 函數(shù) COS(X ) 函數(shù)使用說明:返回 X 的余弦,其中 X 在弧度上已知。 h) 函數(shù) COT(X ) 函數(shù)使用說明:返回 X 的余切 i) 函數(shù) CRC32(expr ) 函數(shù)使用說明:計算循環(huán)冗余碼校驗值并返回一個 32 比特無符號值。若參數(shù)為 NULL ,則結果為 NULL 。該參數(shù)應為一個字符串,而且在不是字符串的情況下會被作為字符串處理(若有可能) j) 函數(shù) DEGREES(X ) 函數(shù)使用說明:返回參數(shù) X , 該參數(shù)由弧度被轉化為度。 k) 函數(shù) EXP(X ) 函數(shù)使用說明:返回 e 的 X 乘方后的值 ( 自然對數(shù)的底 ) 。 l) 函數(shù) FLOOR(X ) 函數(shù)使用說明:返回不大于 X 的最大整數(shù)值 。 m) 函數(shù) FORMAT(X ,D ) 函數(shù)使用說明:將數(shù)字 X 的格式寫成 '#,###,###.##' 格式 , 即保留小數(shù)點后 D 位,而第 D 位的保留方式為四舍五入,然后將結果以字符串的形式返回 n) 函數(shù) LN(X ) 函數(shù)使用說明:返回 X 的自然對數(shù) , 即 , X 相對于基數(shù) e 的對數(shù) o) 函數(shù) LOG(X ) LOG(B ,X ) 函數(shù)使用說明:若用一個參數(shù)調(diào)用,這個函數(shù)就會返回 X 的自然對數(shù)。 p) 函數(shù) LOG2(X ) 函數(shù)使用說明:返回 X 的基數(shù)為 2 的對數(shù)。 q) 函數(shù) LOG10(X ) 函數(shù)使用說明:返回 X 的基數(shù)為 10 的對數(shù)。 r) 函數(shù) MOD(N ,M ) , N % M N MOD M 函數(shù)使用說明: 模操作。返回 N 被 M 除后的余數(shù)。 s) 函數(shù) PI() 函數(shù)使用說明:返回 ϖ (pi) 的值。默認的顯示小數(shù)位數(shù)是 7 位 , 然而 MySQL 內(nèi)部會使用完全雙精度值。 t) 函數(shù) POW(X ,Y ) , POWER(X ,Y ) 函數(shù)使用說明:返回 X 的 Y 乘方的結果值。 u) 函數(shù) RADIANS(X ) 函數(shù)使用說明:返回由度轉化為弧度的參數(shù) X , ( 注意 ϖ 弧度等于 180 度)。 v) 函數(shù) RAND() RAND(N ) 函數(shù)使用說明:返回一個隨機浮點值 v ,范圍在 0 到 1 之間 ( 即 , 其范圍為 0 ≤ v ≤ 1.0) 。若已指定一個整數(shù)參數(shù) N ,則它被用作種子值,用來產(chǎn)生重復序列。 w) 函數(shù) ROUND(X ) ROUND(X ,D ) 函數(shù)使用說明:返回參數(shù) X , 其值接近于最近似的整數(shù)。在有兩個參數(shù)的情況下,返回 X ,其值保留到小數(shù)點后 D 位,而第 D 位的保留方式為四舍五入。若要接保留 X 值小數(shù)點左邊的 D 位,可將 D 設為負值。 x) 函數(shù) SIGN(X ) 函數(shù)使用說明:返回參數(shù)作為 -1 、 0 或 1 的符號,該符號取決于 X 的值為負、零或正。 y) 函數(shù) SIN(X ) 函數(shù)使用說明:返回 X 正弦,其中 X 在弧度中被給定。 z) 函數(shù) SQRT(X ) 函數(shù)使用說明: 返回非負數(shù) X 的二次方根。 aa) 函數(shù)TAN(X ) 函數(shù)使用說明: 返回 X 的正切,其中 X 在弧度中被給定。 bb) 函數(shù)TRUNCATE(X ,D ) 函數(shù)使用說明: 返回被舍去至小數(shù)點后 D 位的數(shù)字 X 。若 D 的值為 0, 則結果 不帶有小數(shù)點或不帶有小數(shù)部分??梢詫?D 設為負數(shù) , 若要截去 ( 歸零 ) X 小數(shù)點左起第 D 位開始后面所有低位的值 4日期時間函數(shù) 編輯 a) 函數(shù)ADDDATE(date ,INTERVAL expr type ) ADDDATE(expr ,days ) 函數(shù)使用說明: 當被第二個參數(shù)的 INTERVAL 格式激活后, ADDDATE() 就是 DATE_ADD() 的同義詞。相關函數(shù) SUBDATE() 則是 DATE_SUB() 的同義詞。對于 INTERVAL 參數(shù)上的信息 ,請參見關于 DATE_ADD() 的論述。 b) 函數(shù) ADDTIME(expr ,expr2 ) 函數(shù)使用說明: ADDTIME() 將 expr2 添加至 expr 然后返回結果。 expr 是一個時間或時間日期表達式,而 expr2 是一個時間表達式。 c) 函數(shù) CONVERT_TZ(dt ,from_tz ,to_tz ) 函數(shù)使用說明: CONVERT_TZ() 將時間日期值 dt 從 from_tz 給出的時區(qū)轉到 to_tz 給出的時區(qū),然后返回結果值。關于可能指定的時區(qū)的詳細論述,若自變量無效,則這個函數(shù)會返回 NULL d) 函數(shù) CURDATE() 函數(shù)使用說明:將當前日期按照 'YYYY-MM-DD' 或 YYYYMMDD 格式的值返回,具體格式根據(jù)函數(shù)用在字符串或是數(shù)字語境中而定。 e) 函數(shù) CURRENT_DATE CURRENT_DATE() 函數(shù)使用說明: CURRENT_DATE 和 CURRENT_DATE() 是的同義詞 . f) 函數(shù) CURTIME() 函數(shù)使用說明: 將當前時間以 'HH:MM:SS' 或 HHMMSS 的格式返回, 具體格式根據(jù)函數(shù)用在字符串或是數(shù)字語境中而定。 g) 函數(shù) CURRENT_TIME, CURRENT_TIME() 函數(shù)使用說明: CURRENT_TIME 和 CURRENT_TIME() 是 CURTIME() 的同義詞。 h) 函數(shù) CURRENT_TIMESTAMP, CURRENT_TIMESTAMP() 函數(shù)使用說明: CURRENT_TIMESTAMP 和 CURRENT_TIMESTAMP() 是 NOW() 的同義詞 i) 函數(shù) DATE(expr ) 函數(shù)使用說明: 提取日期或時間日期表達式expr 中的日期部分。 j) 函數(shù) DATEDIFF(expr ,expr2 ) 函數(shù)使用說明: DATEDIFF() 返回起始時間 expr 和結束時間 expr2 之間的天數(shù)。 Expr 和 expr2 為日期或 date-and-time表達式。計算中只用到這些值的日期部分。 k) 函數(shù) DATE_ADD(date ,INTERVAL expr type ) DATE_SUB(date ,INTERVAL expr type ) 函數(shù)使用說明:這些函數(shù)執(zhí)行日期運算。 date 是一個 DATETIME 或 DATE 值,用來指定起始時間。 expr 是一個表達式,用來指定從起始日期添加或減去的時間間隔值。 Expr 是一個字符串 ; 對于負值的時間間隔,它可以以一個 ‘-' 開頭。 type 為關鍵詞,它指示了表達式被解釋的方式。 l) 函數(shù) DATE_FORMAT(date ,format ) 函數(shù)使用說明:根據(jù) format 字符串安排 date 值的格式。 m) 函數(shù) DAY(date ) 函數(shù)使用說明: DAY() 和 DAYOFMONTH() 的意義相同 n) 函數(shù) DAYNAME(date ) 函數(shù)使用說明:返回 date 對應的工作日名稱。 o) 函數(shù) DAYOFMONTH(date ) 函數(shù)使用說明:返回 date 對應的該月日期,范圍是從 1 到 31 p) 函數(shù) DAYOFWEEK(date ) 函數(shù)使用說明:返回 date (1 = 周日 , 2 = 周一 , ..., 7 = 周六 ) 對應的工作日索引。這些索引值符合 ODBC 標準 q) 函數(shù) DAYOFYEAR(date ) 函數(shù)使用說明:返回date 對應的一年中的天數(shù),范圍是從 1 到366 。 r) 函數(shù) EXTRACT(type FROM date ) 函數(shù)使用說明: EXTRACT() 函數(shù)所使用的時間間隔類型說明符同 DATE_ADD() 或 DATE_SUB() 的相同 , 但它從日期中提取其部分,而不是執(zhí)行日期運算。 s) 函數(shù)FROM_DAYS(N ) 函數(shù)使用說明: 給定一個天數(shù) N , 返回一個 DATE 值。 t) 函數(shù) FROM_UNIXTIME(unix_timestamp ) FROM_UNIXTIME(unix_timestamp ,format ) 函數(shù)使用說明:返回'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS 格式值的unix_timestamp 參數(shù)表示,具體格式取決于該函數(shù)是否用在字符串中或是數(shù)字語境中。 若format 已經(jīng)給出,則結果的格式是根據(jù)format 字符串而定。 format 可以包含同DATE_FORMAT() 函數(shù)輸入項列表中相同的說明符。 u) 函數(shù) GET_FORMAT(DATE|TIME|DATETIME, 'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL') 函數(shù)使用說明:返回一個格式字符串。這個函數(shù)在同 DATE_FORMAT() 及 STR_TO_DATE() 函數(shù)結合時很有用 v) 函數(shù) HOUR(time ) 函數(shù)使用說明:返回 time 對應的小時數(shù)。對于日時值的返回值范圍是從 0 到 23 w) 函數(shù) LAST_DAY(date ) 函數(shù)使用說明:獲取一個日期或日期時間值,返回該月最后一天對應的值。若參數(shù)無效,則返回 NULL 。 x) 函數(shù) LOCALTIME, LOCALTIME() 函數(shù)使用說明: LOCALTIME 及 LOCALTIME() 和 NOW() 具有相同意義。 y) 函數(shù) LOCALTIMESTAMP, LOCALTIMESTAMP() 函數(shù)使用說明: LOCALTIMESTAMP 和 LOCALTIMESTAMP() 和 NOW() 具有相同意義。 z) 函數(shù) MAKEDATE(year ,dayofyear ) 函數(shù)使用說明:給出年份值和一年中的天數(shù)值,返回一個日期。 dayofyear 必須大于 0 ,否則結果為 NULL 。 aa) 函數(shù) MAKETIME(hour ,minute ,second ) 函數(shù)使用說明: 返回由 hour 、 minute 和 second 參數(shù)計算得出的時間值 bb) 函數(shù) CROSECOND(expr ) 函數(shù)使用說明:從時間或日期時間表達式expr 返回微秒值,其數(shù)字范圍從 0 到 999999 。 cc) 函數(shù) MINUTE(time ) 函數(shù)使用說明:返回 time 對應的分鐘數(shù) , 范圍是從 0 到 59 。 dd) 函數(shù) MONTH(date ) 函數(shù)使用說明:返回 date 對應的月份,范圍時從 1 到 12 。 ee) 函數(shù) MONTHNAME(date ) 函數(shù)使用說明: 返回 date 對應月份的全名 ff) 函數(shù) NOW() 函數(shù)使用說明:返回當前日期和時間值,其格式為 'YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS , 具體格式取決于該函數(shù)是否用在字符串中或數(shù)字語境中。 gg) 函數(shù) PERIOD_ADD(P ,N ) 函數(shù)使用說明:添加 N 個月至周期 P ( 格式為 YYMM 或 YYYYMM) ,返回值的格式為 YYYYMM 。注意周期參數(shù) P 不是 日期值。 hh) 函數(shù) PERIOD_DIFF(P1 ,P2 ) 函數(shù)使用說明:返回周期 P1 和 P2 之間的月份數(shù)。 P1 和 P2 的格式應該為 YYMM 或 YYYYMM 。注意周期參數(shù) P1 和 P2 不是 日期值。 ii) 函數(shù) QUARTER(date ) 函數(shù)使用說明:返回 date 對應的一年中的季度值,范圍是從 1 到 4 jj) 函數(shù) SECOND(time ) 函數(shù)使用說明:返回 time 對應的秒數(shù) , 范圍是從 0 到 59 。 kk) 函數(shù) SEC_TO_TIME(seconds ) 函數(shù)使用說明: 返回被轉化為小時、 分鐘和秒數(shù)的 seconds 參數(shù)值 , 其格式為 'HH:MM:SS' 或 HHMMSS ,具體格式根據(jù)該函數(shù)是否用在字符串或數(shù)字語境中而定 ll) 函數(shù) STR_TO_DATE(str ,format ) 函數(shù)使用說明:這是 DATE_FORMAT() 函數(shù)的倒轉。它獲取一個字符串 str 和一個格式字符串 format 。若格式字符串包含日期和時間部分,則 STR_TO_DATE() 返回一個 DATETIME 值, 若該字符串只包含日期部分或時間部分,則返回一個 DATE 或 TIME 值。 mm) 函數(shù) SUBDATE(date ,INTERVAL expr type ) SUBDATE(expr ,days ) 函數(shù)使用說明:當被第二個參數(shù)的 INTERVAL 型式調(diào)用時 , SUBDATE() 和 DATE_SUB() 的意義相同。對于有關 INTERVAL 參數(shù)的信息, 見有關 DATE_ADD() 的討論。 nn) 函數(shù) SUBTIME(expr ,expr2 ) 函數(shù)使用說明: SUBTIME() 從 expr 中提取 expr2 ,然后返回結果。 expr 是一個時間或日期時間表達式,而 xpr2 是一個時間表達式。 oo) 函數(shù) SYSDATE() 函數(shù)使用說明:返回當前日期和時間值,格式為 'YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS , 具體格式根據(jù)函數(shù)是否用在字符串或數(shù)字語境而定。 pp) 函數(shù) TIME(expr ) 函數(shù)使用說明:提取一個時間或日期時間表達式的時間部分,并將其以字符串形式返回。 qq) 函數(shù) TIMEDIFF(expr ,expr2 ) 函數(shù)使用說明: TIMEDIFF() 返回起始時間 expr 和結束時間 expr2 之間的時間。 expr 和 expr2 為時間或 date-and-time表達式, 兩個的類型必須一樣。 rr) 函數(shù)TIMESTAMP(expr ) , TIMESTAMP(expr ,expr2 ) 函數(shù)使用說明: 對于一個單參數(shù) , 該函數(shù)將日期或日期時間表達式expr 作為日期時間值返回 . 對于兩個參數(shù) , 它將時間表達式 expr2 添加到日期或日期時間表達式 expr 中,將 theresult 作為日期時間值返回。 ss) 函數(shù) TIMESTAMPADD(interval ,int_expr ,datetime_expr ) 函數(shù)使用說明:將整型表達式int_expr 添加到日期或日期時間表達式 datetime_expr 中。 int_expr 的單位被時間間隔參數(shù)給定,該參數(shù)必須是以下值的其中一個: FRAC_SECOND 、SECOND 、 MINUTE 、 HOUR 、 DAY 、 WEEK 、 MONTH 、 QUARTER 或 YEAR ??墒褂盟@示的關鍵詞指定Interval 值,或使用SQL_TSI_ 前綴。例如, DAY 或SQL_TSI_DAY 都是正確的 tt) 函數(shù) TIMESTAMPDIFF(interval ,datetime_expr1 ,datetime_expr2 ) 函數(shù)使用說明:返回日期或日期時間表達式 datetime_expr1 和 datetime_expr2 the 之間的整數(shù)差。其結果的單位由 interval 參數(shù)給出。 interval 的法定值同 TIMESTAMPADD() 函數(shù)說明中所列出的相同。 uu) 函數(shù) TIME_FORMAT(time ,format ) 函數(shù)使用說明:其使用和 DATE_FORMAT() 函數(shù)相同 , 然而 format 字符串可能僅會包含處理小時、分鐘和秒的格式說明符。其它說明符產(chǎn)生一個 NULL 值或 0 。 vv) 函數(shù) TIME_TO_SEC(time ) 函數(shù)使用說明:返回已轉化為秒的 time 參數(shù) ww) 函數(shù) TO_DAYS(date ) 函數(shù)使用說明:給定一個日期 date , 返回一個天數(shù) ( 從年份 0 開始的天數(shù) ) 。 xx) 函數(shù) UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date ) 函數(shù)使用說明:若無參數(shù)調(diào)用,則返回一個 Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒數(shù) ) 作為無符號整數(shù)。若用 date 來調(diào)用 UNIX_TIMESTAMP() ,它會將參數(shù)值以 '1970-01-01 00:00:00' GMT 后的秒數(shù)的形式返回。 date 可以是一個 DATE 字符串、一個 DATETIME 字符串、一個 TIMESTAMP 或一個當?shù)貢r間的 YYMMDD 或 YYYMMDD 格式的數(shù)字。 yy) 函數(shù) UTC_DATE, UTC_DATE() 函數(shù)使用說明:返回當前 UTC 日期值,其格式為 'YYYY-MM-DD' 或 YYYYMMDD ,具體格式取決于函數(shù)是否用在字符串或數(shù)字語境中。 zz) 函數(shù) UTC_TIME, UTC_TIME() 函數(shù)使用說明:返回當前 UTC 值,其格式為 'HH:MM:SS' 或 HHMMSS ,具體格式根據(jù)該函數(shù)是否用在字符串或數(shù)字語境而定。 aaa) 函數(shù) UTC_TIMESTAMP, UTC_TIMESTAMP() 函數(shù)使用說明:返回當前 UTC 日期及時間值,格式為 'YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS ,具體格式根據(jù)該函數(shù)是否用在字符串或數(shù)字語境而定 bbb) 函數(shù) WEEK(date [,mode ]) 函數(shù)使用說明:該函數(shù)返回 date 對應的星期數(shù)。 WEEK() 的雙參數(shù)形式允許你指定該星期是否起始于周日或周一, 以及返回值的范圍是否為從 0 到 53 或從 1 到 53 。若 mode 參數(shù)被省略,則使用 default_week_format 系統(tǒng)自變量的值。 ccc) 函數(shù) WEEKDAY(date ) 函數(shù)使用說明:返回 date (0 = 周一 , 1 = 周二 , ... 6 = 周日 ) 對應的工作日索引 weekday index for ddd) 函數(shù) WEEKOFYEAR(date ) 函數(shù)使用說明:將該日期的陽歷周以數(shù)字形式返回,范圍是從 1 到 53 。它是一個兼容度函數(shù),相當于 WEEK(date ,3) 。 eee) 函數(shù) YEAR(date ) 函數(shù)使用說明:返回 date 對應的年份 , 范圍是從 1000 到 9999 。 fff) 函數(shù) YEARWEEK(date ), YEARWEEK(date ,start ) 函數(shù)使用說明:返回一個日期對應的年或周。 start 參數(shù)的工作同 start 參數(shù)對 WEEK() 的工作相同。結果中的年份可以和該年的第一周和最后一周對應的日期參數(shù)有所不同。 5搜索函數(shù) 編輯 a) 函數(shù) MATCH (col1,col2,...) AGAINST (expr [IN BOOLEAN MODE | WITH QUERY EXPANSION]) 6加密函數(shù) 編輯 a) 函數(shù) AES_ENCRYPT(str ,key_str ) , AES_DECRYPT(crypt_str ,key_str ) 函數(shù)使用說明:這些函數(shù)允許使用官方 AES 進行加密和數(shù)據(jù)加密 ( 高級加密標準 ) 算法 , 即以前人們所熟知的 “Rijndael” 。 保密關鍵字的長度為 128 比特,不過你可以通過改變源而將其延長到 256 比特。我們選擇了 128 比特的原因是它的速度要快得多,且對于大多數(shù)用途而言這個保密程度已經(jīng)夠用。 b) 函數(shù)DECODE(crypt_str ,pass_str ) 函數(shù)使用說明:使用 pass_str 作為密碼,解密加密字符串 crypt_str , crypt_str 應該是由 ENCODE() 返回的字符串。 c) 函數(shù) ENCODE(str ,pass_str ) 函數(shù)使用說明:使用 pass_str 作為密碼,解密 str 。 使用 DECODE() 解密結果。 d) 函數(shù) DES_DECRYPT(crypt_str [,key_str ]) 函數(shù)使用說明:使用 DES_ENCRYPT() 加密一個字符串。若出現(xiàn)錯誤,這個函數(shù)會返回 NULL 。 e) 函數(shù) DES_ENCRYPT(str [,(key_num |key_str )]) 函數(shù)使用說明:用 Triple-DES 算法給出的關鍵字加密字符串。若出現(xiàn)錯誤,這個函數(shù)會返回 NULL 。 f) 函數(shù) ENCRYPT(str [,salt ]) 函數(shù)使用說明:使用 Unix crypt() 系統(tǒng)調(diào)用加密 str 。 salt 參數(shù)應為一個至少包含 2 個字符的字符串。若沒有給出 salt 參數(shù),則使用任意值。 g) 函數(shù) MD5(str ) 函數(shù)使用說明:為字符串算出一個 MD5 128 比特檢查和。該值以 32 位十六進制數(shù)字的二進制字符串的形式返回 , 若參數(shù)為 NULL 則會返回 NULL 。例如,返回值可被用作散列關鍵字 h) 函數(shù) OLD_PASSWORD(str ) 函數(shù)使用說明:當 PASSWORD() 的執(zhí)行變?yōu)楦纳瓢踩詴r, OLD_PASSWORD() 會被添加到 MySQL 。 OLD_PASSWORD() 返回從前的 PASSWORD() 執(zhí)行值 ( 4.1 之前 ) ,同時允許你為任何 4.1 之前的需要連接到你的 5.1 版本 MySQL 服務器前客戶端設置密碼,從而不至于將它們切斷 i) 函數(shù)PASSWORD(str ) 函數(shù)使用說明:從原文密碼str 計算并返回密碼字符串,當參數(shù)為 NULL 時返回 NULL 。這個函數(shù)用于用戶授權表的Password 列中的加密MySQL 密碼存儲 7信息函數(shù) 編輯 a) 函數(shù) BENCHMARK(count ,expr ) 函數(shù)使用說明: BENCHMARK() 函數(shù)重復 count 次執(zhí)行表達式 expr 。 它可以被用于計算 MySQL 處理表達式的速度。結果值通常為 0 。另一種用處來自 mysql 客戶端內(nèi)部 , 能夠報告問詢執(zhí)行的次數(shù) b) 函數(shù) CHARSET(str ) 函數(shù)使用說明:返回字符串自變量的字符集。 c) 函數(shù) COERCIBILITY(str ) 函數(shù)使用說明:返回字符串自變量的整序可壓縮性值。 d) 函數(shù) COLLATION(str ) 函數(shù)使用說明:返回惠字符串參數(shù)的排序方式。 e) 函數(shù) CONNECTION_ID() 函數(shù)使用說明:返回對于連接的連接 ID ( 線程 ID) 。每個連接都有各自的唯一 ID 。 f) 函數(shù) CURRENT_USER, CURRENT_USER() 函數(shù)使用說明:返回當前話路被驗證的用戶名和主機名組合。這個值符合確定你的存取權限的 MySQL 賬戶。在被指定 SQL SECURITY DEFINER 特征的存儲程序內(nèi), CURRENT_USER() 返回程序的創(chuàng)建者 g) 函數(shù) DATABASE() 函數(shù)使用說明:返回使用 utf8 字符集的默認 ( 當前 ) 數(shù)據(jù)庫名。在存儲程序里,默認數(shù)據(jù)庫是同該程序向關聯(lián)的數(shù)據(jù)庫,但并不一定與調(diào)用語境的默認數(shù)據(jù)庫相同。 h) 函數(shù) FOUND_ROWS() 函數(shù)使用說明: A SELECT 語句可能包括一個 LIMIT 子句,用來限制服務器返回客戶端的行數(shù)。在有些情況下,需要不用再次運行該語句而得知在沒有 LIMIT 時到底該語句返回了多少行。為了知道這個行數(shù) , 包括在 SELECT 語句中選擇 SQL_CALC_FOUND_ROWS ,隨后調(diào)用 FOUND_ROWS() i) 函數(shù) LAST_INSERT_ID() LAST_INSERT_ID(expr ) 函數(shù)使用說明:自動返回最后一個 INSERT 或 UPDATE 問詢?yōu)?AUTO_INCREMENT 列設置的第一個 發(fā)生的值。 j) 函數(shù) ROW_COUNT() 函數(shù)使用說明: ROW_COUNT() 返回被前面語句升級的、插入的或刪除的行數(shù)。 這個行數(shù)和 mysql 客戶端顯示的行數(shù)及 mysql_affected_rows() C API 函數(shù)返回的值相同。 k) 函數(shù) SCHEMA() 函數(shù)使用說明:這個函數(shù)和 DATABASE() 具有相同的意義 l) 函數(shù) SESSION_USER() 函數(shù)使用說明: SESSION_USER() 和 USER() 具有相同的意義。 m) 函數(shù) SYSTEM_USER() 函數(shù)使用說明: SYSTEM_USER() 合 USER() 具有相同的意義 n) 函數(shù) USER() 函數(shù)使用說明:返回當前 MySQL 用戶名和機主名 o) 函數(shù) VERSION() 函數(shù)使用說明:返回指示 MySQL 服務器版本的字符串。這個字符串使用 utf8 字符集。 8其他函數(shù) 編輯 a) 函數(shù) DEFAULT(col_name ) 函數(shù)使用說明:返回一個表列的默認值。若該列沒有默認值則會產(chǎn)生錯誤。 b) 函數(shù) FORMAT(X ,D ) 函數(shù)使用說明:將數(shù)字 X 的格式寫為 '#,###,###.##', 以四舍五入的方式保留小數(shù)點后 D 位, 并將結果以字符串的形式返回。若 D 為 0, 則返回結果不帶有小數(shù)點,或不含小數(shù)部分。 c) 函數(shù) GET_LOCK(str ,timeout ) 函數(shù)使用說明:設法使用字符串 str 給定的名字得到一個鎖, 超時為 timeout 秒。若成功得到鎖,則返回 1 ,若操作超時則返回 0 ( 例如 , 由于另一個客戶端已提前封鎖了這個名字 ), 若發(fā)生錯誤則返回 NULL ( 諸如缺乏記憶或線程 mysqladmin kill 被斷開 ) 。假如你有一個用 GET_LOCK() 得到的鎖,當你執(zhí)行 RELEASE_LOCK() 或你的連接斷開 ( 正?;蚍钦?) 時,這個鎖就會解除 d) 函數(shù) INET_ATON(expr ) 函數(shù)使用說明:給出一個作為字符串的網(wǎng)絡地址的點地址表示,返回一個代表該地址數(shù)值的整數(shù)。地址可以是 4 或 8 比特地址。 e) 函數(shù) INET_NTOA(expr ) 函數(shù)使用說明:給定一個數(shù)字網(wǎng)絡地址 (4 或 8 比特 ), 返回作為字符串的該地址的電地址表示 f) 函數(shù) IS_FREE_LOCK(str ) 函數(shù)使用說明:檢查名為 str 的鎖是否可以使用 ( 換言之 , 沒有被封鎖 ) 。若鎖可以使用,則返回 1 ( 沒有人在用這個鎖 ), 若這個鎖正在被使用,則返回 0 ,出現(xiàn)錯誤則返回 NULL ( 諸如不正確的參數(shù) ) 。 g) 函數(shù) IS_USED_LOCK(str ) 函數(shù)使用說明:檢查名為 str 的鎖是否正在被使用 ( 換言之 , 被封鎖 ) 。若被封鎖,則返回使用該鎖的客戶端的連接標識符。否則返回 NULL 。 h) 函數(shù) MASTER_POS_WAIT(log_name ,log_pos [,timeout ]) 函數(shù)使用說明:該函數(shù)對于控制主從同步很有用處。它會持續(xù)封鎖,直到從設備閱讀和應用主機記錄中所有補充資料到指定的位置。返回值是其為到達指定位置而必須等待的記錄事件的數(shù)目。若從設備 SQL 線程沒有被啟動、從設備主機信息尚未初始化、參數(shù)不正確或出現(xiàn)任何錯誤,則該函數(shù)返回 NULL 。若超時時間被超過,則返回 -1 。若在 MASTER_POS_WAIT() 等待期間,從設備 SQL 線程中止,則該函數(shù)返回 NULL 。若從設備由指定位置通過,則函數(shù)會立即返回結果。 i) 函數(shù) NAME_CONST(name ,value ) 函數(shù)使用說明:返回給定值。 當用來產(chǎn)生一個結果集合列時 , NAME_CONST() 促使該列使用給定名稱。 j) 函數(shù) RELEASE_LOCK(str ) 函數(shù)使用說明:解開被 GET_LOCK() 獲取的,用字符串 str 所命名的鎖。若鎖被解開,則返回 1 ,若改線程尚未創(chuàng)建鎖,則返回 0 ( 此時鎖沒有被解開 ), 若命名的鎖不存在,則返回 NULL 。若該鎖從未被對 GET_LOCK() 的調(diào)用獲取,或鎖已經(jīng)被提前解開,則該鎖不存在。 k) 函數(shù) SLEEP(duration ) 函數(shù)使用說明:睡眠 ( 暫停 ) 時間為 duration 參數(shù)給定的秒數(shù),然后返回 0 。若 SLEEP() 被中斷 , 它會返回 1 。 duration 或許或包括一個給定的以微秒為單位的分數(shù)部分。 l) 函數(shù) UUID() 函數(shù)使用說明:返回一個通用唯一標識符 (UUID) , UUID 被設計成一個在時間和空間上都獨一無二的數(shù)字。 2 個對 UUID() 的調(diào)用應產(chǎn)生 2 個不同的值,即使這些調(diào)用的執(zhí)行是在兩個互不相連的單獨電腦上進行。 m) 函數(shù) VALUES(col_name ) 函數(shù)使用說明:在一個 INSERT … ON DUPLICATE KEY UPDATE … 語句中,你可以在 UPDATE 子句中使用 VALUES(col_name ) 函數(shù),用來訪問來自該語句的 INSERT 部分的列值。換言之, UPDATE 子句中的 VALUES(col_name ) 訪問需要被插入的 col_name 的值 , 并不會發(fā)生重復鍵沖突。這個函數(shù)在多行插入中特別有用。 VALUES() 函數(shù)只在 INSERT ... UPDATE 語句中有意義,而在其它情況下只會返回 NULL 9聚合函數(shù) 編輯 a) 函數(shù) AVG([DISTINCT] expr ) 函數(shù)使用說明:返回 expr 的平均值。 DISTINCT 選項可用于返回 expr 的不同值的平均值。 b) 函數(shù) BIT_AND(expr ) 函數(shù)使用說明:返回expr 中所有比特的 bitwise AND 。計算執(zhí)行的精確度為64 比特(BIGINT) 。若找不到匹配的行,則這個函數(shù)返回1844 ( 這是無符號 BIGINT 值,所有比特被設置為 1 )。 c) 函數(shù) BIT_OR(expr ) 函數(shù)使用說明:返回expr 中所有比特的bitwise OR 。計算執(zhí)行的精確度為64 比特(BIGINT) 。若找不到匹配的行,則函數(shù)返回 0 。 d) 函數(shù)BIT_XOR(expr ) 函數(shù)使用說明:返回expr 中所有比特的bitwise XOR 。計算執(zhí)行的精確度為64 比特(BIGINT) 。若找不到匹配的行,則函數(shù)返回 0 。 e) 函數(shù) COUNT(expr ) 函數(shù)使用說明:返回SELECT 語句檢索到的行中非NULL 值的數(shù)目。若找不到匹配的行,則COUNT() 返回 0 f) 函數(shù) COUNT(DISTINCT expr ,[expr ...]) 函數(shù)使用說明:返回不同的非NULL 值數(shù)目。若找不到匹配的項,則COUNT(DISTINCT) 返回 0 g) 函數(shù) GROUP_CONCAT(expr ) 函數(shù)使用說明:該函數(shù)返回帶有來自一個組的連接的非NULL 值的字符串結果。其完整的語法如下所示: GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr } [ASC | DESC] [,col_name ...]] [SEPARATOR str_val ]) h) 函數(shù) MIN([DISTINCT] expr ), MAX([DISTINCT] expr ) 函數(shù)使用說明:返回 expr 的最小值和最大值。 MIN() 和 MAX() 的取值可以是一個字符串參數(shù);在這些情況下, 它們返回最小或最大字符串值。 i) 函數(shù) STD(expr ) STDDEV(expr ) 函數(shù)使用說明:返回 expr 的總體標準偏差。這是標準 SQL 的延伸。這個函數(shù)的 STDDEV() 形式用來提供和 Oracle 的兼容性??墒褂脴藴?SQL 函數(shù) STDDEV_POP() 進行代替 j) 函數(shù) STDDEV_POP(expr ) 函數(shù)使用說明:返回expr 的總體標準偏差(VAR_POP() 的平方根) 。你也可以使用 STD() 或STDDEV(), 它們具有相同的意義,然而不是標準的 SQL 。若找不到匹配的行,則STDDEV_POP() 返回 NULL k) 函數(shù) STDDEV_SAMP(expr ) 函數(shù)使用說明:返回expr 的樣本標準差 ( VAR_SAMP() 的平方根) 。若找不到匹配的行,則STDDEV_SAMP() 返回 NULL l) 函數(shù) SUM([DISTINCT] expr ) 函數(shù)使用說明:返回expr 的總數(shù)。 若返回集合中無任何行,則 SUM() 返回NULL 。DISTINCT 關鍵詞可用于 MySQL 5.1 中,求得expr 不同值的總和。 若找不到匹配的行,則SUM() 返回 NULL m) 函數(shù) VAR_POP(expr ) 函數(shù)使用說明:返回 expr 總體標準方差。它將行視為總體,而不是一個樣本, 所以它將行數(shù)作為分母。你也可以使用 VARIANCE(), 它具有相同的意義然而不是 標準的 SQL n) 函數(shù) VAR_SAMP(expr ) 函數(shù)使用說明:返回expr 的樣本方差。更確切的說,分母的數(shù)字是行數(shù)減去1 。若找不到匹配的行,則VAR_SAMP() 返回NULL o) 函數(shù)VARIANCE(expr ) 函數(shù)使用說明:返回expr 的總體標準方差。這是標準SQL 的延伸??墒褂脴藴蔛QL 函數(shù) VAR_POP() 進行代替。若找不到匹配的項,則VARIANCE() 返回NULL
- mysql如果數(shù)據(jù)不存在,則插入新數(shù)據(jù),否則更新的實現(xiàn)方法
- mysql 存在該記錄則更新,不存在則插入記錄的sql
- MySQL 在觸發(fā)器里中斷記錄的插入或更新?
- mysql 記錄不存在時插入 記錄存在則更新的實現(xiàn)方法
- 與MSSQL對比學習MYSQL的心得(七)--查詢
- 與MSSQL對比學習MYSQL的心得(五)--運算符
- 與MSSQL對比學習MYSQL的心得(四)--BLOB數(shù)據(jù)類型
- 與MSSQL對比學習MYSQL的心得(三)--查看字段的長度
- 與MSSQL對比學習MYSQL的心得(二)--顯示寬度
- 與MSSQL對比學習MYSQL的心得(一)--基本語法
- 與MSSQL對比學習MYSQL的心得(八)--插入 更新 刪除
相關文章
開發(fā)人員為什么必須要了解數(shù)據(jù)庫鎖詳解
這篇文章主要給大家介紹了關于開發(fā)人員為什么必須要了解數(shù)據(jù)庫鎖的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用數(shù)據(jù)庫具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-03-03mysql insert的幾點操作(DELAYED,IGNORE,ON DUPLICATE KEY UPDATE )
DELAYED 做為快速插入,并不是很關心失效性,提高插入性能。2010-04-04MySQL關于ERROR 1290 (HY000)報錯解決方法
在本篇文章里小編給大家整理的是關于MySQL關于ERROR 1290 (HY000)報錯的解決方法,有興趣的朋友們可以參考下。2019-09-09