MySQL 存储函数篇

目录

  • 什么是存储函数
  • 存储函数和存储过程的区别
  • 创建存储函数
  • 调用存储函数
  • 删除存储函数
  • 定义与实现完整性约束

 

1、什么是存储函数

  存储函数与存储过程一样,是由SQL语句和过程式语句组成的代码片段

 

2、存储函数和存储过程的区别

存储函数存储过程
不能拥有输出参数可以拥有输出参数
可以直接调用存储函数,不需要call语句需要call语句调用存储过程
必须包含一条return语句不允许包含return语句

 

 

 

 

 

3、创建存储函数

示例:在数据库中mysql_test中创建一个存储函数,要求该函数能根据给定的客户id号返回客户的性别,如果数据库中没有给定的客户id号,则返回"没有该客户".

用例表:customer(cust_id,cust_sex,cust_name);
->use mysql_test; ->delimiter $$ ->create function fn_name(cid int) //创建一个存储函数,题目要求我们输入id号判断性别,所以是int -> returns char(2) //返回性别,所以char类型 -> deterministic //为了提高where子句的性能加的 ->begin //接下来要写函数体了 -> declare sex char(2); //声明局部变量用来装性别 -> select cust_sex into sex from customer //把这个性别放进局部变量 -> where cust_id = cid; //判断id相符 -> if sex is null then //判断这个局部变量性别对应的属性 -> return(select '没有该客户'); -> else if sex = '' then -> return(select ""); -> else return(select ""); -> end if; //用来结束else if的语句 -> end if; //用来结束if的语句 ->end $$ //用来结束存储函数

 

3、调用存储函数

//调用存储函数,举上面的例子

customer表的数据
(1,"男","zhangsan")
(2,"女","wangwu")
(3,"女","lisi")
(4,null,"wowo")

这里我有4条数据

->select fn_name(1)$$
->男 //输出结果

->select fn_name(2)$$
->女 //输出结果

->select fn_name(4)$$
->null //输出结果

 

4、删除存储函数

->drop function if exists fn_name $$

//指定要删除的存储函数的名称

 

5、定义与实现完整性约束

示例:在数据库mysql_test中创建一个商品订单表orders,该表包含订单号order_id,商品名order_product,商品类型order_product_type,客户id号cust_id,
订购时间order_date,价格order_price,数量order_amount。要求商品订单表orders中的所有订购客户信息均已在表costomers中记录在册
->use mysql_test ->cretate table orders ->( -> order_Id int not null auto_increment, -> order_product char(50) not null, -> cust_id int not null, -> order_date datetime not null, -> order_price double not null, -> order_amount int not null, -> primary key(order_id), -> foreign key(cust_id) -> references customers(cust_id) -> on delete restrict -> on update restrict ->); //restrict 限制策略 //cascade 级联策略 //set null 置空策略 //no action 不采取实施策略

 

转载于:https://www.cnblogs.com/cheneyboon/p/11432095.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值