日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

数据库系统原理(第5章:数据库编程)

發(fā)布時間:2023/12/13 windows 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库系统原理(第5章:数据库编程) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、存儲過程

概念:存儲過程是一組為了完成某項特定功能的SQL語句集, 其實質(zhì)就是一段存儲在數(shù)據(jù)庫中的代碼。 它可以由聲明式的sql語句和過程式sql語句組成。

特點:

  • 可增強SQL語言的功能和靈活性
  • 良好的封裝性
  • 高性能
  • 可減少網(wǎng)絡(luò)流量
  • 可作為一種安全機(jī)制來確保數(shù)據(jù)庫的安全性和數(shù)據(jù)的完整性

用戶定義的結(jié)束符(ELIMITER

  • ELIMITER $$:
  • 例句:將MySQL結(jié)束符修改為兩個感嘆號“!!”? (DELIMITER !!)

使用CREATE PROCEDURE語句創(chuàng)建存儲過程:CREATE PROCEDURE sp_name([proc_parameter[,…]]) routine_body ;

proc_paramete:指定存儲過程的參數(shù)列表

routine_body:存儲過程的主體部分,也稱為存儲過程體

[IN | OUT | INOUT] param_name type:參數(shù)?名,參數(shù)類型

例如:在mysql_test中創(chuàng)建一個存儲過程,用于實現(xiàn)給定表customers中一個客戶id號即可修改表customers中該客戶的性別為一個指定的性別

?

?

?

使用DECLARE語句聲明局部變量:DECLARE var_name[,…] type [DEFAULT value]

例如:聲明一個整型局部變量cid:? ?DECLARE cid INT(10);

使用DECLARE語句聲明局部變量的規(guī)范

  • 1)只能在存儲過程體的BEGIN…END語句塊中聲明;
  • 2)必須在存儲過程的開頭處聲明;
  • 3)作用范圍僅限于聲明它的BEGIN…END語句塊;
  • 4)不同于用戶變量

局部變量與用戶變量的區(qū)別:

  • 1)局部變量聲明時,在其前面沒有@符號,并且它只能 被聲明它的BEGIN…END語句塊中的語句所使用;
  • 2)用戶變量在聲明時,會在其名稱前面使用@符號,同 時已聲明的用戶變量存在于整個會話之中。

使用SET語句為局部變量賦值:SET var_name=expr[,var_name=expr]…? ? ? ? ? ? ? ??SET cid=910;

使用SELECT…INTO語句把選定列的值直接存儲到局部變量中

?

?

流程控制語句

  • 1、條件判斷語句 IF…THEN …ELSE語句 CASE語句? ?(IF 條件 THEN 表達(dá)式1 ELSE 表達(dá)式2 END IF;)
  • 2、循環(huán)語句 WHILE語句 REPEAT語句 LOOP語句

WHILE 條件 表達(dá)式 END WHILE

repeat 表達(dá)式 END repeat

loop 表達(dá)式 END loop

ITERATE語句 用于表示退出當(dāng)前循環(huán)

****************************游標(biāo)CURSOR*****************************************

使用DECLARE CURSOR語句創(chuàng)建游標(biāo)

?

?

?

使用OPEN語句打開游標(biāo):OPEN cursor_name

使用FETCH…INTO語句讀取數(shù)據(jù):

?

?

?

使用CLOSE語句關(guān)閉游標(biāo) :CLOSE cursor_name

**********************存儲過程的使用************************

使用CALL語句調(diào)用存儲過程

?

?

?調(diào)用數(shù)據(jù)庫mysql_test中的存儲過程sp_update_sex,將客戶id號為909的客戶性別修改為男性“M”

CALL sp_update_sex(909,’M’);

使用DROP PROCEDURE語句刪除存儲過程

DROP PROCEDURE[IF EXISTS] sp_name

二、存儲函數(shù)

存儲函數(shù)與存儲過程一樣,是由SQL語句和過程式語句組成的代碼片段

使用CREATE FUNCTION語句創(chuàng)建存儲函數(shù)

CREATE FUNCTION sp_name([func_parameter[,…]]) RETURNS type routine_body

  • sp_name:指定存儲函數(shù)的名稱
  • func_parameter:指定存儲函數(shù)的參數(shù)
  • RETURNS type :聲明存儲函數(shù)返回值的數(shù)據(jù)類型; type指定返回值的數(shù)據(jù)類型
  • ?routine_body 指定存儲函數(shù)的主體部分,也稱為存儲函數(shù)體

在數(shù)據(jù)庫mysql_test中創(chuàng)建 一個存儲函數(shù),要求該函數(shù)能根據(jù) 給定的客戶id號返回客戶的性別, 如果數(shù)據(jù)庫中沒有給定的客戶id號 ,則返回“沒有該客戶”。

Use mysql_test; DELIMITER $$ CREATE FUNCTION fn_search(cid INT) RETURNS CHAR(20) DETERMINISTIC BEGIN DECLARE SEX CHAR(20); SELECT cust_sex INTO SEX FROM customersWHERE cust_id=cid; IF SEX IS NULL THEN RETURN(SELECT’沒有該客戶’); ELSE IF SEX=‘F’ THEN RETURN(SELECT’女’);ELSE RETURN(SELECT ‘男’);END IF;END IF; END $$

?

?

?使用關(guān)鍵字SELECT調(diào)用存儲函數(shù):SELECT sp_name([func_parameter[, …]])

使用DROP FUNCTION語句刪除存儲函數(shù):DROP FUNCTION [IF EXISTS] sp_name

轉(zhuǎn)載于:https://www.cnblogs.com/jalja/p/11611440.html

總結(jié)

以上是生活随笔為你收集整理的数据库系统原理(第5章:数据库编程)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。