mysql视图怎么存储 mysql视图的用处( 三 )


if (mysql_query("call deleteuser('$delete_user[0]')")){
echo "用户$delete_user[0]删除成功br";
}else {
echo "用户$delete_user[0]删除失败br";
}
?
程序运行的结果:
执行结果
添加用户welefen 成功
用户welefen 验证正确
用户welefen 的密码修改成功
用户welefen 删除成功
以上的这个程序简单的说明了Mysql 中的存储过程结合PHP 的应用 , 当然在实际应用要比这个
复杂的多 。
验证角谷猜想
角谷猜想:给定一个整数x,若x%2=1,则x=3*x+1,否则x=x/2,如此循环下去,经过有限步骤必
能得到1 。
例如:初始整数为9,则
9-28-14-7-22-11-34-17-52-26-13-40-20-10-5-16-8-4-2-1
为了说明存储过程中一些语法的应用,我们通过存储过程来实现它:
执行结果
mysql delimiter //
mysql create procedure jgguess(in number int)
- begin
- declare param1 int default 1;
- set @a=concat(number);
- jiaogu:loop#循环开始
- set param1=number%2;
- if param1=1 then set number=number*3+1; #number 为奇数,将它乘3加 1
- else set number=number/2;
- end if;
- set @a=concat(@a,'-',number);
- if number1 then iterate jiaogu; #number 不为 1 , 继续循环
- end if;
- leave jiaogu; #退出循环
- end loop jiaogu;
- end
- //
Query OK, 0 rows affected (0.00 sec)
mysql call jgguess(11);
- //
Query OK, 0 rows affected (0.00 sec)
mysql select @a//
+-------------------------------------------------------+
| @a|
+-------------------------------------------------------+
| 11-34-17-52-26-13-40-20-10-5-16-8-4-2-1 |
+-------------------------------------------------------+
1 row in set (0.02 sec)
在这个存储过程中,你传入的参数不能超过int 型数据的范围,否则就会报错 。
触发器
触发器是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象 。例如当我们向
某个表插入一行数据时发生一个事件或者删除某个记录时触发某个事件 。
语法:
CREATE TRIGGERtrigger_Name trigger_time trigger_event
ONtbl_Name FOR EACHROWtrigger_stmt
trigger_time 是触发器的动作时间 。它可以是 BEFORE 或 AFTER ,以指明触发器是在激活它的
语句之前或之后触发 。
trigger_event 指明了激活触发器的语句的类型 。trigger_event可以是下述值之一:
INSERT:将新行插入表时激活触发器,例如,通过 INSERT、LOADDATA 和 REPLACE 语句;
UPDATE:更改某一行时激活触发器,例如,通过UPDATE语句;
DELETE:从表中删除某一行时激活触发器,例如,通过 DELETE 和 REPLACE 语句 。
例如当我们向上面的user 表中增加一个用户名为“welefen ”时,我们把记录用户数的表的值增
加 1;
代码片段
Create table numuser(
Num int not null default 0
);
Delimiter //
Create trigger testnum after insert on welefen.userfor each row
Begin
Update welefen.numuser set Num=Num+1;
End
//
视图
当我们想得到数据表中某些字段的信息,并想把他们保存时我们就可以用视图 。
语法:
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_Name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
例如我们想对上面的用户表使用视图,可以这样:
Create viewwelefen.userview as select * fromwelefen.user;
查看视图的信息可以使用:
Select * fromwelfen.userview;
mysql: 创建视图和存储过程1.drop procedure if exists pr_even;create procedure pr_even(in x int,out y int)begindeclare i int;set y = 0; set i = 0; while ix + 1 doif i mod 2 = 0 thenset y = y + 1;end if;set i = i + 1;end while;end;-- 调用过程CALL pr_even(2012, @y);SELECT @y; 2.-- 创建临时表length()creat table tmp_student {select name from student where length(name)3}-- 创建视图create view v_student as { select name,age from student as s,tmp_student as t_s where s.name=t_s.name}

推荐阅读