mysql 储存过程、触发器的创建、删除及使用

##删除userInfo表

DROP TABLE IF EXISTS userInfo;

CREATE TABLE userInfo(

userId INT AUTO_INCREMENT PRIMARY KEY,

userName VARCHAR(30),

userPwd VARCHAR(30)

);

CREATE TABLE test_trigger_table(

id INT,

NAME VARCHAR(30)

);

##插入数据

INSERT INTO userInfo VALUES(NULL,'王五','123456');

##查询

SELECT * FROM userInfo;

##################################触发器的创建、删除及使用##############################
##触发器创建与删除语法规则
1. DELIMITER//
2. CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name
3. FOR EACH ROW
4. BEGIN
5. trigger_stmt
6. END;
7. //
注释:1)1、7必须成对出现,在其中//(分隔符设置)可以换成$$
2)trigger_name为触发器的名称
3)trigger_time什么时候触发创建的触发器,使用的关键字BEFORE,AFTER
4)trigger_event引发触发器的事件 如UPDATE、DELETE、DROP
5)tbl_name把触发器建立在那张表上面
6)FOR EACH ROW为遍历第一行记录
7)BEGIN ..... END成对出现,操作的复合语句 如UPDATE、DELETE、INSERT,
8)trigger_stmt 为一些条件判断语句,在其中一般有对表的UPDATE、DELETE、INSERT操作
#########实例########
##删除userInfo的触发器
DROP TRIGGER trigger_userInfo;
##创建userInfo的触发器
DELIMITER$$
CREATE TRIGGER trigger_userInfo
BEFORE INSERT ON userInfo
FOR EACH ROW
BEGIN
INSERT INTO test_trigger_table(id, NAME) VALUES (6, 'ABC');
##set new.userName='111';##在插入userInfo之前把userName字段插入值修改为111
##不允许使用select,DROP语句.如select now()或DROP TABLE test_trigger_table;
END;
$$
SELECT * FROM test_trigger_table;
##触发器的使用:一般在打印服务器日志,人员操作日志等
###############存储过程的创建、删除及使用##########################
##语法:
##DROP PROCEDURE procedure_name
##创建无参存储过程
DELIMITER//
CREATE PROCEDURE procedure_name()
BEGIN
/*此存储过程的正文*/
END;
//
##调用无参存储过程
CALL procedure_name();
##创建有参存储过程
DELIMITER//
CREATE PROCEDURE procedure_name(IN|OUT param dataType)
DECLARE variable dataType;
BEGIN
/*此存储过程的正文*/
END;
//
##注释:in表示传入但可被存储过程更改
#out表示参数将被传出或返
#param参数名
#dataType为参数类型,注:varchar是要定义长度,如 in v_input varchar(20)才一个完整的形式输入参数
#declare为声明变量区域
#begin .....end为复合语句块
##调用有参存储过程
CALL procedure_name(param);
##实例1无参存储过程(查询userInfo中userName为111的对象记录)
DELIMITER//
CREATE PROCEDURE pro_select_userInfo()
BEGIN
SELECT * FROM userInfo WHERE userName='111';
END;
//
##调用无参存储过程
CALL pro_select_userInfo();
##删除储存过程
##drop PROCEDURE procedure_para_name1;
DELIMITER$$
CREATE PROCEDURE procedure_para_name1 (IN param_name INTEGER)
BEGIN
DECLARE userName1 VARCHAR(20);
IF param_name=5 THEN
SELECT userName INTO userName1 FROM userInfo WHERE userId=param_name;
ELSE
SET userName1='PHP';
END IF;
SELECT userName1;
END;$$
##调用有参存储过程
CALL procedure_para_name7(5);
##注释:括号内参数创建此存储过程时传入的参数

你可能感兴趣的:(mysql,PHP)