MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng)荒叼,由瑞典MySQL AB 公司開發(fā)轿偎,目前屬于 Oracle 旗下產(chǎn)品。MySQL 最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)被廓,在 WEB 應(yīng)用方面MySQL是最好的 RDBMS (Relational Database Management System坏晦,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。
MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng)嫁乘,關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中昆婿,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性蜓斧。
MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言仓蛆。MySQL 軟件采用了雙授權(quán)政策,它分為社區(qū)版和商業(yè)版挎春,由于其體積小看疙、速度快、總體擁有成本低搂蜓,尤其是開放源碼這一特點狼荞,一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫。由于其社區(qū)版的性能卓越帮碰,搭配 PHP 和 Apache 可組成良好的開發(fā)環(huán)境相味。
存儲過程
MySQL 5 添加了對存儲過程的支持。存儲過程簡單來說殉挽,就是為以后的使用而保存的一條或多條MySQL語句的集合丰涉。可將其視為批文件斯碌,雖然它們的作用不僅限于批處理一死。
使用存儲過程
一、執(zhí)行存儲過程
MySQL稱存儲過程的執(zhí)行為調(diào)用傻唾,因此MySQL執(zhí)行存儲過程的語句為CALL投慈。CALL接受存儲過程的名字以及需要傳遞給它的任意參數(shù)承耿,如下所示:
CALL productpricing(@pricelow,@pricehigh,@priceaverage);
其中,執(zhí)行名為 productpricing的存儲過程伪煤,它計算并返回產(chǎn)品的最低加袋、最高和平均價格。存儲過程可以顯示結(jié)果也可以不顯示結(jié)果抱既。
二职烧、創(chuàng)建存儲過程
例如:一個返回產(chǎn)品平均價格的存儲過程。
CREATE PROCEDURE productpricing()
BEGIN
SELECT Avg(prod_price) AS priceaverage
FROM products;
END ;
此存儲過程名為 productpricing防泵,用CREATE PROCEDURE productpricing()語句定義蚀之。如果存儲過程接受參數(shù),它們將在()中列舉出來捷泞。此存儲過程沒有參數(shù)足删,但后跟的()仍然需要。BEGIN和END語句用來限制存儲過程體肚邢,過程體本身是一個簡單的SELECT語句壹堰。在MySQL處理這段代碼時,它創(chuàng)建了一個新的存儲過程 productpricing骡湖。沒有返回數(shù)據(jù),因為這段代碼并未調(diào)用存儲過程峻厚,這里只是為了今后使用而創(chuàng)建它响蕴。存儲過程的使用如下:
CALL productpricing();
CALL productpricing();執(zhí)行剛創(chuàng)建的存儲過程并顯示返回的結(jié)果。因為存儲過程實際上是一種函數(shù)惠桃,所以存儲過程名后需要有()符號(即使不傳遞參數(shù)也需要)浦夷。
三、刪除存儲過程
存儲過程在創(chuàng)建之后辜王,被保存在服務(wù)器上以供使用劈狐,直至被刪除。刪除命令從服務(wù)器中刪除存儲過程呐馆。
DROP PROCEDURE productpricing肥缔;
四、使用參數(shù)
productpricing只是一個簡單的存儲過程汹来,它簡單的顯示SELECT語句的結(jié)果续膳。一般,存儲過程并不顯示結(jié)果收班,而是把結(jié)果返回給你指定的變量坟岔。
變量:內(nèi)存中一個特定的位置,用來臨時存儲數(shù)據(jù)摔桦。
以下是productpricing的修改版本:
CREATE PROCEDURE productpricing(
OUT p1 DECIMAL(8,2),
OUT ph DECIMAL(8,2),
OUT pa DECIMAL(8,2),
)
BEGIN
SELECT Min(prod_price) INTO p1 FROM products;
SELECT Max(prod_price) INTO ph FROM products;
SELECT Avg(prod_price) INTO pa FROM products;
END ;
此存儲過程接受3個參數(shù):p1存儲產(chǎn)品最低價社付,ph存儲產(chǎn)品最高價,pa 存儲產(chǎn)品平均價格。每個參數(shù)必須具有指定的類型鸥咖,這里使用十進(jìn)制值纪隙。關(guān)鍵字OUT指出相應(yīng)的參數(shù)用來從存儲過程傳出一個值(返回給調(diào)用者)。為了用此修改過的存儲過程扛或,必須指定3個變量名绵咱,如下所示:
CALL productpricing(@pricelow,@pricehigh,@priceaverage);
由于此存儲過程要求3個參數(shù),因此必須正好傳遞3個參數(shù)熙兔,不多也不少悲伶。所以,這條CALL語句給出3個參數(shù)住涉。它們是存儲過程將保存結(jié)果的3個變量的名字麸锉。
為了獲取3個值,可以使用以下語句:
SELECT @pricelow,@pricehigh,@priceaverage;
五舆声、檢查存儲過程
為顯示用來創(chuàng)建一個存儲過程的CREATE語句花沉,使用SHOW CREATE PROCEDURE語句:
SHOW CREATE PROCEDURE ordertotal;
為了獲得包括何時、由誰創(chuàng)建等詳細(xì)信息的存儲過程列表媳握,使用SHOW PROCEDURE STATUS碱屁。