MySQL數(shù)據(jù)庫(kù)基礎(chǔ)及實(shí)例教程第6章課件_第1頁
MySQL數(shù)據(jù)庫(kù)基礎(chǔ)及實(shí)例教程第6章課件_第2頁
MySQL數(shù)據(jù)庫(kù)基礎(chǔ)及實(shí)例教程第6章課件_第3頁
MySQL數(shù)據(jù)庫(kù)基礎(chǔ)及實(shí)例教程第6章課件_第4頁
MySQL數(shù)據(jù)庫(kù)基礎(chǔ)及實(shí)例教程第6章課件_第5頁
已閱讀5頁,還剩137頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

肖紅MySQL數(shù)據(jù)庫(kù)基礎(chǔ)與實(shí)例教程

之MySQL編程基礎(chǔ)肖紅MySQL數(shù)據(jù)庫(kù)基礎(chǔ)與實(shí)例教程為了便于MySQL代碼維護(hù),以及提高M(jìn)ySQL代碼的重用性,MySQL開發(fā)人員經(jīng)常將頻繁使用的業(yè)務(wù)邏輯封裝成存儲(chǔ)程序,MySQL的存儲(chǔ)程序分為四類:函數(shù)、觸發(fā)器、存儲(chǔ)過程以及事件。內(nèi)容一覽為了便于MySQL代碼維護(hù),以及提高M(jìn)ySQL代碼的123本章首先介紹了MySQL編程的基礎(chǔ)知識(shí),然后講解了自定義函數(shù)的實(shí)現(xiàn)方法,接著介紹了MySQL常用的系統(tǒng)函數(shù),最后結(jié)合“選課系統(tǒng)”,編寫自定義函數(shù)模擬實(shí)現(xiàn)了中文全文檢索。4自定義函數(shù)MySQL編程基礎(chǔ)知識(shí)系統(tǒng)函數(shù)中文全文檢索的模擬實(shí)現(xiàn)內(nèi)容一覽123本章首先介紹了MySQL編程的基礎(chǔ)知識(shí),然后講123MySQL程序設(shè)計(jì)結(jié)構(gòu)是在SQL標(biāo)準(zhǔn)的基礎(chǔ)上增加了一些程序設(shè)計(jì)語言的元素,其中包括常量、變量、運(yùn)算符、表達(dá)式、流程控制以及函數(shù)等內(nèi)容。用戶自定義變量常量運(yùn)算符與表達(dá)式45begin-end語句塊重置命令結(jié)束標(biāo)記6.1MySQL編程基礎(chǔ)知識(shí)123MySQL程序設(shè)計(jì)結(jié)構(gòu)是在SQL標(biāo)準(zhǔn)的基礎(chǔ)上增按照MySQL的數(shù)據(jù)類型進(jìn)行劃分,可以將常量劃分為字符串常量、數(shù)值常量、十六進(jìn)制常量、日期時(shí)間常量、二進(jìn)制常量以及NULL。6.1.1常量按照MySQL的數(shù)據(jù)類型進(jìn)行劃分,可以將常量劃分為字1.字符串常量字符串常量是指用單引號(hào)或雙引號(hào)括起來的字符序列。select'I\'ma\teacher'ascol1,"you'reastude\nt"ascol2;由于大多編程語言(例如Java、C等)使用雙引號(hào)表示字符串,為了便于區(qū)分,在MySQL數(shù)據(jù)庫(kù)中推薦使用單引號(hào)表示字符串。6.1.1常量1.字符串常量6.1.1常量2.?dāng)?shù)值常量數(shù)值常量可以分為整數(shù)常量(例如2013)和小數(shù)常量(例如5.26、101.5E5),這里不再贅述。6.1.1常量2.?dāng)?shù)值常量6.1.1常量3.日期時(shí)間常量日期時(shí)間常量是一個(gè)符合特殊格式的字符串。例如'14:30:24'是一個(gè)時(shí)間常量,'2008-05-1214:28:24'是一個(gè)日期時(shí)間常量。日期時(shí)間常量的值必須符合日期、時(shí)間標(biāo)準(zhǔn),例如'1996-02-31'是錯(cuò)誤的日期常量。6.1.1常量3.日期時(shí)間常量6.1.1常量3.日期時(shí)間常量日期時(shí)間常量是一個(gè)符合特殊格式的字符串。例如'14:30:24'是一個(gè)時(shí)間常量,'2008-05-1214:28:24'是一個(gè)日期時(shí)間常量。日期時(shí)間常量的值必須符合日期、時(shí)間標(biāo)準(zhǔn),例如'1996-02-31'是錯(cuò)誤的日期常量。6.1.1常量3.日期時(shí)間常量6.1.1常量4.布爾值布爾值只包含兩個(gè)可能的值:true和false。說明:使用select語句顯示布爾值true或者false時(shí),會(huì)將其轉(zhuǎn)換為字符串“0”或者字符串“1”。6.1.1常量4.布爾值6.1.1常量5.二進(jìn)制常量二進(jìn)制常量由數(shù)字“0”和“1”組成。二進(jìn)制常量的表示方法:前綴為“b”,后面緊跟一個(gè)“二進(jìn)制”字符串。例如下面的select語句輸出三個(gè)字符。其中b‘111101’表示“等號(hào)”,b‘1’表示“笑臉”,b‘11’表示“心”。selectb'111101',b'1',b'11';6.1.1常量5.二進(jìn)制常量6.1.1常量6.十六進(jìn)制常量十六進(jìn)制常量由數(shù)字“0”到“9”及字母“a”到“f”或“A”到“F”組成(字母不區(qū)分大小寫)。十六進(jìn)制常量有兩種表示方法。6.1.1常量6.十六進(jìn)制常量6.1.1常量6.十六進(jìn)制常量第一種表示方法:前綴為大寫字母“X”或小寫字母“x”,后面緊跟一個(gè)“十六進(jìn)制”字符串。例如selectX'41',x'4D7953514C';其中X'41'表示大寫字母A。x'4D7953514C'表示字符串MySQL。6.1.1常量6.十六進(jìn)制常量6.1.1常量6.十六進(jìn)制常量第二種表示方法:前綴為“0x”,后面緊跟一個(gè)“十六進(jìn)制數(shù)”(不用引號(hào))。例如select0x41,0x4D7953514C;其中0x41表示大寫字母A。0x4D7953514C表示字符串MySQL。6.1.1常量6.十六進(jìn)制常量6.1.1常量小結(jié):可以看到,使用select語句顯示十六進(jìn)制數(shù)時(shí),會(huì)將十六進(jìn)制數(shù)自動(dòng)轉(zhuǎn)換為“字符串”再進(jìn)行顯示。如果需要將一個(gè)字符串或數(shù)字轉(zhuǎn)換為十六進(jìn)制格式的字符串,可以用hex()函數(shù)實(shí)現(xiàn)。例如selecthex('MySQL');hex()函數(shù)將“MySQL”字符串轉(zhuǎn)換為十六進(jìn)制數(shù)4D7953514C。6.1.1常量小結(jié):可以看到,使用select語句顯示十六進(jìn)制數(shù)時(shí),會(huì)將十小結(jié):十六進(jìn)制數(shù)與字符之間存在一一對(duì)應(yīng)關(guān)系,利用這個(gè)特點(diǎn),可以模擬實(shí)現(xiàn)中文全文檢索。7.NULL值NULL值可適用于各種字段類型,它通常用來表示“值不確定”、“沒有值”等意義,NULL值參與算術(shù)運(yùn)算、比較運(yùn)算以及邏輯運(yùn)算時(shí),結(jié)果依然為NULL。6.1.1常量小結(jié):十六進(jìn)制數(shù)與字符之間存在一一對(duì)應(yīng)關(guān)系,利用這個(gè)特點(diǎn),可變量分為系統(tǒng)變量(以@@開頭)以及用戶自定義變量。用戶自定義變量分為用戶會(huì)話變量(以@開頭)以及局部變量(不以@開頭)。6.1.2用戶自定義變量變量分為系統(tǒng)變量(以@@開頭)以及用戶自定義變量。6.1.21.用戶會(huì)話變量MySQL客戶機(jī)1定義了會(huì)話變量,會(huì)話期間,該會(huì)話變量一直有效;MySQL客戶機(jī)2不能訪問MySQL客戶機(jī)1定義的會(huì)話變量;MySQL客戶機(jī)1關(guān)閉或者M(jìn)ySQL客戶機(jī)1與服務(wù)器斷開連接后,MySQL客戶機(jī)1定義的所有會(huì)話變量將自動(dòng)釋放,以便節(jié)省MySQL服務(wù)器的內(nèi)存空間。6.1.2用戶自定義變量1.用戶會(huì)話變量6.1.2用戶自定義變量用戶會(huì)話變量6.1.2用戶自定義變量用戶會(huì)話變量6.1.2用戶自定義變量1.用戶會(huì)話變量系統(tǒng)會(huì)話變量與用戶會(huì)話變量的共同之處在于:變量名大小寫不敏感。系統(tǒng)會(huì)話變量與用戶會(huì)話變量的區(qū)別在于:1.用戶會(huì)話變量一般以一個(gè)“@”開頭;系統(tǒng)會(huì)話變量以兩個(gè)“@”開頭。2.系統(tǒng)會(huì)話變量無需定義可以直接使用。6.1.2用戶自定義變量1.用戶會(huì)話變量6.1.2用戶自定義變量(1)用戶會(huì)話變量的定義與賦值一般情況下,用戶會(huì)話變量的定義與賦值會(huì)同時(shí)進(jìn)行。用戶會(huì)話變量的定義與賦值有兩種方法:使用set命令或者使用select語句。方法一:使用set命令定義用戶會(huì)話變量,并為其賦值,語法格式如下:set@user_variable1=expression1[,@user_variable2=expression2,…]6.1.2用戶自定義變量(1)用戶會(huì)話變量的定義與賦值6.1.2用戶自定義變量說明:用戶會(huì)話變量的數(shù)據(jù)類型是根據(jù)賦值運(yùn)算符“=”右邊表達(dá)式的計(jì)算結(jié)果自動(dòng)分配的。也就是說,等號(hào)右邊的值(包括字符集和字符序)決定了用戶會(huì)話變量的數(shù)據(jù)類型(包括字符集和字符序)。6.1.2用戶自定義變量說明:用戶會(huì)話變量的數(shù)據(jù)類型是根據(jù)賦值運(yùn)算符“=”右邊表達(dá)式方法二:使用select語句定義用戶會(huì)話變量,并為其賦值,語法格式有兩種。第一種語法格式:select@user_variable1:=expression1[,user_variable2:=expression2,…]第二種語法格式:selectexpression1into@user_variable1,expression2into@user_variable2,…6.1.2用戶自定義變量方法二:使用select語句定義用戶會(huì)話變量,并為其賦值,語方法二:使用select語句定義用戶會(huì)話變量,說明:第一種語法格式中需要使用“:=”賦值語句,原因在于“=”是為“比較”保留的。第一種與第二種語法格式的區(qū)別在于:第一種語法格式中的select語句會(huì)產(chǎn)生結(jié)果集,第二種語法格式中的select語句,僅僅用于會(huì)話變量的定義及賦值(但不會(huì)產(chǎn)生結(jié)果集)。6.1.2用戶自定義變量方法二:使用select語句定義用戶會(huì)話變量,說明:6.1.2.用戶會(huì)話變量與SQL語句任務(wù)布置1:上機(jī)操作,完成本書場(chǎng)景描述1:用戶會(huì)話變量與SQL語句的任務(wù)要求。注意:哪些方法的select語句產(chǎn)生結(jié)果集?哪些方法的select語句不產(chǎn)生結(jié)果集?6.1.2用戶自定義變量2.用戶會(huì)話變量與SQL語句6.1.2用戶自定義變量3.局部變量declare命令專門用于定義局部變量及對(duì)應(yīng)的數(shù)據(jù)類型。局部變量必須定義在存儲(chǔ)程序中(例如函數(shù)、觸發(fā)器、存儲(chǔ)過程以及事件中),并且局部變量的作用范圍僅僅局限于存儲(chǔ)程序中,脫離存儲(chǔ)程序,局部變量沒有絲毫意義。局部變量主要用于下面三種場(chǎng)合。6.1.2用戶自定義變量3.局部變量6.1.2用戶自定義變量3.局部變量場(chǎng)合一:局部變量定義在存儲(chǔ)程序的begin-end語句塊(稍后介紹)之間。此時(shí)局部變量首先必須使用declare命令定義,并且必須指定局部變量的數(shù)據(jù)類型。只有定義局部變量后,才可以使用set命令或者select語句為其賦值。6.1.2用戶自定義變量3.局部變量6.1.2用戶自定義變量3.局部變量場(chǎng)合二:局部變量作為存儲(chǔ)過程或者函數(shù)的參數(shù)使用,此時(shí)雖然不需要使用declare命令定義,但需要指定參數(shù)的數(shù)據(jù)類型。6.1.2用戶自定義變量3.局部變量6.1.2用戶自定義變量3.局部變量場(chǎng)合三:局部變量也可以用在SQL語句中。數(shù)據(jù)檢索時(shí),如果select語句的結(jié)果集是單個(gè)值,可以將select語句的返回結(jié)果賦予局部變量,局部變量也可以直接嵌入到select、insert、update以及delete語句的條件表達(dá)式中。6.1.2用戶自定義變量3.局部變量6.1.2用戶自定義變量4.局部變量與用戶會(huì)話變量的區(qū)別(1)用戶會(huì)話變量名以“@”開頭,而局部變量名前面沒有“@”符號(hào)。6.1.2用戶自定義變量4.局部變量與用戶會(huì)話變量的區(qū)別6.1.2用戶自定義變量(2)局部變量使用declare命令定義(存儲(chǔ)過程參數(shù)、函數(shù)參數(shù)除外),定義時(shí)必須指定局部變量的數(shù)據(jù)類型;局部變量定義后,才可以使用set命令或者select語句為其賦值。用戶會(huì)話變量使用set命令或select語句定義并進(jìn)行賦值,定義用戶會(huì)話變量時(shí)無需指定數(shù)據(jù)類型。諸如“declare@student_noint;”的語句是錯(cuò)誤語句,用戶會(huì)話變量不能使用declare命令定義。6.1.2用戶自定義變量(2)局部變量使用declare命令定義(存儲(chǔ)過程參數(shù)、函數(shù)4.局部變量與用戶會(huì)話變量的區(qū)別(3)用戶會(huì)話變量的作用范圍與生存周期大于局部變量。局部變量如果作為存儲(chǔ)過程或者函數(shù)的參數(shù),此時(shí)在整個(gè)存儲(chǔ)過程或函數(shù)內(nèi)中有效;如果定義在存儲(chǔ)程序的begin-end語句塊中,此時(shí)僅在當(dāng)前的begin-end語句塊中有效。用戶會(huì)話變量在本次會(huì)話期間一直有效,直至關(guān)閉服務(wù)器連接。6.1.2用戶自定義變量4.局部變量與用戶會(huì)話變量的區(qū)別6.1.2用戶自定義變量4.局部變量與用戶會(huì)話變量的區(qū)別(4)如果局部變量嵌入到SQL語句中,由于局部變量名前沒有“@”符號(hào),這就要求局部變量名不能與表字段名同名,否則將出現(xiàn)無法預(yù)期的結(jié)果。6.1.2用戶自定義變量4.局部變量與用戶會(huì)話變量的區(qū)別6.1.2用戶自定義變量關(guān)于局部變量的其他說明:在MySQL數(shù)據(jù)庫(kù)中,由于局部變量涉及begin-end語句塊、函數(shù)、存儲(chǔ)過程等知識(shí),局部變量的具體使用方法將結(jié)合這些知識(shí)稍后一塊兒進(jìn)行講解。declare命令盡量寫在begin-end語句塊的開頭,盡量寫在任何其他語句的前面。6.1.2用戶自定義變量關(guān)于局部變量的其他說明:6.1.2用戶自定義變量根據(jù)運(yùn)算符功能的不同,可將MySQL的運(yùn)算符分為算術(shù)運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符以及位操作運(yùn)算符。1.算術(shù)運(yùn)算符算術(shù)運(yùn)算符用于兩個(gè)操作數(shù)之間執(zhí)行算術(shù)運(yùn)算。常用的算術(shù)運(yùn)算符有:+(加)、-(減)、*(乘)、/(除)、%(求余)以及div(求商)等6種運(yùn)算符。6.1.3運(yùn)算符與表達(dá)式根據(jù)運(yùn)算符功能的不同,可將MySQL的運(yùn)算符分為算術(shù)運(yùn)算符、2.比較運(yùn)算符比較運(yùn)算符(又稱關(guān)系運(yùn)算符)用于比較操作數(shù)之間的大小關(guān)系,其運(yùn)算結(jié)果要么為true、要么為false、要么為NULL(不確定)。6.1.3運(yùn)算符與表達(dá)式2.比較運(yùn)算符6.1.3運(yùn)算符與表達(dá)式select'ab'='ab','ab'='ab','b'>'a',NULL=NULL,NULL<=>NULL,NULLisNULL;結(jié)論:字符串進(jìn)行比較時(shí),會(huì)截掉字符串尾部的空格字符,然后進(jìn)行比較。6.1.3運(yùn)算符與表達(dá)式select'ab'='ab','ab'='ab',3.邏輯運(yùn)算符邏輯運(yùn)算符(又稱布爾運(yùn)算符)對(duì)布爾值進(jìn)行操作,其運(yùn)算結(jié)果要么為true、要么為false、要么為NULL(不確定)。

6.1.3運(yùn)算符與表達(dá)式3.邏輯運(yùn)算符6.1.3運(yùn)算符與表達(dá)式4.位運(yùn)算符位運(yùn)算符對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行操作(如果不是二進(jìn)制類型的數(shù),將進(jìn)行類型自動(dòng)轉(zhuǎn)換),其運(yùn)算結(jié)果為二進(jìn)制數(shù)。使用select語句顯示二進(jìn)制數(shù)時(shí),會(huì)將其自動(dòng)轉(zhuǎn)換為十進(jìn)制數(shù)顯示。

6.1.3運(yùn)算符與表達(dá)式4.位運(yùn)算符6.1.3運(yùn)算符與表達(dá)式4.位運(yùn)算符6.1.3運(yùn)算符與表達(dá)式4.位運(yùn)算符6.1.3運(yùn)算符與表達(dá)式[開始標(biāo)簽:]begin

[局部]變量的聲明; 錯(cuò)誤觸發(fā)條件的聲明; 游標(biāo)的聲明; 錯(cuò)誤處理程序的聲明; 業(yè)務(wù)邏輯代碼;end[結(jié)束標(biāo)簽];6.1.5重置命令結(jié)束標(biāo)記[開始標(biāo)簽:]begin6.1.5重置命令結(jié)束標(biāo)記delimiter$$select*fromstudentwherestudent_namelike'張_'$$delimiter;select*fromstudentwherestudent_namelike'張_';6.1.4begin-end語句塊delimiter$$6.1.4begin-end語句塊123函數(shù)可以看作是一個(gè)“加工作坊”,這個(gè)“加工作坊”接收“調(diào)用者”傳遞過來的“原料”(實(shí)際上是函數(shù)的參數(shù)),然后將這些“原料”“加工處理”成“產(chǎn)品”(實(shí)際上是函數(shù)的返回值),再把“產(chǎn)品”返回給“調(diào)用者”。函數(shù)的創(chuàng)建與調(diào)用創(chuàng)建自定義函數(shù)的語法格式函數(shù)的維護(hù)45條件控制語句循環(huán)語句6.2定義函數(shù)123函數(shù)可以看作是一個(gè)“加工作坊”,這個(gè)“加工作坊”接收“createfunction函數(shù)名(參數(shù)1,參數(shù)2,…)returns返回值的數(shù)據(jù)類型[函數(shù)選項(xiàng)]begin 函數(shù)體;

return語句;end;6.2.1創(chuàng)建自定義函數(shù)的語法格式createfunction函數(shù)名(參數(shù)1,參數(shù)2,…)函數(shù)選項(xiàng)由以下一種或幾種選項(xiàng)組合而成。languagesql|[not]deterministic|{containssql|nosql|readssqldata|modifiessqldata}|sqlsecurity{definer|invoker}|comment'注釋'6.2.1創(chuàng)建自定義函數(shù)的語法格式函數(shù)選項(xiàng)由以下一種或幾種選項(xiàng)組合而成。6.2.1創(chuàng)建自定義函數(shù)選項(xiàng)說明:languagesql:默認(rèn)選項(xiàng),用于說明函數(shù)體使用SQL語言編寫。6.2.1創(chuàng)建自定義函數(shù)的語法格式函數(shù)選項(xiàng)說明:6.2.1創(chuàng)建自定義函數(shù)的語法格式deterministic(確定性):當(dāng)函數(shù)返回不確定值時(shí),該選項(xiàng)是為了防止“復(fù)制”時(shí)的不一致性。如果函數(shù)總是對(duì)同樣的輸入?yún)?shù)產(chǎn)生同樣的結(jié)果,則被認(rèn)為它是“確定的”,否則就是“不確定”的。例如函數(shù)返回系統(tǒng)當(dāng)前的時(shí)間,返回值是不確定的。如果既沒有給定deterministic也沒有給定notdeterministic,默認(rèn)的就是notdeterministic。6.2.1創(chuàng)建自定義函數(shù)的語法格式deterministic(確定性):當(dāng)函數(shù)返回不確定值時(shí),containssql:表示函數(shù)體中不包含讀或?qū)憯?shù)據(jù)的語句(例如set命令等)。nosql:表示函數(shù)體中不包含SQL語句。readssqldata:表示函數(shù)體中包含select查詢語句,但不包含更新語句。6.2.1創(chuàng)建自定義函數(shù)的語法格式containssql:表示函數(shù)體中不包含讀或?qū)憯?shù)據(jù)的語句modifiessqldata:表示函數(shù)體包含更新語句。如果上述選項(xiàng)沒有明確指定,默認(rèn)是containssql。sqlsecurity:用于指定函數(shù)的執(zhí)行許可。definer:表示該函數(shù)只能由創(chuàng)建者調(diào)用。invoker:表示該函數(shù)可以被其他數(shù)據(jù)庫(kù)用戶調(diào)用。默認(rèn)值是definer。comment:為函數(shù)添加功能說明等注釋信息。6.2.1創(chuàng)建自定義函數(shù)的語法格式modifiessqldata:表示函數(shù)體包含更新語句。任務(wù)布置2:上機(jī)操作,完成本書場(chǎng)景描述2:簡(jiǎn)單的自定義函數(shù)(空參數(shù))的任務(wù)要求。任務(wù)布置3:上機(jī)操作,完成場(chǎng)景描述3:自定義函數(shù)可以操作數(shù)據(jù)庫(kù)中的數(shù)據(jù)的任務(wù)要求。任務(wù)布置4:上機(jī)操作,完成場(chǎng)景描述4:將查詢結(jié)果賦予變量的任務(wù)要求。6.2.2函數(shù)的創(chuàng)建與調(diào)用任務(wù)布置2:上機(jī)操作,完成本書場(chǎng)景描述2:簡(jiǎn)單的自定義函數(shù)(函數(shù)的維護(hù)包括查看函數(shù)的定義、修改函數(shù)的定義以及刪除函數(shù)的定義等內(nèi)容。6.2.3函數(shù)的維護(hù)函數(shù)的維護(hù)包括查看函數(shù)的定義、修改函數(shù)的定義以及刪除函數(shù)的定1.查看函數(shù)的定義(1)查看當(dāng)前數(shù)據(jù)庫(kù)中所有的自定義函數(shù)信息,可以使用MySQL命令“showfunctionstatus;”。如果自定義函數(shù)較多,使用MySQL命令“showfunctionstatuslike模式;”可以進(jìn)行模糊查詢。

6.2.3函數(shù)的維護(hù)1.查看函數(shù)的定義6.2.3函數(shù)的維護(hù)1.查看函數(shù)的定義(2)查看指定數(shù)據(jù)庫(kù)(例如choose數(shù)據(jù)庫(kù))中的所有自定義函數(shù)名,可以使用下面的SQL語句,如圖6-28所示。selectnamefromcwheredb='choose'andtype='function';6.2.3函數(shù)的維護(hù)1.查看函數(shù)的定義6.2.3函數(shù)的維護(hù)1.查看函數(shù)的定義(3)使用MySQL命令“showcreatefunction函數(shù)名;”可以查看指定函數(shù)名的詳細(xì)信息。例如查看get_name_fn()函數(shù)的詳細(xì)信息,可以使用“showcreatefunctionget_name_fn\G”

6.2.3函數(shù)的維護(hù)1.查看函數(shù)的定義6.2.3函數(shù)的維護(hù)1.查看函數(shù)的定義(4)函數(shù)的信息都保存在information_schema數(shù)據(jù)庫(kù)中的routines表中,可以使用select語句檢索routines表,查詢函數(shù)的相關(guān)信息。select*frominformation_schema.routineswhereroutine_name='get_name_fn'\G6.2.3函數(shù)的維護(hù)1.查看函數(shù)的定義6.2.3函數(shù)的維護(hù)2.函數(shù)定義的修改由于函數(shù)保存的僅僅是函數(shù)體,而函數(shù)體實(shí)際上是一些MySQL表達(dá)式,因此函數(shù)自身不保存任何用戶數(shù)據(jù)。當(dāng)函數(shù)的函數(shù)體需要更改時(shí),可以使用dropfunction語句暫時(shí)將函數(shù)的定義刪除,然后使用createfunction語句重新創(chuàng)建相同名字的函數(shù)即可。這種方法對(duì)于存儲(chǔ)過程、視圖、觸發(fā)器的修改同樣適用。6.2.3函數(shù)的維護(hù)2.函數(shù)定義的修改6.2.3函數(shù)的維護(hù)3.函數(shù)定義的刪除使用MySQL命令“dropfunction函數(shù)名”刪除自定義函數(shù)。例如刪除get_name_fn()函數(shù)可以使用“dropfunctionget_name_fn;”。6.2.3函數(shù)的維護(hù)3.函數(shù)定義的刪除6.2.3函數(shù)的維護(hù)條件控制語句分為兩種,一種是if語句,另一種是case語句。6.2.4條件控制語句條件控制語句分為兩種,一種是if語句,另一種是case語句。1.if語句if語句根據(jù)條件表達(dá)式的值確定執(zhí)行不同的語句塊,if語句的用法格式如下。if條件表達(dá)式1then語句塊1;[elseif條件表達(dá)式2then語句塊2]...[else語句塊n]endif;說明:endif后必須以“;”結(jié)束。6.2.4條件控制語句1.if語句6.2.4條件控制語句6.2.4條件控制語句6.2.4條件控制語句2.case語句case語句用于實(shí)現(xiàn)比if語句分支更為復(fù)雜的條件判斷,case語句的語法格式如下。說明:MySQL中的case語句與C語言、Java語言等高級(jí)程序設(shè)計(jì)語言不同,在高級(jí)程序設(shè)計(jì)語言中,每個(gè)case的分支需使用“break”跳出,而MySQL無需使用“break”語句。6.2.4條件控制語句2.case語句6.2.4條件控制語句2.case語句case表達(dá)式whenvalue1then語句塊1;whenvalue2then語句塊2;…else語句塊n;endcase;6.2.4條件控制語句2.case語句6.2.4條件控制語句6.2.4條件控制語句6.2.4條件控制語句MySQL提供了三種循環(huán)語句,分別是while、repeat以及l(fā)oop。除此以外,MySQL還提供了iterate語句以及l(fā)eave語句用于循環(huán)的內(nèi)部控制。6.2.5循環(huán)語句MySQL提供了三種循環(huán)語句,分別是while、repeat1.while語句當(dāng)條件表達(dá)式的值為true時(shí),反復(fù)執(zhí)行循環(huán)體,直到條件表達(dá)式的值為false,while語句的語法格式如下。[循環(huán)標(biāo)簽:]while條件表達(dá)式do循環(huán)體;endwhile[循環(huán)標(biāo)簽];說明:endwhile后必須以“;”結(jié)束。6.2.5循環(huán)語句1.while語句6.2.5循環(huán)語句6.2.5循環(huán)語句6.2.5循環(huán)語句2.leave語句leave語句用于跳出當(dāng)前的循環(huán)語句(例如while語句),語法格式如下。leave循環(huán)標(biāo)簽;說明:leave循環(huán)標(biāo)簽后必須以“;”結(jié)束。6.2.5循環(huán)語句2.leave語句6.2.5循環(huán)語句3.iterate語句iterate語句用于跳出本次循環(huán),繼而進(jìn)行下次循環(huán)。iterate語句的語法格式如下。iterate循環(huán)標(biāo)簽;說明:iterate循環(huán)標(biāo)簽后必須以“;”結(jié)束。6.2.5循環(huán)語句3.iterate語句6.2.5循環(huán)語句4.repeat語句當(dāng)條件表達(dá)式的值為false時(shí),反復(fù)執(zhí)行循環(huán),直到條件表達(dá)式的值為true,repeat語句的語法格式如下。6.2.5循環(huán)語句4.repeat語句6.2.5循環(huán)語句4.repeat語句[循環(huán)標(biāo)簽:]repeat循環(huán)體;until條件表達(dá)式endrepeat[循環(huán)標(biāo)簽];說明:endrepeat后必須以“;”結(jié)束。6.2.5循環(huán)語句4.repeat語句6.2.5循環(huán)語句5.loop語句的語法格式由于loop循環(huán)語句本身沒有停止循環(huán)的語句,因此loop通常使用leave語句跳出loop循環(huán),loop的語法格式如下。6.2.5循環(huán)語句5.loop語句的語法格式6.2.5循環(huán)語句5.loop語句的語法格式[循環(huán)標(biāo)簽:]loop循環(huán)體;if條件表達(dá)式thenleave[循環(huán)標(biāo)簽];endif;endloop;說明:endloop后必須以“;”結(jié)束。6.2.5循環(huán)語句5.loop語句的語法格式6.2.5循環(huán)語句123MySQL功能強(qiáng)大的一個(gè)重要原因是MySQL內(nèi)置了許多功能豐富的函數(shù)。字符串函數(shù)數(shù)學(xué)函數(shù)數(shù)據(jù)類型轉(zhuǎn)換函數(shù)45條件控制函數(shù)系統(tǒng)信息函數(shù)6.3系統(tǒng)函數(shù)123MySQL功能強(qiáng)大的一個(gè)重要原因是MySQL內(nèi)置了許67本章講解的所有函數(shù)f(x)對(duì)數(shù)據(jù)x進(jìn)行操作時(shí),都會(huì)產(chǎn)生返回結(jié)果,并且數(shù)據(jù)x的值以及x的數(shù)據(jù)類型都不會(huì)發(fā)生絲毫變化。日期和時(shí)間函數(shù)其他常用的MySQL函數(shù)6.3系統(tǒng)函數(shù)67本章講解的所有函數(shù)f(x)對(duì)數(shù)據(jù)x進(jìn)行操作時(shí),都為了便于讀者學(xué)習(xí),本書將數(shù)學(xué)函數(shù)歸納為三角函數(shù),指數(shù)函數(shù)及對(duì)數(shù)函數(shù),求近似值函數(shù),隨機(jī)函數(shù),二進(jìn)制、十六進(jìn)制函數(shù)等。6.3.1數(shù)學(xué)函數(shù)為了便于讀者學(xué)習(xí),本書將數(shù)學(xué)函數(shù)歸納為三角函數(shù),指數(shù)函數(shù)及對(duì)1.三角函數(shù)MySQL提供了pi()函數(shù)計(jì)算圓周率;radians(x)函數(shù)負(fù)責(zé)將角度x轉(zhuǎn)換為弧度;degrees(x)函數(shù)負(fù)責(zé)將弧度x轉(zhuǎn)換為角度。MySQL還提供了三角函數(shù),正弦函數(shù)sin(x)、余弦函數(shù)cos(x)、tan(x)正切函數(shù)、余切函數(shù)cot(x)、反正弦函數(shù)asin(x)、反余弦函數(shù)acos(x)以及反正切函數(shù)atan(x)。6.3.1數(shù)學(xué)函數(shù)1.三角函數(shù)6.3.1數(shù)學(xué)函數(shù)2.指數(shù)函數(shù)及對(duì)數(shù)函數(shù)MySQL中常用的指數(shù)函數(shù)有sqrt()平方根函數(shù)、pow(x,y)冪運(yùn)算函數(shù)(計(jì)算x的y次方)以及exp(x)函數(shù)(計(jì)算e的x次方)。說明:pow(x,y)冪運(yùn)算函數(shù)還有一個(gè)別名函數(shù):power(x,y),實(shí)現(xiàn)相同的功能。6.3.1數(shù)學(xué)函數(shù)2.指數(shù)函數(shù)及對(duì)數(shù)函數(shù)6.3.1數(shù)學(xué)函數(shù)2.指數(shù)函數(shù)及對(duì)數(shù)函數(shù)MySQL中常用的對(duì)數(shù)函數(shù)有l(wèi)og(x)函數(shù)(計(jì)算x的自然對(duì)數(shù))以及l(fā)og10(x)函數(shù)(計(jì)算以10為底的對(duì)數(shù))。

6.3.1數(shù)學(xué)函數(shù)2.指數(shù)函數(shù)及對(duì)數(shù)函數(shù)6.3.1數(shù)學(xué)函數(shù)3.求近似值函數(shù)MySQL提供的round(x)函數(shù)負(fù)責(zé)計(jì)算離x最近的整數(shù),round(x,y)函數(shù)負(fù)責(zé)計(jì)算離x最近的小數(shù)(小數(shù)點(diǎn)后保留y位);truncate(x,y)函數(shù)負(fù)責(zé)返回小數(shù)點(diǎn)后保留y位的x(舍棄多余小數(shù)位,不進(jìn)行四舍五入);6.3.1數(shù)學(xué)函數(shù)3.求近似值函數(shù)6.3.1數(shù)學(xué)函數(shù)3.求近似值函數(shù)format(x,y)函數(shù)負(fù)責(zé)返回小數(shù)點(diǎn)后保留y位的x(進(jìn)行四舍五入);ceil(x)函數(shù)負(fù)責(zé)返回大于等于x的最小整數(shù);floor(x)函數(shù)負(fù)責(zé)返回小于等于x的最大整數(shù)。

6.3.1數(shù)學(xué)函數(shù)3.求近似值函數(shù)6.3.1數(shù)學(xué)函數(shù)4.隨機(jī)函數(shù)MySQL提供了rand()函數(shù)負(fù)責(zé)返回隨機(jī)數(shù)。

6.3.1數(shù)學(xué)函數(shù)4.隨機(jī)函數(shù)6.3.1數(shù)學(xué)函數(shù)5.二進(jìn)制、十六進(jìn)制函數(shù)bin(x)函數(shù)、oct(x)函數(shù)和hex(x)函數(shù)分別返回x的二進(jìn)制、八進(jìn)制和十六進(jìn)制數(shù);ascii(c)函數(shù)返回字符c的ASCII碼(ASCII碼介于0~255);char(c1,c2,c3,…)函數(shù)將c1、c2……的ASCII碼轉(zhuǎn)換為字符,然后返回這些字符組成的字符串;conv(x,code1,code2)函數(shù)將code1進(jìn)制的x變?yōu)閏ode2進(jìn)制數(shù)。6.3.1數(shù)學(xué)函數(shù)5.二進(jìn)制、十六進(jìn)制函數(shù)6.3.1數(shù)學(xué)函數(shù)為便于學(xué)習(xí),可以將字符串函數(shù)歸納為字符串基本信息函數(shù)、加密函數(shù)、字符串連接函數(shù)、修剪函數(shù)、子字符串操作函數(shù)、字符串復(fù)制函數(shù)、字符串比較函數(shù)以及字符串逆序函數(shù)等。6.3.2字符串函數(shù)為便于學(xué)習(xí),可以將字符串函數(shù)歸納為字符串基本信息函數(shù)、加密函注意:字符串函數(shù)在對(duì)字符串操作時(shí),字符集、字符序的設(shè)置至關(guān)重要。同一個(gè)字符串函數(shù),對(duì)同一個(gè)字符串進(jìn)行操作,如果字符集或者字符序設(shè)置不同,操作結(jié)果可能不同。6.3.2字符串函數(shù)注意:字符串函數(shù)在對(duì)字符串操作時(shí),字符集、字符序的設(shè)置至關(guān)重1.字符串基本信息函數(shù)字符串基本信息函數(shù)包括獲取字符串字符集的函數(shù)、獲取字符串長(zhǎng)度以及獲取字符串占用字節(jié)數(shù)的函數(shù)等。(1)關(guān)于字符串字符集的函數(shù)charset(x)函數(shù)返回x的字符集;collation(x)函數(shù)返回x的字符序。6.3.2字符串函數(shù)1.字符串基本信息函數(shù)6.3.2字符串函數(shù)1.字符串基本信息函數(shù)(1)關(guān)于字符串字符集的函數(shù)convert(xusingcharset)函數(shù)返回x的charset字符集數(shù)據(jù)(注意x的字符集沒有變化)。6.3.2字符串函數(shù)1.字符串基本信息函數(shù)6.3.2字符串函數(shù)1.字符串基本信息函數(shù)(2)獲取字符串長(zhǎng)度以及獲取字符串占用字節(jié)數(shù)函數(shù)char_length(x)函數(shù)用于獲取字符串x的長(zhǎng)度;length(x)函數(shù)用于獲取字符串x的占用的字節(jié)數(shù)。6.3.2字符串函數(shù)1.字符串基本信息函數(shù)6.3.2字符串函數(shù)2.加密函數(shù)加密函數(shù)包括不可逆加密函數(shù)以及加密-解密函數(shù)。(1)不可逆加密函數(shù)password(x)函數(shù)用于對(duì)x進(jìn)行加密,默認(rèn)返回41位的加密字符串;md5(x)函數(shù)用于對(duì)x進(jìn)行加密,默認(rèn)返回32位的加密字符串。6.3.2字符串函數(shù)2.加密函數(shù)6.3.2字符串函數(shù)2.加密函數(shù)(2)加密-解密函數(shù)MySQL提供了兩對(duì)加密-解密函數(shù)分別是:encode(x,key)函數(shù)與decode(password,key)函數(shù)以及aes_encrypt(x,key)函數(shù)與aes_decrypt(password,key)函數(shù)。其中key為加密密鑰(注意讀作mìyuè),需要牢記加密時(shí)的密鑰才能實(shí)現(xiàn)密碼的解密。6.3.2字符串函數(shù)2.加密函數(shù)6.3.2字符串函數(shù)2.加密函數(shù)(2)加密-解密函數(shù)encode(x,key)函數(shù)使用密鑰key對(duì)x進(jìn)行加密,默認(rèn)返回值是一個(gè)二進(jìn)制數(shù)(二進(jìn)制的位數(shù)由x的字節(jié)長(zhǎng)度決定);decode(password,key)函數(shù)使用密鑰key對(duì)密碼password進(jìn)行解密。6.3.2字符串函數(shù)2.加密函數(shù)6.3.2字符串函數(shù)2.加密函數(shù)(2)加密-解密函數(shù)aes_encrypt(x,key)函數(shù)使用密鑰key對(duì)x進(jìn)行加密,默認(rèn)返回值是一個(gè)128位的二進(jìn)制數(shù);aes_decrypt(password,key)函數(shù)使用密鑰key對(duì)密碼password進(jìn)行解密。6.3.2字符串函數(shù)2.加密函數(shù)6.3.2字符串函數(shù)3.字符串連接函數(shù)concat(x1,x2,….)函數(shù)用于將x1、x2等若干個(gè)字符串連接成一個(gè)新字符串;concat_ws(x,x1,x2,….)函數(shù)使用x將x1、x2等若干個(gè)字符串連接成一個(gè)新字符串。6.3.2字符串函數(shù)3.字符串連接函數(shù)6.3.2字符串函數(shù)4.修剪函數(shù)修剪函數(shù)包括字符串裁剪函數(shù)、字符串大小寫轉(zhuǎn)換函數(shù)、填充字符串函數(shù)等函數(shù)。(1)字符串裁剪函數(shù)ltrim(x)函數(shù)用于去掉字符串x開頭的所有空格字符;rtrim(x)函數(shù)用于去掉字符串x結(jié)尾的所有空格字符;trim(x)函數(shù)用于去掉字符串x開頭以及結(jié)尾的所有空格字符。6.3.2字符串函數(shù)4.修剪函數(shù)6.3.2字符串函數(shù)4.修剪函數(shù)(1)字符串裁剪函數(shù)trim([leading|both|trailing]x1fromx2)函數(shù)用于從x2字符串的前綴或者(以及)后綴中去掉字符串x1。6.3.2字符串函數(shù)4.修剪函數(shù)6.3.2字符串函數(shù)4.修剪函數(shù)(1)字符串裁剪函數(shù)left(x,n)函數(shù)以及righ(x,n)函數(shù)也用于截取字符串。其中l(wèi)eft(x,n)函數(shù)返回字符串x的前n個(gè)字符;right(x,n)函數(shù)返回字符串x的后n個(gè)字符。6.3.2字符串函數(shù)4.修剪函數(shù)6.3.2字符串函數(shù)4.修剪函數(shù)(2)字符串大小寫轉(zhuǎn)換函數(shù)upper(x)函數(shù)以及ucase(x)函數(shù)將字符串x中的所有字母變成大寫字母,字符串x并沒有發(fā)生變化;lower(x)函數(shù)以及l(fā)case(x)函數(shù)將字符串x中的所有字母變成小寫字母,字符串x并沒有發(fā)生變化。6.3.2字符串函數(shù)4.修剪函數(shù)6.3.2字符串函數(shù)4.修剪函數(shù)(3)填充字符串函數(shù)lpad(x1,len,x2)函數(shù)將字符串x2填充到x1的開始處,使字符串x1的長(zhǎng)度達(dá)到len;rpad(x1,len,x2)函數(shù)將字符串x2填充到x1的結(jié)尾處,使字符串x1的長(zhǎng)度達(dá)到len。6.3.2字符串函數(shù)4.修剪函數(shù)6.3.2字符串函數(shù)5.子字符串操作函數(shù)子字符串操作函數(shù)包括取出指定位置的子字符串函數(shù)、在字符串中查找指定子字符串的位置函數(shù)、子字符串替換函數(shù)等。

