国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)庫系統(tǒng)原理及MySQL應(yīng)用教程實驗七存儲過程與函數(shù)的創(chuàng)建管理

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)庫系統(tǒng)原理及MySQL應(yīng)用教程實驗七存儲過程與函數(shù)的創(chuàng)建管理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

實驗7:存儲過程與函數(shù)的創(chuàng)建管理

一、實驗?zāi)康?/h3>

1. 理解存儲過程和函數(shù)的概念。

2. 掌握創(chuàng)建存儲過程和函數(shù)的方法。

3. 掌握執(zhí)行存儲過程和函數(shù)的方法。

4. 掌握游標(biāo)的定義、使用方法。

二、實驗內(nèi)容

1.驗證性實驗:某超市的食品管理的數(shù)據(jù)庫的Food表對其操作。

2.設(shè)計性試驗:學(xué)校教師管理數(shù)據(jù)庫中的teacherInfo表對其操作。

三、實驗步驟與實驗結(jié)果

(一)驗證性實驗

Food表的定義

字段名

字段描述

數(shù)據(jù)類型

主鍵

外鍵

非空

唯一

自增

foodid

食品編號

INT(4)

Name

食品名稱

VARCHAR(20)

Company

生產(chǎn)廠商

VARCHAR(30)

Price

價格(單位:元)

FLOAT

Product_time

生產(chǎn)年份

YEAR

Validity_time

保質(zhì)期(單位:年)

INT(4)

address

廠址

VARCHAR(50)

某超市的食品管理的數(shù)據(jù)庫的Food表,F(xiàn)ood表的定義如表所示,

1.創(chuàng)建food表:

CREATE TABLE  food(

foodid INT(4) NOT NULL  UNIQUE auto_increment PRIMARY KEY,

name VARCHAR(20) NOT NULL,

company VARCHAR(20) NOT NULL,

price FLOAT NOT NULL,

product_time YEAR,

validity_time INT(4),

address VARCHAR(50)

)ENGINE=InnoDBDEFAULTCHARSET=utf8;

?scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

2.向food插入數(shù)據(jù)

INSERT INTO food

VALUES

(1,'QQ餅干','QQ餅干廠',2.5,'2008',3,'北京'),

(2,'MN牛奶','MN牛奶廠',3.5,'2009',1,'河北'),

(3,'EE果凍','EE果凍廠',1.5,'2007',2,'北京'),

(4,'FF咖啡','FF咖啡廠',20,'2002',5,'天津'),

(5,'GG奶糖','GG奶糖',14,'2003',3,'廣東');

scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

3.在food表上創(chuàng)建名為Pfood_price_count的存儲過程。其中存儲過程Pfood_price_count有3個參數(shù)。輸入?yún)?shù)為price_infol和price_info2,輸出參數(shù)為count。存儲過程的滿足:查詢food表中食品單價高于price_infol且低于price_info2的食品種數(shù),然后由count參數(shù)來輸出,并且計算滿足條件的單價的總和。

代碼如下:

//使用“DELIMITER &&”將SQL語句的結(jié)束符號變成&&

DELIMITER &&

CREATE  PROCEDURE  Pfood_price_count (IN price_info1 FLOAT,IN price_info2 FLOAT, OUT count INT )

   READS SQL DATA

   BEGIN

//定義變量temp

DECLARE temp FLOAT;

//定義游標(biāo)match_price

DECLARE match_price CURSOR FOR SELECT price FROM food;

//定義條件處理。如果沒有遇到關(guān)閉游標(biāo),就退出存儲過程

DECLARE EXIT HANDLER FOR NOT FOUND CLOSE match_price;

//為臨時變量sum賦值

SET @sum=0;

//用SELECT … INTO 語句來為輸出變量count賦值

SELECT  COUNT(*)  INTO  count  FROM  food

    WHERE  price>price_info1 AND price<price_info2 ;

//打開游標(biāo)

OPEN match_price;

//執(zhí)行循環(huán)

REPEAT

