2015年计算机四级指导:MySQL中InnoDB和MyISAM类型的差别
发布时间:2010/3/10 18:16:07 来源:城市学习网 编辑:MOON
首先要强调,这里的函数和过程看起来,差别只是返回值,但是绝对不能看成是void fun的形式。先看一段SQL代码:
create function ShowBirth)
returns date
begin
declare temp date;
selectbirth into temp
from pet
where name=t_name;
return tem
end;
在这里,我建了一个叫ShowBirth的函数,传进一个变量t_name,存有我们的name值,返回的是日期date,是我制定的某个name对应的生日。在create语句后,直接跟上returns,表明返回值类型是date。接下来,所有的操作语句,一定要在begin...end之内。我先定义了一个变量,着相当于C/C++中的局部变量,其类型为date。接着,我把符合条件的date用一个select...into...来保存进temp这个变量中。然后在end的上方,紧靠着,一定要返回一个值,这里是temp。这样我们就定义好了一个函数。
注意,这个函数哈起不能够运行,在此之前,我们要做如下工作。
创建一个table,叫pet:
create table pet,owner varcahr,birth date,death date,sex varhar);
然后,我们导入数据:先在某个文件内部建一个txt文档,把输入,数据项之间用tab键分开,不同数据项用enter:
FluffyHarold1993-02-042003-10-23m
ClawsGwen1994-03-171987-9-20 f
BuffyHarold1989-05-132003-3-19 f
FangBenny1990-08-272001-9-30m
BowserDiane1979-08-311995-07-29m
ChirpyGwen1998-09-111987-2-13m
WhistleGwen1997-12-091987-10-23f
SlimBenny1996-04-291987-2-10f
然后用如下语句:
load data infile #39;d:“info.txt#39; into pet;
一般都没有问题,如果报错,可能是数据不对,或者路径不对,改一下。注意,你可以尝试把日期改成32号,你看看会有什么反映。
接着运行语句:
select ShowBirth;
结果就是:
mysqlselectShowBirth;
+-------------------+
ShowBirth
+-------------------+
1996-04-29
+-------------------+
1 row in set
哈哈,是不是很简单?
下面,我们来做procedure。这个和函数编写没有什么区别,就是没有returns,return,形参。
create procedure ShowPet)
begin
select name
from pet
where owner=t_owner
order by name;
end;
这个的执行方法如下:
call ShowPet;
结果就是:
mysql call ShowPet;
+---------+
name
+---------+
Chirpy
Claws
Whistle
+---------+
3 rows in set
Query OK, 0 rows affected