(1)取出指定位置的子字符串函數(shù)substring(x,start,length)函數(shù)與mid(x,start,length)函數(shù)都是從字符串x的第n個(gè)位置開始獲取length長(zhǎng)度的字符串。6.3.2字符串函數(shù)5.子字符串操作函數(shù)6.3.2字符串函數(shù)5.子字符串操作函數(shù)(2)在字符串中查找指定子字符串的位置函數(shù)locate(x1,x2)函數(shù)、position(x1inx2)函數(shù)以及instr(x2,x1)函數(shù)都是用于從字符串x2中獲取x1的開始位置。find_in_set(x1,x2)函數(shù)也可以獲取字符串x2中x1的開始位置(第幾個(gè)逗號(hào)處的位置),不過該函數(shù)要求s2是一個(gè)用英文的逗號(hào)分隔的字符串。6.3.2字符串函數(shù)5.子字符串操作函數(shù)6.3.2字符串函數(shù)5.子字符串操作函數(shù)(3)子字符串替換函數(shù)MySQL提供了兩個(gè)子字符串替換函數(shù)insert(x1,start,length,x2)和replace(x1,x2,x3)。insert(x1,start,length,x2)函數(shù)將字符串x1中從start位置開始、長(zhǎng)度為length的子字符串替換為x2。replace(x1,x2,x3)函數(shù)用字符串x3替換x1中所有出現(xiàn)的字符串x2,最后返回替換后的字符串。6.3.2字符串函數(shù)5.子字符串操作函數(shù)6.3.2字符串函數(shù)6.字符串復(fù)制函數(shù)字符串復(fù)制函數(shù)包括repeat(x,n)函數(shù)以及space(n)函數(shù)。其中repeat(x,n)函數(shù)產(chǎn)生一個(gè)新字符串,該字符串的內(nèi)容是字符串x的n次復(fù)制;space(n)函數(shù)產(chǎn)生一個(gè)新字符串,該字符串的內(nèi)容是空格字符的n次復(fù)制。6.3.2字符串函數(shù)6.字符串復(fù)制函數(shù)6.3.2字符串函數(shù)7.字符串比較函數(shù)strcmp(x1,x2)函數(shù)用于比較兩個(gè)字符串x1和x2,如果x1>x2函數(shù)返回值為1;如果x1=x2函數(shù)返回值為0;如果x1<x2函數(shù)返回值為-1。6.3.2字符串函數(shù)7.字符串比較函數(shù)6.3.2字符串函數(shù)8.字符串逆序函數(shù)reverse(x)函數(shù)返回一個(gè)新字符串,該字符串為字符串x的逆序。6.3.2字符串函數(shù)8.字符串逆序函數(shù)6.3.2字符串函數(shù)最為常用的數(shù)據(jù)類型轉(zhuǎn)換函數(shù)是convert(x,type)與cast(xastype)函數(shù),另外MySQL還提供了“十六進(jìn)制字符串”轉(zhuǎn)換為“十六進(jìn)制數(shù)”的函數(shù)unhex(x)。(1)convert()函數(shù)convert()函數(shù)有兩種用法格式:convert(xusingcharset)函數(shù)返回x的charset字符集數(shù)據(jù)(剛剛講過,這里不再贅述)。6.3.3數(shù)據(jù)類型轉(zhuǎn)換函數(shù)最為常用的數(shù)據(jù)類型轉(zhuǎn)換函數(shù)是convert(x,type)與convert()函數(shù)還有另外一種語法格式:convert(x,type),可以實(shí)現(xiàn)數(shù)據(jù)類型的轉(zhuǎn)換。convert(x,type)函數(shù)以type數(shù)據(jù)類型返回x數(shù)據(jù)(注意x的數(shù)據(jù)類型沒有變化)。除此以外cast(xastype)函數(shù)也實(shí)現(xiàn)了convert(x,type)函數(shù)相同的功能。6.3.3數(shù)據(jù)類型轉(zhuǎn)換函數(shù)convert()函數(shù)還有另外一種語法格式:convert((2)unhex(x)函數(shù)負(fù)責(zé)將十六進(jìn)制字符串x轉(zhuǎn)換為十六進(jìn)制的數(shù)值。6.3.3數(shù)據(jù)類型轉(zhuǎn)換函數(shù)(2)unhex(x)函數(shù)負(fù)責(zé)將十六進(jìn)制字符串x轉(zhuǎn)換為十六進(jìn)條件控制函數(shù)的功能是根據(jù)條件表達(dá)式的值返回不同的值,MySQL中常用的條件控制函數(shù)有if()、ifnull()以及case函數(shù)。與先前講解的if語句以及case語句不同,這些函數(shù)可以在MySQL客戶機(jī)中直接調(diào)用,可以像max()統(tǒng)計(jì)函數(shù)一樣直接融入到SQL語句中。6.3.4條件控制函數(shù)條件控制函數(shù)的功能是根據(jù)條件表達(dá)式的值返回不同的值,MySQ(1)if()函數(shù)if(condition,v1,v2)函數(shù)中condition為條件表達(dá)式,當(dāng)condition的值為true時(shí),函數(shù)返回v1的值,否則返回v2的值。6.3.4條件控制函數(shù)(1)if()函數(shù)6.3.4條件控制函數(shù)(2)ifnull()函數(shù)ifnull(v1,v2)函數(shù)中,如果v1的值為NULL,則該函數(shù)返回v2的值;如果v1的值不為NULL,則該函數(shù)返回v1的值。6.3.4條件控制函數(shù)(2)ifnull()函數(shù)6.3.4條件控制函數(shù)(3)case函數(shù)case函數(shù)的語法格式如下。如果表達(dá)式的值等于when語句中某個(gè)“值n”,則case函數(shù)返回值為“結(jié)果n”;如果與所有的“值n”都不相等,case函數(shù)返回值為“其他值”。case表達(dá)式when值1then結(jié)果1[when值2then結(jié)果2]…[else其他值]end6.3.4條件控制函數(shù)(3)case函數(shù)6.3.4條件控制函數(shù)1.關(guān)于MySQL服務(wù)實(shí)例的函數(shù)version()函數(shù)用于獲取當(dāng)前MySQL服務(wù)實(shí)例使用的MySQL版本號(hào),該函數(shù)的返回值與@@version靜態(tài)變量的值相同。6.3.5系統(tǒng)信息函數(shù)1.關(guān)于MySQL服務(wù)實(shí)例的函數(shù)6.3.5系統(tǒng)信息函數(shù)2.關(guān)于MySQL服務(wù)器連接的函數(shù)(1)有關(guān)MySQL服務(wù)器連接的函數(shù)connection_id()函數(shù)用于獲取當(dāng)前MySQL服務(wù)器的連接ID,該函數(shù)的返回值與@@pseudo_thread_id系統(tǒng)變量的值相同;database()函數(shù)與schema()函數(shù)用于獲取當(dāng)前操作的數(shù)據(jù)庫(kù)。6.3.5系統(tǒng)信息函數(shù)2.關(guān)于MySQL服務(wù)器連接的函數(shù)6.3.5系統(tǒng)信息函數(shù)2.關(guān)于MySQL服務(wù)器連接的函數(shù)(2)獲取數(shù)據(jù)庫(kù)用戶信息的函數(shù)user()函數(shù)用于獲取通過哪一臺(tái)登錄主機(jī)、使用什么賬戶名成功連接MySQL服務(wù)器,system_user()函數(shù)與session_user()函數(shù)是user()函數(shù)的別名。current_user()函數(shù)用于獲取該賬戶名允許通過哪些登錄主機(jī)連接MySQL服務(wù)器。6.3.5系統(tǒng)信息函數(shù)2.關(guān)于MySQL服務(wù)器連接的函數(shù)6.3.5系統(tǒng)信息函數(shù)1.獲取MySQL服務(wù)器當(dāng)前日期或時(shí)間函數(shù)(1)curdate()函數(shù)、current_date()函數(shù)用于獲取MySQL服務(wù)器當(dāng)前日期;curtime()函數(shù)、current_time()函數(shù)用于用于獲取MySQL服務(wù)器當(dāng)前時(shí)間;6.3.6日期和時(shí)間函數(shù)1.獲取MySQL服務(wù)器當(dāng)前日期或時(shí)間函數(shù)6.3.6日期和now()函數(shù)、current_timestamp()函數(shù)、localtime()函數(shù)以及sysdate()函數(shù)用于獲取MySQL服務(wù)器當(dāng)前日期和時(shí)間,這四個(gè)函數(shù)允許傳遞一個(gè)整數(shù)值(小于等于6)作為函數(shù)參數(shù),從而獲取更為精確的時(shí)間信息。6.3.6日期和時(shí)間函數(shù)now()函數(shù)、current_timestamp()函數(shù)、curdate()函數(shù)、current_date()函數(shù)、curtime()函數(shù)、current_time()函數(shù)、now()函數(shù)、current_timestamp()函數(shù)、localtime()函數(shù)以及sysdate()函數(shù)的返回值與時(shí)區(qū)的設(shè)置有關(guān)。6.3.6日期和時(shí)間函數(shù)curdate()函數(shù)、current_date()函數(shù)、c(2)獲取MySQL服務(wù)器當(dāng)前UNIX時(shí)間戳函數(shù)unix_timestamp()函數(shù)用于獲取MySQL服務(wù)器當(dāng)前UNIX時(shí)間戳。unix_timestamp(datetime)函數(shù)將日期時(shí)間datetime以UNIX時(shí)間戳返回,而from_unixtime(timestamp)函數(shù)可以將UNIX時(shí)間戳以日期時(shí)間格式返回。需要注意的是,這些函數(shù)的返回值與時(shí)區(qū)的設(shè)置有關(guān)。6.3.6日期和時(shí)間函數(shù)(2)獲取MySQL服務(wù)器當(dāng)前UNIX時(shí)間戳函數(shù)6.3.6(3)獲取MySQL服務(wù)器當(dāng)前UTC日期和時(shí)間函數(shù)utc_date()函數(shù)用于獲取UTC日期;utc_time()函數(shù)用于獲取UTC時(shí)間。UTC即世界標(biāo)準(zhǔn)時(shí)間,中國(guó)大陸、中國(guó)香港、中國(guó)澳門、中國(guó)臺(tái)灣、蒙古國(guó)、新加坡、馬來西亞、菲律賓、西澳大利亞州的時(shí)間與UTC的時(shí)差均為+8,也就是UTC+8。這些函數(shù)的返回值與時(shí)區(qū)的設(shè)置無關(guān)。6.3.6日期和時(shí)間函數(shù)(3)獲取MySQL服務(wù)器當(dāng)前UTC日期和時(shí)間函數(shù)6.3.62.獲取日期或時(shí)間的某一具體信息的函數(shù)(1)獲取年、月、日、時(shí)、分、秒、微秒等信息的函數(shù)year(x)函數(shù)、month(x)函數(shù)、dayofmonth(x)函數(shù)、hour(x)函數(shù)、minute(x)函數(shù)、second(x)函數(shù)以及microsecond(x)函數(shù)分別用于獲取日期時(shí)間x的年、月、日、時(shí)、分、秒、微秒等信息。6.3.6日期和時(shí)間函數(shù)2.獲取日期或時(shí)間的某一具體信息的函數(shù)6.3.6日期和時(shí)間另外MySQL還提供了extract(typefromx)函數(shù)用于獲取日期時(shí)間x的年、月、日、時(shí)、分、秒、微秒等信息,其中type可以分別指定為year、month、day、hour、minute、second、microsecond。6.3.6日期和時(shí)間函數(shù)另外MySQL還提供了extract(typefromx(2)獲取月份、星期等信息的函數(shù)monthname(x)函數(shù)用于獲取日期時(shí)間x的月份信息。dayname(x)函數(shù)與weekday(x)函數(shù)用于獲取日期時(shí)間x的星期信息;dayofweek(x)函數(shù)用于獲取日期時(shí)間x是本星期的第幾天(星期日為第一天,以此類推)。6.3.6日期和時(shí)間函數(shù)(2)獲取月份、星期等信息的函數(shù)6.3.6日期和時(shí)間函數(shù)(3)獲取年度信息的函數(shù)quarter(x)函數(shù)用于獲取日期時(shí)間x在本年是第幾季度;week(x)函數(shù)與weekofyear(x)函數(shù)用于獲取日期時(shí)間x在本年是第幾個(gè)星期;dayofyear(x)函數(shù)用于獲取日期時(shí)間x在本年是第幾天。6.3.6日期和時(shí)間函數(shù)(3)獲取年度信息的函數(shù)6.3.6日期和時(shí)間函數(shù)3.時(shí)間和秒數(shù)之間的轉(zhuǎn)換函數(shù)time_to_sec(x)函數(shù)用于獲取時(shí)間x在當(dāng)天的秒數(shù);sec_to_time(x)函數(shù)用于獲取當(dāng)天的秒數(shù)x對(duì)應(yīng)的時(shí)間。6.3.6日期和時(shí)間函數(shù)3.時(shí)間和秒數(shù)之間的轉(zhuǎn)換函數(shù)6.3.6日期和時(shí)間函數(shù)4.日期間隔、時(shí)間間隔函數(shù)(1)日期間隔函數(shù)to_days(x)函數(shù)用于計(jì)算日期x距離0000年1月1日的天數(shù);from_days(x)函數(shù)用于計(jì)算從0000年1月1日開始n天后的日期;6.3.6日期和時(shí)間函數(shù)4.日期間隔、時(shí)間間隔函數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論