《Mysql學習MySQL與存儲過程的相關資料》要點:
本文介紹了Mysql學習MySQL與存儲過程的相關資料,希望對您有用。如果有疑問,可以聯系我們。
MySQL是“世界上最為流行的開放性數據庫”,至少對于MySQL?Web站點會這樣.但無論MySQL如此流行,很多公司都對MySQL的使用抱有抵觸情緒.這種現象來自幾個原因,其中有些人錯誤地認為開放性源代碼只不過相當于小孩子的積木游戲,而另一些人認為任何免費的東西都不會是好東西.也許這些想法都是誤解,然而有一種抱怨卻是合理的,即與其它對應的產品不一樣,比如Oracle或者?DB2,MySQL不能夠支持存儲過程(stored?procedures).?
最新的MySQL?5.0能夠支持存儲過程.如果你對存儲過程還沒有熟悉,那么你可以認為它們只是存儲在數據庫服務器端的SQL命令和程序邏輯的集合.這些存儲過程可以被應用程序調用,使得不同技術水平的開發人員能夠建立自己的SQL.
優點?存儲過程能夠允許絕大部分的數據庫訪問邏輯與程序邏輯分離開來.使用存儲過程的其中一個間接的優點是,程序的代碼變得更加小巧和容易理解.存儲過程的另一優點是,SQL可以被預先編譯,由此提高了程序的速度.因為存儲過程包含程序邏輯,可以在數據庫服務器端更多地執行更多的處理.同樣,當執行一個n-tier程序時,存儲過程被用于將數據層與服務層分離開來.
安全性也是存儲過程的另一優點.當不能直接訪問表格時,程序可以將執行優先級別分配給存儲過程.不幸的是,在這時候,MySQL不支持“授予執行(GRANT?EXECUTE)”.這就意味著除非程序具有訪問表格的權限,否則調用訪問相同表格的一個存儲過程也是不行的.使用這一特性有點像在做一個很有趣的賭博.
標準?與Oracle或者微軟的相關數據庫不一樣,MySQL和IBM的DB2能夠遵循存儲程序的SQL:2003語法.在理論上這意味著,如果數據庫結構相同,存儲程序可以在不同數據庫中使用.
可支持的SQL聲明?雖然MySQL不能支持存儲程序,但它卻可以完成很多任務,如表A所示.除此之外,MySQL的stored?procedure?documentation(存儲過程文檔)描述了可用于Oracle的PL/SQL和SQL?Server的?T-SQL的很多兼容特性.我對存儲過程支持的印象是,它執行比較緩慢,目的是避免任何影響大型軟件開發工程的步驟.
表A
MYSQL實例聲明
|
MYSQL實例描述
|
MYSQL實例CREATE PROCEDURE
|
MYSQL實例建立一個存放在MySQL數據庫的表格的存儲過程.
|
MYSQL實例CREATE FUNCTION
|
MYSQL實例建立一個用戶自定義的函數,尤其是返回數據的存儲過程.
|
MYSQL實例ALTER PROCEDURE
|
MYSQL實例更改用CREATE PROCEDURE 建立的預先指定的存儲過程,其不會影響相關存儲過程或存儲功能..
|
MYSQL實例ALTER FUNCTION
|
MYSQL實例更改用CREATE FUNCTION 建立的預先指定的存儲過程,其不會影響相關存儲過程或存儲功能..
|
MYSQL實例DROP PROCEDURE
|
MYSQL實例從MySQL的表格中刪除一個或多個存儲過程.
|
MYSQL實例DROP FUNCTION
|
MYSQL實例從MySQL的表格中刪除一個或多個存儲函數.
|
MYSQL實例SHOW CREATE PROCEDURE
|
MYSQL實例返回使用CREATE PROCEDURE 建立的預先指定的存儲過程的文本.這一聲明是SQL:2003規范的一個MySQL擴展.
|
MYSQL實例SHOW CREATE FUNCTION
|
MYSQL實例返回使用CREATE??FUNCTION建立的預先指定的存儲過程的文本.這一聲明是SQL:2003規范的一個MySQL擴展.
|
MYSQL實例SHOW PROCEDURE STATUS
|
MYSQL實例返回一個預先指定的存儲過程的特性,包括名稱、類型、建立者、建立日期、以及更改日期.這一聲明是SQL:2003規范的一個MySQL擴展.
|
MYSQL實例SHOW FUNCTION STATUS
|
MYSQL實例返回一個預先指定的存儲函數的特性,包括名稱、類型、建立者、建立日期、以及更改日期.這一聲明是SQL:2003規范的一個MySQL擴展.
|
MYSQL實例CALL
|
MYSQL實例調用一個使用CREATE PROCEDURE建立的預先指定的存儲過程.
|
MYSQL實例BEGIN ... END
|
MYSQL實例包含一組執行的多聲明.
|
MYSQL實例DECLARE
|
MYSQL實例用于指定當地變量、環境、處理器,以及指針.
|
MYSQL實例SET
|
MYSQL實例用于更改當地和全局服務器變量的值.
|
MYSQL實例SELECT ... INTO
|
MYSQL實例用于存儲顯示變量的縱列.
|
MYSQL實例OPEN
|
MYSQL實例用于打開一個指針.
|
MYSQL實例FETCH
|
MYSQL實例使用特定指針來獲得下一列.
|
MYSQL實例CLOSE
|
MYSQL實例用于關閉和打開指針.
|
MYSQL實例IF
|
MYSQL實例一個An if-then-else-end if 聲明.
|
MYSQL實例CASE ... WHEN
|
MYSQL實例一個 case聲明的結構
|
MYSQL實例LOOP
|
MYSQL實例一個簡單的循環結構;可以使用LEAVE 語句來退出.
|
MYSQL實例LEAVE
|
MYSQL實例用于退出IF,CASE,LOOP,REPEAT以及WHILE 語句.
|
MYSQL實例ITERATE
|
MYSQL實例用于重新開始循環.
|
MYSQL實例REPEAT
|
MYSQL實例在結束時測試的循環.
|
MYSQL實例WHILE
|
MYSQL實例在開始時測試的循環.
|
MYSQL實例RETURNS
|
MYSQL實例返回一個存儲過程的值.
|
|
MySQL 5.0支持存儲過程語句.
重要的是,請記住當前的MySQL對存儲過程的支持沒有Oracle,SQL Server或者DB2的成熟.同樣記住,具有少量的特性但卻操作良好,這比具有大量特性但卻錯誤百出的強得多,這一點更加重要.我知道這是一個比較奇怪的概念,但社區里的很多人有時候卻被其它一些概念所迷惑.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/6401.html