//使用游標(biāo)match_price

   FETCH match_price INTO temp;

//執(zhí)行條件語句

       IF temp>price_info1 AND temp<price_info2

      THEN SET @sum=@sum+temp;

END IF;

//結(jié)束循環(huán)

UNTIL 0 END REPEAT;

//關(guān)閉游標(biāo)

CLOSE match_price;

   END &&

//將SQL語句的結(jié)束符號變成“;”

DELIMITER ;

scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

4.使用CALL語句來調(diào)用存儲過程。查詢價格在2至18之間的食品種數(shù)。代碼如下:

CALL Pfood_price_count(2,18,@count) ;

scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

5.使用SELECT語句查看結(jié)果。代碼如下:

SELECT @count,@sum;

其中,count是存儲過程的輸出結(jié)果:sum是存儲過程中的變量,sum中的值滿足足條件的單價的總和。

scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

6.使用DROP語句刪除存儲過程Pfood_price_count。代碼如下:

DROP PROCEDURE Pfood_price_count ;

scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

7.使用存儲函數(shù)來實現(xiàn)(1)的要求。存儲函數(shù)的代碼如下:

DELIMITER &&

CREATE  FUNCTION  Pfood_price_count1(price_info1 FLOAT,price_info2 FLOAT )

RETURNS INT READS SQL DATA

BEGIN

RETURN (SELECT  COUNT(*)  FROM  food

WHERE  price>price_info1 AND price<price_info2 );

END &&

DELIMITER ;

scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

8.調(diào)用存儲函數(shù)

SELECT Pfood_price_count1(2,18);

scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

9.刪除存儲函數(shù)

DROP FUNCTION Pfood_price_count1;

注:存儲函數(shù)只能返回一個值,所以只實現(xiàn)了計算滿足條件的食品種數(shù)。使用RETURN來將計算的食品種數(shù)返回回來。調(diào)用存儲函數(shù)與調(diào)用MySQL內(nèi)部函數(shù)的方式是一樣的。

scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

(二)設(shè)計性試驗

學(xué)校教師管理數(shù)據(jù)庫中的teacherInfo表,其表的定義如下表所示,請完成如下操作。

字段名

字段描述

數(shù)據(jù)類型

主鍵

外鍵

非空

唯一

自增

num

教工號

INT(10)

name

姓名

VARCHAR(20)

sex

性別

VARCHAR(4)

birthday

出生日期

DATETIME

address

家庭住址

VARCHAR(50)

1.創(chuàng)建teacherinfo表

CREATE TABLE  teacherinfo(

num INT(10) NOT NULL  UNIQUE PRIMARY KEY,

name VARCHAR(20) NOT NULL,

sex VARCHAR(4) NOT NULL,

birthday DATETIME,

address VARCHAR(50)

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

2.向teacherInfo表中插入記錄:

INSERT INTO teacherinfo

VALUES

(1001,'張龍','男','1984-11-08','北京市昌平區(qū)'),

(1002,'李梅','女','1970-01-21','北京市海淀區(qū)'),

(1003,'王一豐','男','1976-10-30','北京市昌平區(qū)'),

(1004,'趙六','男','1980-06-05','北京市順義區(qū)');

scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

3.創(chuàng)建名為teachernfo1的存儲過程。要求:存儲過程teachernfo1有3個參數(shù)。輸入?yún)?shù)為teacherid和type,輸出參數(shù)為info。滿足:根據(jù)編號(teacherid)來查詢teachernfo表中的記錄。如果type的值為1時,將姓名(name)傳給輸出參數(shù)info;如果type的值為2時,將年齡傳給輸出參數(shù)info;如果type為其他值,則返回字符串“Error”。

delimiter &&

create procedure teachernfo1(in teacherid int,in type int,out info varchar(20))

reads sql data

begin

case type

when 1 then

select name into info from teacherinfo where num=teacherid;

when 2 then

select year(now())-year(birthday) into info from teacher where num=teacherid;

else

select 'Error' into info;

