预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共57页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数据库编程项目知识要点与目标任务一MySQL语言结构常量常量用户变量变量举例变量举例系统变量运算符表达式系统内置函数系统内置函数任务二存储过程创建存储过程DELIMITER命令创建存储过程举例DECLARE语句SET语句SELECT...INTO语句调用存储过程课堂练习删除存储过程流程控制语句IF语句举例 存储过程创建完后,可以在程序、触发器或者存储过程中被调用,但是都必须使用到CALL语句。 语法格式: CALLsp_name([parameter[,...]]) parameter为调用该存储过程使用的参数,这条语句中的参数个数必须总是等于存储过程的参数个数。 如果是输出变量,前面加@ 调用该存储过程: CALLCOMPAR(3,6,@K); SELECT@K; 说明:3和6相当于输入参数K1和K2,用户变量K相当于输出参数K3。可以看到,由于3<6,输出参数K的值就为“小于”。 【例8.24】创建一个Bookstore数据库的存储过程,根据客户姓名和书名查询订单,如果订购册数小于5本不打折,订购册数在5-10本之间,订购单价打九折,订购册数大于10本,订购单价打八折。 DELIMITER$$ CREATEPROCEDUREdj_update(INc_nameCHAR(8),INb_nameCHAR(20)) BEGIN DECLAREbhCHAR(20); DECLAREsfzCHAR(18); DECLAREslTINYINT; SELECT身份证号INTOsfzFROMMembersWHERE会员姓名=c_name; SELECT图书编号INTObhFROMBookWHERE书名=b_name; SELECT订购册数INTOslFROMSellWHERE身份证号=sfzAND图书编号=bh; IFsl>=5ANDsl<=10THEN UPDATESellSET订购单价=订购单价*0.9WHERE身份证号=sfzAND图书编号=bh; ELSE IFsl>10THEN UPDATESellSET订购单价=订购单价*0.8WHERE身份证号=sfzAND图书编号=bh; ENDIF; ENDIF; END$$ DELIMITER; 调用存储过程dj_update: CALLdj_update('张三','网络数据库'); CASE语句【例8.25】创建一个存储过程,当给定参数为U时返回“上升”,给定参数为D时返回“下降”,给定其他参数时返回“不变”。 DELIMITER$$ CREATEPROCEDUREvar_cp (INstrVARCHAR(1),OUTdirectVARCHAR(4)) BEGIN CASEstr WHEN'U'THENSETdirect='上升'; WHEN'D'THENSETdirect='下降'; ELSESETdirect='不变'; ENDCASE; END$$ DELIMITER; 以上的CASE语句用第二种格式来写如下: CASE WHENstr='U'THENSETdirect='上升'; WHENstr='D'THENSETdirect='下降'; ELSESETdirect='不变'; ENDCASE; 课堂练习课堂练习参考答案循环语句WHILE语句举例REPEAT语句LOOP语句存储过程的嵌套存储过程的嵌套课堂练习任务三存储函数创建存储函数存储函数举例【例8.31】创建一个存储函数来删除Sell表中有但Book表中不存在的记录。 CREATEFUNCTIONdel_Sell1(b_bhCHAR(20)) RETURNSBOOLEAN BEGIN DECLAREbhCHAR(20); SELECT图书编号INTObhFROMBookWHERE图书编号=b_bh; IFbhISNULLTHEN DELETEFROMSellWHERE图书编号=b_bh; RETURNTRUE; ELSE RETURNFALSE; ENDIF; END$$课堂练习课堂练习参考答案任务四触发器创建触发器举例创建触发器举例课堂练习DELIMITER$$ CREATETRIGGEREM_DELETEAFTERDELETE ONEmployeesFOREACHROW BEGIN DELETEFROMsalaryWHERE employeeID=OLD.employeeID; END$$ DELIMITER;创建触发器举例【例8.37】创建触发器,实现当向Sell表插入一行数据时,根据订购册数对Book进行修改。如果订购册数>10,Book表中折扣在原折扣基础上再打0.95折,否则折扣不变。 DELIMITER$$ CREATETRIGGERSell_ins