国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySql5.0基礎

2024-07-24 12:58:38
字體:
來源:轉載
供稿:網友
CREATE PROCEDURE
建立一個存放在MySQL數據庫的表格的存儲過程。

CREATE FUNCTION
建立一個用戶自定義的函數,尤其是返回數據的存儲過程。

ALTER PROCEDURE
更改用CREATE PROCEDURE 建立的預先指定的存儲過程,其不會影響相關存儲過程或存儲功能。.

ALTER FUNCTION
更改用CREATE FUNCTION 建立的預先指定的存儲過程,其不會影響相關存儲過程或存儲功能。.

DROP PROCEDURE
從MySQL的表格中刪除一個或多個存儲過程。

DROP FUNCTION
從MySQL的表格中刪除一個或多個存儲函數。

SHOW CREATE PROCEDURE
返回使用CREATE PROCEDURE 建立的預先指定的存儲過程的文本。這一聲明是SQL:2003規范的一個MySQL擴展。

SHOW CREATE FUNCTION
返回使用CREATE  FUNCTION建立的預先指定的存儲過程的文本。這一聲明是SQL:2003規范的一個MySQL擴展。

SHOW PROCEDURE STATUS
返回一個預先指定的存儲過程的特性,包括名稱、類型、建立者、建立日期、以及更改日期。這一聲明是SQL:2003規范的一個MySQL擴展。

SHOW FUNCTION STATUS
返回一個預先指定的存儲函數的特性,包括名稱、類型、建立者、建立日期、以及更改日期。這一聲明是SQL:2003規范的一個MySQL擴展。

CALL
調用一個使用CREATE PROCEDURE建立的預先指定的存儲過程。

BEGIN ... END
包含一組執行的多聲明。

DECLARE
用于指定當地變量、環境、處理器,以及指針。

SET
用于更改當地和全局服務器變量的值。

SELECT ... INTO
用于存儲顯示變量的縱列。

OPEN
用于打開一個指針。

FETCH
使用特定指針來獲得下一列。

CLOSE
用于關閉和打開指針。

IF
一個An if-then-else-end if 聲明。

CASE ... WHEN
一個 case聲明的結構

LOOP
一個簡單的循環結構;可以使用LEAVE 語句來退出。

LEAVE
用于退出IF,CASE,LOOP,REPEAT以及WHILE 語句。

ITERATE
用于重新開始循環。

REPEAT
在結束時測試的循環。

WHILE
在開始時測試的循環。

RETURNS
返回一個存儲過程的值。



MySQL 5.0支持存儲過程語句。



一.創建存儲過程

1.基本語法:

create procedure sp_name()
begin
.........
end

2.參數傳遞

二.調用存儲過程

1.基本語法:call sp_name()
注意:存儲過程名稱后面必須加括號,哪怕該存儲過程沒有參數傳遞

三.刪除存儲過程

1.基本語法:
drop procedure sp_name//
2.注意事項
(1)不能在一個存儲過程中刪除另一個存儲過程,只能調用另一個存儲過程

四.區塊,條件,循環

1.區塊定義,常用
begin
......
end;
也可以給區塊起別名,如:
lable:begin
...........
end lable;
可以用leave lable;跳出區塊,執行區塊以后的代碼
2.條件語句

if 條件 then
statement
else
statement
end if;

3.循環語句
(1).while循環

[label:] WHILE expression DO

statements

END WHILE [label] ;



(2).loop循環

[label:] LOOP

statements

END LOOP [label];


(3).repeat until循環

[label:] REPEAT

statements

UNTIL expression

END REPEAT [label] ;


五.其他常用命令

1.show procedure status
顯示數據庫中所有存儲的存儲過程基本信息,包括所屬數據庫,存儲過程名稱,創建時間等
2.show create procedure sp_name

存儲過程創建語法:

CREATE PROCEDURE procedure_name ([parameter[,...])

[LANGUAGE SQL]

[ [NOT] DETERMINISTIC ]

[{CONTAINS SQL|MODIFIES SQL DATA|READS SQL DATA|NO SQL}]

[SQL SECURITY {DEFINER|INVOKER} ]

[COMMENT comment_string]

procedure_statements


可用SHOW PROCEDURE STATUS 或 SHOW CREATE PROCEDURE 來查看存儲過程信息
另,系統表INFORMATION_SCHEMA.ROUTINES也包含了存儲過程的一些信息
同樣地,函數也可以使用同樣方式查看(SHOW FUNCTION STATUS)

函數的創建


CREATE FUNCTION function_name (parameter[,...])

RETURNS datatype

[LANGUAGE SQL]

[ [NOT] DETERMINISTIC ]

[ {CONTAINS SQL | NO SQL | MODIFIES SQL DATA | READS SQL DATA} ]

[ SQL SECURITY {DEFINER|INVOKER} ]

[ COMMENT comment_string ]

語句體

函數與存儲過程基本一樣,其區別主要有:
1、  要使用RETURNS指定返回類型
2、  函數必須返回值,且在語句體中使用RETURN返回(注意:指定返回類型用RETURNS,返回值用RETURN)
3、  參數不區分IN,OUT,全部為IN類形

例:
CREATE FUNCTION cust_status(in_status CHAR(1))
    RETURNS VARCHAR(20)
BEGIN DECLARE long_status VARCHAR(20);
    IF in_status="O" THEN SET long_status="Overdue";
    ELSEIF in_status="U" THEN SET long_status="Up to date";
    ELSEIF in_status="N" THEN SET long_status="new";
    END IF;
    RETURN(long_status);
END;

調用:
SELECT cust_status('O');

觸發器

CREATE [DEFINER={user|CURRENT_USER}] TRIGGER trigger_name

{BEFORE|AFTER} {UPDATE|INSERT|DELETE}

ON table_name

FOR EACH ROW

trigger_statements


意義:當對表table_name執行update,insert,delete操作之前(before)或之后(after)時觸發語句trigger_statements操作

例:
mysql> CREATE TRIGGER account_balance_au
AFTER UPDATE ON account_balance FOR EACH ROW
BEGIN
  DECLARE dummy INT;
  IF NEW.balance<0 THEN
     SET NEW.balance=NULL;
  END IF;
END

上述觸發器表示:當更新表account_balance之后,如果更新的值balance小于0,則將它改為NULL,
注:如果為OLD.balance則表示更新前的原值
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 满洲里市| 崇州市| 安西县| 阳春市| 建阳市| 包头市| 咸阳市| 安图县| 沈丘县| 安宁市| 新巴尔虎右旗| 图片| 泰宁县| 丹棱县| 永川市| 德钦县| 石阡县| 定陶县| 青神县| 罗源县| 永顺县| 佛山市| 连平县| 武强县| 祁阳县| 顺义区| 武陟县| 新源县| 华安县| 汤阴县| 兴义市| 雷波县| 绥德县| 花莲市| 台南县| 平度市| 河北省| 庐江县| 博罗县| 郴州市| 大港区|