MySQL存儲(chǔ)過(guò)程和數(shù)據(jù)庫(kù)的聯(lián)系
MySQL存儲(chǔ)過(guò)程是我們經(jīng)常要用到的,下面就對(duì)MySQL存儲(chǔ)過(guò)程和數(shù)據(jù)庫(kù)的聯(lián)系進(jìn)行詳盡的闡述,如果您對(duì)MySQL存儲(chǔ)過(guò)程方面感興趣的話(huà),不妨一看。
一.要把一個(gè)表從一個(gè)類(lèi)型轉(zhuǎn)到另一個(gè)類(lèi)型,可使用ALTER TABLE語(yǔ)句,這個(gè)語(yǔ)句指明新的類(lèi)型:
ALTER TABLE t ENGINE = MYISAM;
ALTER TABLE t TYPE = BDB;
二.MySQL存儲(chǔ)過(guò)程:
下面一些情況下MySQL存儲(chǔ)程序尤其有用:
1.當(dāng)用不同語(yǔ)言編寫(xiě)多客戶(hù)應(yīng)用程序,或多客戶(hù)應(yīng)用程序在不同平臺(tái)上運(yùn)行且需要執(zhí)行相同的數(shù)據(jù)庫(kù)操作之時(shí)。
2.安全極為重要之時(shí)。比如,銀行對(duì)所有普通操作使用存儲(chǔ)程序。這提供一個(gè)堅(jiān)固而安全的環(huán)境,程序可以確保每一個(gè)操作都被妥善記入日志。在這樣一個(gè)設(shè)置中,應(yīng)用程序和用戶(hù)不可能直接訪問(wèn)數(shù)據(jù)庫(kù)表,但是僅可以執(zhí)行指定的存儲(chǔ)程序。 存儲(chǔ)程序和函數(shù)是用CREATE PROCEDURE和CREATE FUNCTION語(yǔ)句創(chuàng)建的子程序。一個(gè)子程序要么是一個(gè)程序要么是一個(gè)函數(shù)。使用CALL語(yǔ)句來(lái)調(diào)用程序,程序只能用輸出變量傳回值。就像別其它函數(shù)調(diào)用一樣,函數(shù)可以被從語(yǔ)句外調(diào)用(即通過(guò)引用函數(shù)名),函數(shù)能返回標(biāo)量值。存儲(chǔ)子程序也可以調(diào)用其它存儲(chǔ)子程序。
在MySQL 5.1中,一個(gè)存儲(chǔ)子程序或函數(shù)與特定的數(shù)據(jù)庫(kù)相聯(lián)系。這里有幾個(gè)意思:
1. 當(dāng)一個(gè)子程序被調(diào)用時(shí),一個(gè)隱含的USE db_name 被執(zhí)行(當(dāng)子程序終止時(shí)停止執(zhí)行)。存儲(chǔ)子程序內(nèi)的USE語(yǔ)句時(shí)不允許的。
2. 你可以使用數(shù)據(jù)庫(kù)名限定子程序名。這可以被用來(lái)引用一個(gè)不在當(dāng)前數(shù)據(jù)庫(kù)中的子程序。比如,要引用一個(gè)與test數(shù)據(jù)庫(kù)關(guān)聯(lián)的存儲(chǔ)程序p或函數(shù)f,你可以說(shuō)CALL test.p()或test.f()。
3. 數(shù)據(jù)庫(kù)移除的時(shí)候,與它關(guān)聯(lián)的所有存儲(chǔ)子程序也都被移除。
【編輯推薦】
創(chuàng)建MySQL存儲(chǔ)過(guò)程示例
教您如何實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)備份及恢復(fù)