




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
項目6用SQL編程操作
教學管理數(shù)據(jù)庫
主要內(nèi)容6.1創(chuàng)建存儲過程6.2在存儲過程中使用變量6.3使用流程控制語句6.4使用游標6.5使用觸發(fā)器6.6使用存儲函數(shù)
1
認識存儲過程存儲過程是數(shù)據(jù)庫的一個重要對象,它是數(shù)據(jù)庫系統(tǒng)中一組為了完成特定功能的SQL語句集。存儲過程只在創(chuàng)建時進行編譯,以后每次執(zhí)行存儲過程都不需要再重新編譯,因此執(zhí)行效率比較高。存儲過程
1
存儲過程的概念存儲過程與函數(shù)的相同點在于,它們的目的都是為了可重復地執(zhí)行數(shù)據(jù)庫SQL語句的集合,并且都是經(jīng)過一次編譯后,后面再次需要時直接執(zhí)行即可。存儲過程
(1)存儲過程在創(chuàng)建時沒有返回值,函數(shù)在定義時必須設置返回值。(2)存儲過程沒有返回值類型,且不能將結(jié)果直接賦值給變量;而函數(shù)定義時需要設置返回值類型,且在調(diào)用時必須將返回值賦給變量。(3)存儲過程可以通過輸出參數(shù)向調(diào)用過程返回多個值;函數(shù)只能通過調(diào)用返回一個值。(4)存儲過程必須通過CALL進行調(diào)用,不能使用SELECT調(diào)用;函數(shù)則可在SELECT語句中直接使用。存儲過程與函數(shù)的不同點2
創(chuàng)建和執(zhí)行存儲過程DELIMITER新結(jié)束符號CREATEPROCEDURE
過程名字([[IN|OUT|INOUT]參數(shù)名稱參數(shù)類型])BEGIN
過程體END新結(jié)束符號DELIMITER;存儲過程
2
創(chuàng)建和執(zhí)行存儲過程存儲過程設置參數(shù)時,在參數(shù)名前還可以指定參數(shù)的來源及用途,區(qū)別如下。IN:表示輸入?yún)?shù),即參數(shù)是在調(diào)用存儲過程時傳入到存儲過程里面使用,傳入的數(shù)據(jù)可以是直接數(shù)據(jù)(如5),也可以是保存數(shù)據(jù)的變量。OUT:表示輸出參數(shù),初始值為NULL,它是將存儲過程中的值保存到OUT指定的參數(shù)中,返回給調(diào)用者。INOUT:表示輸入輸出參數(shù),即參數(shù)在調(diào)用時傳入到存儲過程,同時在存儲過程中操作之后,又可將數(shù)據(jù)返回為調(diào)用者。存儲過程
2
創(chuàng)建和執(zhí)行存儲過程mysql>DELIMITER$$mysql>CREATEPROCEDUREproc(INsidCHAR(11))->BEGIN->SELECTsno,snameFROMstudentwheresno=sid;->END->$$QueryOK,0rowsaffected(0.00sec)mysql>DELIMITER;sid表示調(diào)用存儲過程時傳遞過來的參數(shù),該存儲過程的功能是查詢學號是sid參數(shù)值的學生信息。創(chuàng)建存儲過程與創(chuàng)建表的操作相同,都需要先選定數(shù)據(jù)庫。若默認沒有選擇數(shù)據(jù)庫,則程序會給出相關的提示信息。存儲過程
【例6.1】創(chuàng)建存儲過程,已知學生的學號,查詢學生的姓名。2
創(chuàng)建和執(zhí)行存儲過程②
查看所有符合要求的存儲過程①查看存儲過程的創(chuàng)建語句SHOWCREATEPROCEDURE過程名;SHOWPROCEDURESTATUS[LIKE匹配模式];存儲過程
2
創(chuàng)建和執(zhí)行存儲過程CALL
數(shù)據(jù)庫名.存儲過程名稱([實參列表]);實參列表傳遞的參數(shù)需要與創(chuàng)建存儲過程的形參相對應。當形參被指定為IN時,則實參值可以為變量或是直接數(shù)據(jù);當形參被指定為OUT或INOUT時,調(diào)用存儲過程傳遞的參數(shù)必須是一個變量,用于接收返回給調(diào)用者的數(shù)據(jù)。存儲過程
2
創(chuàng)建和執(zhí)行存儲過程存儲過程
【例6.2】調(diào)用存儲過程proc,獲取學號為輸入?yún)?shù)的學生信息mysql>CALLproc('20231012102');+-------------+-------+|sno|sname|+-------------+-------+|20231012102|張?zhí)m
|+-------------+-------+1rowinset(0.00sec)QueryOK,0rowsaffected(0.01sec)
主要內(nèi)容6.1創(chuàng)建和執(zhí)行存儲過程6.2在存儲過程中使用變量6.3使用流程控制語句6.4使用游標6.5使用觸發(fā)器6.6使用存儲函數(shù)
1
系統(tǒng)變量在存儲過程中使用變量
系統(tǒng)變量是MySQL系統(tǒng)內(nèi)部已經(jīng)提前定義好的變量,對所有MySQL客戶端都有效。系統(tǒng)變量又分為全局(GLOBAL)變量和會話(SESSION)變量。全局變量在MySQL啟動時由服務器自動將其初始化為默認值,這些默認值可以通過更改my.ini文件來更改。會話變量在每次建立一個新的連接時,由MySQL來初始化。MySQL會將當前所有全局變量的值復制一份,來作為會話變量。1
系統(tǒng)變量在存儲過程中使用變量
在MySQL中可以通過SHOW語句顯示所有的系統(tǒng)變量,其語法格式如下:
SHOW[GLOBAL|SESSION]VARIABLES[LIKE'匹配字符串'|WHERE表達式];showvariables;showglobalvariables;showsessionvariables;showvariableslike'%version%';
查看某個全局變量可以使用select語句實現(xiàn)。select@@session.default_storage_engine;--查看會話變量數(shù)據(jù)庫引擎系統(tǒng)變量可以通過SET語句進行修改。setglobalsort_buffer_size=40000;set@@global.sort_buffer_size=40000;2
用戶變量在存儲過程中使用變量
用戶變量指的是用戶自己定義的變量,它和連接有關,即用戶變量僅對當前用戶使用的客戶端生效,不能被其他客戶端看到和使用。用戶變量由符號“@”和變量名組成。不需要對其類型進行聲明,可以直接賦值,3種賦值方式:(1)使用SET語句完成賦值。語法格如下。SET變量名=表達式[,變量名=表達式]…;set@count=1;(2)在SELECT語句中使用賦值符號“:=”完成賦值。例如:select@user_variable:=@user_variable+1;select@n:=@n+1;(3)使用SELECT…INTO語句完成賦值。語法格式如下。SELECT列名[…]INTO變量名[…]查詢條件表達式;SELECTsnameinto@namefromstudentwheresno='2023101210';3局部變量在存儲過程中使用變量
局部變量是用戶定義在語句塊BEGIN…END之間的變量,在語句塊BEGIN…END之外,局部變量不能被獲取和修改。局部變量使用DECLARE語句定義,定義的基本語法格式如下:
DECLARE變量名1[,變量名2]…數(shù)據(jù)類型
[DEFAULT默認值];上述語法中,DEFAULT用于給變量提供一個默認值,如果沒有DEFAULT子句,變量的初始值為NULL。局部變量也可以使用SET賦值。局部變量可以通過SELECT…INTO語句查詢指定字段值為變量賦值。DECLAREc_creditint;DECLAREc_cnoCHAR(6);SELECTcno,creditINTOc_cno,c_creditFROMcourseWHEREcname='軟件工程';
主要內(nèi)容6.1存儲過程6.2在存儲過程中使用變量6.3使用流程控制語句6.4使用游標6.5使用觸發(fā)器6.6使用存儲函數(shù)
1
分支結(jié)構(gòu)使用流程控制語句
MySQL中分支結(jié)構(gòu)的流程控制語句有IF語句和CASE語句。1.IF語句IF條件表達式1THEN
語句列表
[ELSEIF條件表達式2THEN語句列表]...[ELSE語句列表]ENDIF
例如:IFvalISNULLTHENSELECT'valisNULL';ELSESELECT'valisnotNULL';ENDIF;1
分支結(jié)構(gòu)使用流程控制語句
2.CASE語句CASE
條件表達式
WHEN
表達式1THEN語句列表
[WHEN表達式2THEN語句列表]...[ELSE語句列表]ENDCASE
DELIMITER$$CREATEPROCEDUREProc_sex(INstrCHAR(4),OUTsexCHAR(4))BEGINCASEstrWHEN'M'THENSETsex='男';WHEN'F'THENSETsex='女';ELSESETsex='無';ENDCASE;END$$DELIMITER;例:1
分支結(jié)構(gòu)使用流程控制語句
CASE語句的第2種格式如下:CASE
WHEN條件表達式1THEN
語句列表[WHEN條件表達式2THEN語句列表][ELSE語句列表]ENDCASE;CASEWHENstr='M'THENSETsex='男';WHENstr='F'THENSETsex='女';ELSESETsex='無';ENDCASE;例:1
分支結(jié)構(gòu)使用流程控制語句
CASE語句的第3種格式:SELECTsno,cno,(CASEWHENgrade<60THEN'不及格'WHENgrade<80THEN'一般'WHENgrade<90THEN'良好'ELSE'優(yōu)秀'END)ASgradeLevelFROMscore;2
循環(huán)結(jié)構(gòu)使用流程控制語句
MySQL提供的循環(huán)語句有LOOP、REPEAT和WHILE3種,除此之外還有跳轉(zhuǎn)語句。1.LOOP語句LOOP語句通常用于實現(xiàn)一個簡單的循環(huán),其基本語法格式如下。[標簽:]LOOP語句列表ENDLOOP[標簽];退出循環(huán)時通常伴隨著一個
LEAVE
語句。2
循環(huán)結(jié)構(gòu)使用流程控制語句
DROPPROCEDUREIFEXISTSproc_sum;CREATEPROCEDUREproc_sum()BEGINDECLAREidINTDEFAULT0;#局部變量add_loop:LOOPSETid=id+1;IFid>=10THENLEAVEadd_loop;ENDIF;ENDLOOPadd_loop;SELECTid;END;調(diào)用上面的存儲過程例:mysql>callproc_sum();+------+|id|+------+|10|+------+1rowinset(0.00sec)2
循環(huán)結(jié)構(gòu)使用流程控制語句
2.REPEAT語句REPEAT語句用于創(chuàng)建一個帶有條件判斷的循環(huán)過程,每次語句執(zhí)行完畢,會對條件表達式進行判斷,如果表達式為真,則循環(huán)結(jié)束;否則重復執(zhí)行循環(huán)中的語句。REPEAT語句的基本語法格式如下:[標簽:]REPEAT
語句列表UNTIL條件表達式ENDREPEAT[標簽]2
循環(huán)結(jié)構(gòu)使用流程控制語句
DROPPROCEDUREIFEXISTSproc_sum_loop;CREATEPROCEDUREproc_sum_loop()BEGINDECLAREidINTDEFAULT0;REPEATSETid=id+1;UNTILid>=10ENDREPEAT;SELECTid;END;調(diào)用上面的存儲過程:mysql>callproc_sum_loop();+------+|id|+------+|10|+------+1rowinset(0.00sec)例:2
循環(huán)結(jié)構(gòu)使用流程控制語句
3.WHILE語句WHILE語句用于創(chuàng)建一個帶條件判斷的循環(huán)過程,與REPEAT不同的是,WHILE語句在執(zhí)行時,先對指定的表達式進行判斷,如果為真,則執(zhí)行循環(huán)內(nèi)的語句,否則退出循環(huán)。[標簽:]WHILE
條件表達式
DO
語句列表ENDWHILE[標簽]2
循環(huán)結(jié)構(gòu)使用流程控制語句
【例】使用while循環(huán)求1到100的和。
DROPPROCEDUREIFEXISTSproc_sum_while;CREATEPROCEDUREproc_sum_while()BEGINSET@i=1,@sum=0;WHILE@i<=100DOSET@sum=@sum+@i;SET@i=@i+1;ENDWHILE;SELECT@sum;END;調(diào)用上面的存儲過程:mysql>callproc_sum_while();+------+|@sum|+------+|5050|+------+1rowinset(0.01sec)2
循環(huán)結(jié)構(gòu)使用流程控制語句
4.跳轉(zhuǎn)語句跳轉(zhuǎn)語句用于實現(xiàn)執(zhí)行過程中的流程跳轉(zhuǎn),跳轉(zhuǎn)語句的基本語法格式如下。
{ITERATE|LEAVE}
標簽名;在上述語法中,ITERATE語句用于結(jié)束本次循環(huán)的執(zhí)行,開始下一輪循環(huán)的執(zhí)行操作,重新開始循環(huán);而
LEAVE語句用于終止當前循環(huán),跳出循環(huán)體。2
循環(huán)結(jié)構(gòu)使用流程控制語句
#LEAVE和ITERATE語句的區(qū)別及使用DROPPROCEDUREIFEXISTSproc_jump;CREATEPROCEDUREproc_jump()BEGINDECLAREnumINTDEFAULT0;my_loop:LOOPSETnum=num+2;IFnum<11THENITERATEmy_loop;#滿足IF條件跳轉(zhuǎn)到my_loop標簽位置執(zhí)行代碼
ELSESELECTnum;LEAVEmy_loop;#LEAVE結(jié)束整個循環(huán)
ENDIF;ENDLOOPmy_loop;END;調(diào)用上面的存儲過程:例:mysql>callproc_jump;+------+|num|+------+|12|+------+1rowinset(0.00sec)3
錯誤處理使用流程控制語句
程序在運行過程中可能會發(fā)生錯誤,發(fā)生錯誤時,默認情況下,MySQL將自動終止程序的執(zhí)行。有些時候,如果不希望程序因為錯誤而停止執(zhí)行,可以通過MySQL中的錯誤處理機制自定義錯誤名稱和錯誤處理程序,讓程序遇到警告或錯誤時也能繼續(xù)執(zhí)行,從而增強程序處理問題的能力。1.自定義錯誤類型在MySQL中可以使用DECLARE語句為錯誤聲明一個名稱,聲明的基本語法格式如下:DECLARE錯誤名稱
CONDITIONFOR錯誤類型;3
錯誤處理使用流程控制語句
【例】定義重復主鍵值錯誤,錯誤名稱為duplicate_entry,具體代碼如下。
DELIMITER&&CREATEPROCEDUREproc_err()BEGINDECLAREduplicate_entryCONDITIONFORSQLSTATE'23000';END&&DELIMITER;或者DECLAREduplicate_entryCONDITIONFOR10623
錯誤處理使用流程控制語句
2.如何處理錯誤
程序出現(xiàn)異常時默認會停止繼續(xù)執(zhí)行,MySQL中允許自定義錯誤處理程序,在程序出現(xiàn)錯誤時,可以交由自定義的錯誤處理程序處理,避免直接中斷程序的運行。DECLARE錯誤處理方式
HANDLERFOR
錯誤類型[,錯誤類型...]程序語句段自定義錯誤處理程序的基本語法格式如下:
錯誤處理方式有CONTINUE和EXIT,其中CONTINUE表示遇到錯誤不進行處理,繼續(xù)向下執(zhí)行;EXIT表示遇到錯誤后馬上退出。程序語句段表示在遇到定義的錯誤時,需要執(zhí)行的一些存儲過程或函數(shù)。3
錯誤處理使用流程控制語句
【例】演示對于重復主鍵值錯誤的處理方式DELIMITER&&CREATEPROCEDUREproc_handler_err()
BEGIN
DECLARECONTINUEHANDLERFORSQLSTATE'23000'
SET@num=1;
insertintostudentVALUES('20231012101','李萍','女','2005-9-9','計算機應用');
SET@num=2;
insertintostudentVALUES('20231012101','李萍','女','2005-9-9','計算機應用');
SET@num=3;
END&&
主要內(nèi)容6.1存儲過程6.2在存儲過程中使用變量6.3使用流程控制語句6.4使用游標6.5使用觸發(fā)器6.6使用存儲函數(shù)
1
游標的作用使用游標
游標(cursor)是一種對SELECT語句結(jié)果集進行訪問的機制,它主要用于交互式的應用程序,用戶可以根據(jù)需要瀏覽或修改結(jié)果集中的數(shù)據(jù)。
游標主要包括游標結(jié)果集和游標位置兩部分,結(jié)果集是定義游標的SELECT語句返回的行的集合,位置則是指向這個結(jié)果集中的某一行的指針。利用游標可以靈活地提取結(jié)果集中的數(shù)據(jù)。
在存儲過程中經(jīng)常使用SELECT…INTO語句將查詢結(jié)果存放到變量中,但是要求返回的記錄必須是一行,而多數(shù)查詢語句可能會返回多行記錄,如果要處理多行記錄,就需要使用游標。2
游標的使用使用游標
使用游標需要4個步驟:聲明游標、打開游標、使用游標提取數(shù)據(jù)和關閉游標1.聲明游標DECLARE
游標名稱CURSORFORSELECT
語句具體語法格式:2.打開游標具體語法格式:OPEN游標名稱;3.使用游標提取數(shù)據(jù)FETCH游標名稱INTO變量名[,變量名,…];具體語法格式:4.關閉游標具體語法格式:CLOSE游標名稱;2
游標的使用使用游標
3.使用游標提取數(shù)據(jù)FETCH游標名稱INTO變量名[,變量名,…];具體語法格式:
如果要獲取多行數(shù)據(jù),需要利用循環(huán)語句實現(xiàn),一般使用loop和while循環(huán)語句與FETCH語句配合,實現(xiàn)整個結(jié)果集的遍歷。使用FETCH語句從游標中提取出最后一條記錄后,再次執(zhí)行FETCH語句,將產(chǎn)生“ERROR1329(02000):NodatatoFETCH”錯誤信息。因此,在使用游標時通常使用“DECLEAR…HANDLER”處理該錯誤,從而結(jié)束游標的循環(huán)遍歷。2
游標的使用使用游標
【例】利用游標訪問查詢結(jié)果集。CREATEPROCEDUREproc_cursor()BEGINDECLAREv_cnameVARCHAR(20)DEFAULT'';DECLAREv_creditintDEFAULT0;DECLAREcourse_cursorCURSORFORSELECTcname,creditfromcourse;#定義錯誤處理程序
DECLARECONTINUEHANDLERfornotfoundset@mark=1;SET@mark=0;OPENcourse_cursor;FETCHcourse_cursorINTOv_cname,v_credit;WHILE@mark=0DOSELECTv_cname,v_credit;FETCHcourse_cursorINTOv_cname,v_credit;ENDWHILE;CLOSEcourse_cursor;select@mark;END
主要內(nèi)容6.1存儲過程6.2在存儲過程中使用變量6.3使用流程控制語句6.4使用游標6.5使用觸發(fā)器6.6使用存儲函數(shù)
1
認識觸發(fā)器使用觸發(fā)器
觸發(fā)器(Trigger)可以被視為一種特殊的存儲過程,它與存儲過程的區(qū)別在于,存儲過程使用CALL語句調(diào)用時才會執(zhí)行,而觸發(fā)器會在預先定義好的事件(如INSERT、DELETE等操作)發(fā)生時自動調(diào)用。
創(chuàng)建觸發(fā)器時需要與數(shù)據(jù)表相關聯(lián),當表發(fā)生特定事件(如INSERT、DELETE等操作)時,就會自動執(zhí)行觸發(fā)器中預定好的SQL代碼,實現(xiàn)插入或刪除數(shù)據(jù)前,強制檢驗或轉(zhuǎn)換數(shù)據(jù)等操作,或是在觸發(fā)器中代碼執(zhí)行出錯后,撤銷已執(zhí)行成功的操作,以保證數(shù)據(jù)的安全。1
認識觸發(fā)器使用觸發(fā)器
1.觸發(fā)器的優(yōu)點(1)觸發(fā)器自動執(zhí)行,可以通過數(shù)據(jù)庫中的相關表實現(xiàn)級聯(lián)無痕更改操作。(2)觸發(fā)器可以強制限制,這些限制比用check約束所定義的更復雜,以此保證數(shù)據(jù)安全,進行安全校驗。2.觸發(fā)器的缺點(1)觸發(fā)器的使用會影響數(shù)據(jù)庫的結(jié)果,同時增加了維護的復雜程度。(2)觸發(fā)器的無痕操作會造成數(shù)據(jù)在程序(如PHP、Java)層面不可控。2
創(chuàng)建和使用觸發(fā)器使用觸發(fā)器
1.創(chuàng)建觸發(fā)器創(chuàng)建觸發(fā)器的基本語法:CREATETRIGGER
觸發(fā)器名稱觸發(fā)時機觸發(fā)事件
ON表名
FOREACHROW
BEGIN操作的內(nèi)容END
FOREACHROW表示表中任何一條記錄上的操作滿足觸發(fā)事件都會觸發(fā)該觸發(fā)器。使用new關鍵字獲取插入或更新時產(chǎn)生的新值使用old關鍵字獲取刪除或更新以前的值2
創(chuàng)建和使用觸發(fā)器使用觸發(fā)器
【例】每年新生入學,在向?qū)W生表student中添加一條記錄時,出于安全性考慮,也要在相應的日志表中進行記錄,這個日志表定義為Instlog(Insttime,Instuser,Instsno)。#在student表中添加一條記錄時,在insertlog表中就會自動生成一條記錄CREATETRIGGERtr_student_insertAFTERINSERTONstudentFOREACHROWBEGININSERTinsertlog(insttime,instuser,instsno)VALUES(curdate(),user(),new.sno);END2
創(chuàng)建和使用觸發(fā)器使用觸發(fā)器
2.查看觸發(fā)器mysql>SHOWTRIGGERS\G;mysql>SELECT*FROMinformation_schema.triggersWHEREtrigger_name='tr_student_insert'\G;語法格式如下:DROPTRIGGER[IFEXISTS][數(shù)據(jù)庫名.]觸發(fā)器名;3.刪除觸發(fā)器2
創(chuàng)建和使用觸發(fā)器使用觸發(fā)器
4.使用Navicat操作觸發(fā)器
主要內(nèi)容6.1存儲過程6.2在存儲過程中使用變量6.3使用流程控制語句6.4使用游標6.5使用觸發(fā)器6.6使用存儲函數(shù)
1MySQL內(nèi)部函數(shù)使用存儲函數(shù)
1.數(shù)學函數(shù)函數(shù)名稱功能描述ABS(x)返回表達式x的絕對值CEILING(x)返回大于或等于表達式x的最小整數(shù)COS(x)返回x弧度的余弦值EXP(x)返回e的x指數(shù)的值FLOOR(x)返回小于或等于表達式x的最大整數(shù)GREATEST(x1,x2,...)返回一組數(shù)中的最大值LEAST(x1,x2,...)返回一組數(shù)中的最小值LOG(x)返回表達式x的自然對數(shù)LOG10(x)返回表達式x的以10為底的對數(shù)PI常量,圓周率POW(x,y)返回x的y次方的值RADIANS(x)將x角度轉(zhuǎn)為弧度值RAND()返回0~1之間的隨機float數(shù)ROUND(x[,n])四舍五入,對數(shù)值表達式x進行四舍五入,保留n位小數(shù)位數(shù)SIN(x)正弦函數(shù),返回x弧度的正弦值SQRT(x)返回表達式x的平方根1MySQL內(nèi)部函數(shù)使用存儲函數(shù)
2.字符串函數(shù)函數(shù)名稱功能描述CHAR_LENGTH(str)計算字符串字符數(shù),返回字符串str中字符的個數(shù)CONCAT(str1,str2,...)合并字符串,返回由多個字符串連接后的字符串LEFT(str,n)返回從字符串左邊開始的n個字符LENGTH(str)返回字符串str的字節(jié)長度LOWER(str)將大寫字符轉(zhuǎn)換為小寫字符LTRIM(str)刪除前導空格REPLACE(str,str1,str2)替換函數(shù),用str2替換str中的str1REPEAT(str,n)將字符串str重復連接n次,返回連接生成的字符串REVERSE(str)返回字符串str的反轉(zhuǎn)RIGHT(str,n)返回從字符串右邊開始的n個字符RTRIM(str)刪除尾隨空格SPACE(n)返回由n個空格組成的字符串SUBSTRING(str,n,len)獲取子字符串,從位置n開始len長度的子字符串UPPER(str)將小寫字符轉(zhuǎn)換為大寫字符1MySQL內(nèi)部函數(shù)使用存儲函數(shù)
3.日期和時間函數(shù)(1)函數(shù)名稱功能描述CURDATE()獲取當前系統(tǒng)的日期CURTIME()獲取當前系統(tǒng)的時間DATE_ADD(date,INTERVALnunit)對當前日期和時間進行加法運算,加上n個單位時間DATE_SUB(date,INTERVALnunit)對當前日期和時間進行減法運算,減去n個單位時間DATE_FORMAT(date,format)用來格式化日期DAY(date)返回指定日期的日期整數(shù)DAYNAME(date)以英文名方式顯示,返回指定日期是星期幾,如Tuesday等DAYOFMONTH(date)返回指定日期在一個月中的序數(shù)1
MySQL內(nèi)部函數(shù)使用存儲函數(shù)
函數(shù)名稱功能描述DAYOFWEEK(date)返回指定日期在一個星期中的序數(shù)DAYOFYEAR(date)返回指定日期在一年中的序數(shù)HOUR(time)返回指定時間的小時數(shù)MINUTE(time)返回指定時間的分鐘數(shù)MONTH(date)返回指定日期的月份整數(shù)NOW()或SYSDATE()返回當前日期和時間QUARTER(date)返回指定日期的季度整數(shù)SECOND(time)返回指定時間的秒數(shù)TIME_FORMAT(time,format)用來格式化時間值TIME_TO_SEC(time)將時間轉(zhuǎn)換為秒數(shù)UCT_DATE輸出世界標準時間的日期UCT_TIME輸出世界標準時間YEAR(date)獲取指定日期的年份整數(shù)3.日期和時間函數(shù)(2)1
MySQL內(nèi)部函數(shù)使用存儲函數(shù)
4.數(shù)據(jù)類型轉(zhuǎn)換函數(shù)函數(shù)名稱功能描述CONVERT(x,type)以type類型返回xCONVERT(xUSING字符集)以指定字符集返回x數(shù)據(jù)CAST(xAStype)以type類型返回xUNHEX(x)將x轉(zhuǎn)為十六進制數(shù)字,然后再轉(zhuǎn)為由數(shù)字表示的字符1
MySQL內(nèi)部函數(shù)使用存儲函數(shù)
5.加密和散列函數(shù)函數(shù)名稱功能描述MD5()使用
MD5計算并返回一個32位的散列字符串AES_ENCRYPT()使用密鑰對字符串進行加密,默認返回一個128位的二進制數(shù)AES_DECRYPT()使用密鑰對密碼進行解密SHA1()或SHA()利用安全散列算法SHA-1計算字符串,返回40個十六進制數(shù)字組成的字符串SHA2()利用安全散列算法SHA-2計算字符串1
MySQL內(nèi)部函數(shù)使用存儲函數(shù)
6.JSON函數(shù)函數(shù)名稱功能描述JSON_ARRAY()將值轉(zhuǎn)換為JSON數(shù)組JSON_OBJECT()將鍵值對轉(zhuǎn)換為JSON對象JSON_CONTAINS()JSON字符串中是否包含指定的值JSON_EXTRACT()從JSON字符串中提取指定的值1
MySQL內(nèi)部函數(shù)使用存儲函數(shù)
7.其他常用函數(shù)函數(shù)名稱功能描述IF(x1,x2,x2)如果表達式x1成立,返回結(jié)果x2,否則返回結(jié)果x3IFNULL(x1,x2)如果
x1的值不為NULL,則返回x1,否則返回x2ISNULL(x)判斷表達式x是否為
NULLNULLIF(str1,str2)比較兩個字符串,如果字符串
str1與str2相等,返回
NULL,否則返回str1LAST_INSERT_ID()
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化工能力測試題及答案
- 氣焊工中級試題及答案
- 交通三控試題及答案
- 傅雷家書考試題及答案
- 2025年國家特種設備安全管理人員(A證)考試練習題庫(含答案)
- 醫(yī)養(yǎng)結(jié)合人才培訓班理論考試題(含答案)
- 醫(yī)療機構(gòu)消毒技術(shù)規(guī)范培訓試題及答案
- 2025心肺復蘇理論考試試題(含答案)
- 2025年安全知識競賽題庫及答案
- 2024年農(nóng)村農(nóng)業(yè)《果樹生產(chǎn)技術(shù)》知識試題與答案
- 《2025游戲賬號交易合同書》
- 2025年事業(yè)單位會計崗考試題庫
- 2025年秋季開學教師大會上教學副校長講話:回到課堂的原點走向教學的深處
- 2025事業(yè)單位招聘考試時事政治考試題庫及答案(考點梳理)
- 2025年少先隊知識競賽試題庫附答案
- GB/T 9775-2025紙面石膏板
- 防蚊培訓課件
- 彌漫性大B細胞淋巴瘤病例討論
- 2025年醫(yī)院血透室人員培訓工作計劃
- 2025年公務員考試時政熱點必做題(附答案)
- 護理燙傷不良事件分析及整改措施
評論
0/150
提交評論