end case;

end &&

delimiter ;

scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

4.調(diào)用存儲過程,參數(shù)值teacher id為2,type為1

USE student;

CALL teachernfo1(1001,1,@info);

scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

5.使用DROP PRODECURE語句來刪除存儲過程

DROP PROCEDURE teachernfo1

scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

6.創(chuàng)建名為teacherinfo2的存儲函數(shù)。要求:存儲過程teacherinfo2有兩個參數(shù):teacher id和type。滿足:根據(jù)編號(teacher id)來查詢teacher表中的記錄。如果type的值是1時,則返回姓名(name)值;如果type的值是2時,則返回年齡;如果type為其他值,則返回字符串“Error”。

delimiter &&

create function teacherinfo2(teacherid int,type int)

returns varchar(20) reads sql data

begin

declare temp varchar(20);

if type=1

then

select name into temp from teacherinfo where num=teacherid;

elseif type=2

then

select year(now())-year(birthday) into temp from teacherinfo where num=teacherid;

else

set temp='Error';

end if;

return temp;

end &&

delimiter ;

scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

7.使用SELECT語句調(diào)用teacherinfo2存儲函數(shù)

select teacherinfo2(1002,1);

scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

8.使用DROP FUNCTION語句來刪除teacherinfo2存儲函數(shù)。

drop function teacherinfo2;

scau實驗七存儲過程和函數(shù),數(shù)據(jù)庫實驗報告,數(shù)據(jù)庫,mysql,windows

四、觀察與思考

1.什么時候適合通過創(chuàng)建存儲過程來實現(xiàn)?

答:函數(shù)限制比較多,如不能用臨時表,只能用表變量等,而存儲過程的限制相對就比較少。

2.功能相同的存儲過程和存儲函數(shù)的不同點有哪些?

答: 存儲過程:可以使得對的管理、以及顯示關(guān)于及其用戶信息的工作容易得多。存儲過程是 SQL 語句和可選控制流語句的預(yù)編譯集合,以一個名稱存儲并作為一個單元處理。存儲過程存儲在數(shù)據(jù)庫內(nèi),可由應(yīng)用程序通過一個調(diào)用執(zhí)行,而且允許用戶聲明變量、有條件執(zhí)行以及其它強(qiáng)大的編程功能。存儲過程可包含程序流、邏輯以及對數(shù)據(jù)庫的查詢。它們可以接受參數(shù)、輸出參數(shù)、返回單個或多個結(jié)果集以及返回值。

3.使用游標(biāo)對于數(shù)據(jù)檢索的好處有哪些?

答:游標(biāo)提供了一種對從表中檢索出的數(shù)據(jù)進(jìn)行操作的靈活手段游標(biāo)總是與一條SQL 選擇語句相關(guān)聯(lián)因為游標(biāo)由結(jié)果集和結(jié)果集中指向特定記錄的游標(biāo)位置組成。

五、實驗要求

按要求完成,詳細(xì)記錄操作步驟,書寫實驗報告。所有實驗環(huán)節(jié)均由每位學(xué)?生獨立完成,認(rèn)真記錄操作過程,嚴(yán)禁抄襲他人實驗結(jié)果。

六、實驗總結(jié)

通過本次實驗學(xué)習(xí)了SQL的存儲過程與函數(shù),課有效的避免重復(fù)地編寫相同的SQL語句,方便開發(fā)人員,增強(qiáng)了SQL的功能和靈活性。文章來源地址http://www.zghlxwxcb.cn/news/detail-770835.html

到了這里,關(guān)于數(shù)據(jù)庫系統(tǒng)原理及MySQL應(yīng)用教程實驗七存儲過程與函數(shù)的創(chuàng)建管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 書店銷售管理系統(tǒng)----數(shù)據(jù)庫原理及應(yīng)用綜合實驗

    書店銷售管理系統(tǒng)----數(shù)據(jù)庫原理及應(yīng)用綜合實驗

    枯木逢春猶再發(fā),人無兩度再少年?? 系統(tǒng)主要模塊如下: (1) 書店銷售管理系統(tǒng)設(shè)計與實現(xiàn)—圖書入庫管理及查詢統(tǒng)計 圖書入庫管理:維護(hù)入庫圖書信息(如圖書編號、書名、作者、價格、圖書分類、出版社等)。自動計算庫存。 圖書查詢統(tǒng)計:按圖書分類,出版社、書

    2024年02月06日
    瀏覽(22)
  • 數(shù)據(jù)庫系統(tǒng)原理與應(yīng)用教程(014)—— 關(guān)系數(shù)據(jù)庫練習(xí)題(一)

    數(shù)據(jù)庫系統(tǒng)原理與應(yīng)用教程(014)—— 關(guān)系數(shù)據(jù)庫練習(xí)題(一)

    1、試述關(guān)系模型的三要素和關(guān)系操作語言的特點。 答案: 關(guān)系模型的三要素為數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作和完整性約束。在關(guān)系模型中,無論是實體集還是實體集之間的聯(lián)系都是由關(guān)系表示的。 關(guān)系操作語言的特點:(1)關(guān)系操作的方式是一次一集合方式。(2)關(guān)系操作語言是

    2024年02月02日
    瀏覽(23)
  • ?數(shù)據(jù)庫原理及應(yīng)用上機(jī)(實驗二 SQL數(shù)據(jù)定義功能實驗)

    ?數(shù)據(jù)庫原理及應(yīng)用上機(jī)(實驗二 SQL數(shù)據(jù)定義功能實驗)

    ? 作者:命運之光? ? 專欄:數(shù)據(jù)庫原理及應(yīng)用上機(jī)實驗 ? 目錄 ?一、實驗?zāi)康暮鸵??二、實驗內(nèi)容與步驟 ?三、附加練習(xí) ?四、實驗總結(jié) ???? 前言: ? 數(shù)據(jù)庫原理及應(yīng)用上機(jī)實驗報告的一個簡單整理后期還會不斷完善 ???? 1.掌握利用SQL查詢分析器和企業(yè)管理

    2024年02月05日
    瀏覽(21)
  • 數(shù)據(jù)庫原理及應(yīng)用實驗報告-實驗10-觸發(fā)器

    數(shù)據(jù)庫原理及應(yīng)用實驗報告-實驗10-觸發(fā)器

    ?實驗題目 ? 實驗 10觸發(fā)器 ?? 10.1 實驗?zāi)康?通過實驗使學(xué)生加深對數(shù)據(jù)完整性的理解,學(xué)會理解、創(chuàng)建和使用觸發(fā)器。 10.2 實驗內(nèi)容 ? (用實驗9的Teacher表) (1) 為 Teacher 表建立觸發(fā)器T1,當(dāng)插入或使更新表中的數(shù)據(jù)時,保證所操作的紀(jì)錄的 Tage 值大于0。 (2) 為 Teacher 表建立

    2024年02月05日
    瀏覽(19)
  • 數(shù)據(jù)庫原理及應(yīng)用實驗報告-實驗4-SQL的視圖

    數(shù)據(jù)庫原理及應(yīng)用實驗報告-實驗4-SQL的視圖

    實驗?zāi)康?熟悉SQL支持的有關(guān)視圖的操作,能夠熟練使用SQL語句來創(chuàng)建需要的視圖,對視圖進(jìn)行查詢和刪除視圖。 實驗內(nèi)容 定義常見的視圖形式,包括: 行列子集視圖 WITH CHECK OPTION的視圖 基于多個基表的視圖 基于視圖的視圖 帶表達(dá)式的視圖 分組視圖 通過實驗考察WITH CHEC

    2023年04月26日
    瀏覽(87)
  • 《數(shù)據(jù)庫原理MySQL》第四次上機(jī)實驗

    一、連接查詢 1.查詢女學(xué)生的學(xué)生學(xué)號及總成績 2.查詢李勇同學(xué)所選的課程號及成績 3.查詢李新老師所授課程的課程名稱 4.查詢女教師所授課程的課程號及課程名稱 5.查詢姓“王”的學(xué)生所學(xué)的課程名稱 6.查詢選修“數(shù)據(jù)庫”課程且成績在 80 到 90 之間的學(xué)生學(xué)號及成績 7.查

    2024年02月05日
    瀏覽(23)
  • 大數(shù)據(jù)技術(shù)原理與應(yīng)用實驗3——NoSQL和關(guān)系數(shù)據(jù)庫的操作比較

    大數(shù)據(jù)技術(shù)原理與應(yīng)用實驗3——NoSQL和關(guān)系數(shù)據(jù)庫的操作比較

    (1)理解四種數(shù)據(jù)庫(MySQL、HBase、Redis和MongoDB)的概念以及不同點; (2)熟練使用四種數(shù)據(jù)庫操作常用的Shell命令; (3)熟悉四種數(shù)據(jù)庫操作常用的Java API。 (1)Linux操作系統(tǒng)(CentOS7.5) (2)VMware Workstation Pro 15.5 (3)遠(yuǎn)程終端工具Xshell7 (4)Xftp7傳輸工具 (5)Hadoop版本:

    2024年02月02日
    瀏覽(14)
  • MySQL數(shù)據(jù)庫設(shè)計作業(yè) ——《網(wǎng)上書店系統(tǒng)》數(shù)據(jù)庫設(shè)計實驗報告

    MySQL數(shù)據(jù)庫設(shè)計作業(yè) ——《網(wǎng)上書店系統(tǒng)》數(shù)據(jù)庫設(shè)計實驗報告

    普通用戶:可以進(jìn)行最基礎(chǔ)的登陸操作,可瀏覽圖書、按類別查詢圖書、查看 圖書的詳細(xì)信息,還可以注冊成為會員。 會員:需要填寫詳細(xì)信息(真實姓名、性別、手機(jī)號、地址、郵箱等),可瀏覽圖書、按類別查詢圖書、查看圖書的詳細(xì)信息,在此基礎(chǔ)上,還可以訂購圖

    2024年02月04日
    瀏覽(33)
  • 數(shù)據(jù)庫應(yīng)用:數(shù)據(jù)庫管理系統(tǒng)與安裝MySQL數(shù)據(jù)庫

    數(shù)據(jù)庫應(yīng)用:數(shù)據(jù)庫管理系統(tǒng)與安裝MySQL數(shù)據(jù)庫

    目錄 一、理論 1.數(shù)據(jù)庫管理系統(tǒng) 2.關(guān)系型數(shù)據(jù)庫 3.數(shù)據(jù)庫 4.MySQL數(shù)據(jù)庫 5.MySQL部署 二、實驗 1.yum安裝MySQL 2.編譯安裝MySQL 3.配置MySQL數(shù)據(jù)庫的Tab補(bǔ)全? 三、問題 1.數(shù)據(jù)庫登錄報錯 2.數(shù)據(jù)庫密碼復(fù)雜度報錯 3.數(shù)據(jù)庫連接報錯 四、總結(jié) (1)概念 數(shù)據(jù)庫管理系統(tǒng)(Database Management

    2024年02月13日
    瀏覽(29)
  • 《MySQL數(shù)據(jù)庫原理、設(shè)計與應(yīng)用》課后習(xí)題及答案 黑馬程序員編著

    答案有文檔形式,但是csdn必須要下載,,需要的人就去那里下載吧?!禡ySQL數(shù)據(jù)庫原理、設(shè)計與應(yīng)用》課后習(xí)題及答案黑馬程序員編著 一、 填空題 1.關(guān)系型數(shù)據(jù)庫的標(biāo)準(zhǔn)語言是_ SQL _。 2.數(shù)據(jù)庫發(fā)展的3個階段中,數(shù)據(jù)獨立性最高的是_ 數(shù)據(jù)庫系統(tǒng) _階段。 3.概念模型中的3種基

    2024年02月03日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包