存储过程有什么优缺点?为什么要用存储过程?或者在什么情况下才用存储过程?

最直白的好处是存储过程比较快。

1、利用存储过程,给Employee表添加一条业务部门员工的信息。

DROP PROCEDURE IF EXISTS insert_business_employee;
DELIMITER // CREATE PROCEDURE insert_business_employee(
IN employee_no_in varchar(8),
IN employee_name_in varchar(10),
IN sex_in char(1),
IN birthday_in date,
IN address_in varchar(50),
IN telephone_in varchar(20),
IN hiredate_in date,
-- IN department_in varchar(30),
IN headship_in varchar(10),
IN salary_in decimal(8,2)
)
BEGIN
INSERT INTO employee
(employee_no,
employee_name,
sex,
birthday,
address,
telephone,
hiredate,
department,
headship,
salary)
VALUES
(employee_no_in,
employee_name_in,
sex_in,
birthday_in,
address_in,
telephone_in,
hiredate_in,
'业务部',
headship_in,
salary_in);
END // DELIMITER ; CALL insert_business_employee(
'',
'无极',
'F',
'2001-10-22',
'北海道',
'',
'2001-10-22',
'老板',
''
);

2、利用存储过程输出所有客户姓名、客户订购金额及其相应业务员的姓名。

DROP PROCEDURE IF EXISTS print_transaction;
DELIMITER //
CREATE PROCEDURE print_transaction()
BEGIN
SELECT
customer_name,
order_sum,
employee_name
FROM
customer x
LEFT JOIN order_master y ON x.customer_no = y.customer_no
LEFT JOIN employee z ON y.saler_no = z.employee_no;
END //
DELIMITER ;
CALL print_transaction();

3、利用存储过程查找某员工的员工编号、订单编号、销售金额。

DROP PROCEDURE IF EXISTS select_employee_performance;
DELIMITER //
CREATE PROCEDURE select_employee_performance(
IN employee_name_in varchar(10)
)
BEGIN
SELECT
saler_no,
order_no,
order_sum
FROM
employee
LEFT JOIN order_master ON employee_no = saler_no
WHERE
employee_name = employee_name_in
ORDER BY
saler_no;
END //
DELIMITER ;
CALL select_employee_performance('张小梅');

4、相关

WEB 开发相关笔记 #05# BUG 日志 持续更新

5、插入一条学生记录,判断学号是否存在。

DROP PROCEDURE IF EXISTS inserStu;
DELIMITER //
CREATE PROCEDURE inserStu(
IN id_in INT,
IN name_in VARCHAR(50)
)
BEGIN
IF EXISTS (SELECT * FROM stu WHERE id = id_in) THEN
SELECT "学号已存在";
ELSE
INSERT INTO stu
(id,
name)
VALUES
(id_in,
name_in);
SELECT "插入成功";
END IF;
END //
DELIMITER ; -- 测试
-- CALL inserStu(1, 'wang');
-- CALL inserStu(1, 'wang');
-- CALL inserStu(333, 'wang');

MySQL笔记(八)存储过程练习&补充的更多相关文章

  1. MySQL笔记---视图,存储过程, 触发器的使用入门

    大二学数据库的时候,只是隐约听到老师提起过视图啊,存储过程啊,触发器啊什么的,但只是淡淡的记住了名字,后来自己做些小项目,小程序,也没有用上过,都只是简单的建表,关联表之类的,导致我对这些东西的理解只 ...

  2. mysql学习笔记:存储过程

    use test; drop table if exists t8; CREATE TABLE t8(s1 INT,PRIMARY KEY(s1)); drop procedure if exists ...

  3. MySQL笔记(六)游标练习

    23.3.1 Trigger Syntax and Examples 意义不明的几道练习,留着备用. 感觉不好写,而且难以调试..不知道以后会不会有实际的应用场景. 环境:MySQL 笔记(三)由 t ...

  4. 最全mysql笔记整理

    mysql笔记整理 作者:python技术人 博客:https://www.cnblogs.com/lpdeboke Windows服务 -- 启动MySQL net start mysql -- 创 ...

  5. MySQL笔记汇总

    [目录] MySQL笔记汇总 一.mysql简介 数据简介 结构化查询语言 二.mysql命令行操作 三.数据库(表)更改 表相关 字段相关 索引相关 表引擎操作 四.数据库类型 数字型 字符串型 日 ...

  6. 涂抹mysql笔记-数据库中的权限体系

    涂抹mysql笔记-数据库中的权限体系<>能不能连接,主机名是否匹配.登陆使用的用户名和密码是否正确.mysql验证用户需要检查3项值:用户名.密码和主机来源(user.password. ...

  7. 【MySQL笔记】SQL语言四大类语言

     SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL.   1. 数据查询语言DQL 数据查询语言DQL基本结构是由SELECT子句,FROM子句, ...

  8. MySQL学习——操作存储过程

    MySQL学习——操作存储过程 摘要:本文主要学习了使用DDL语句操作存储过程的方法. 了解存储过程 是什么 存储过程是一组为了完成特定功能的SQL语句集合. 使用存储过程的目的是将常用或复杂的工作预 ...

  9. MySQL中的存储过程、游标和存储函数

    MySQL中的存储过程首先来看两个问题: 1.什么是存储过程? 存储过程(Stored Procedure)是在数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存 ...

  10. mysql(函数,存储过程,事务,索引)

    函数 MySQL中提供了许多内置函数: 内置函数 一.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND( ...

随机推荐

  1. (转)Ctrl+H 浪潮Raid配置文档

    说明 本手册适用于LSI芯片Raid卡 包括但不限于Inspur 2008/2108 Raid卡.LSI 9240/9260/9261/9271 等Raid卡. 不同型号的Raid卡在某些功能上的支持 ...

  2. win10系统180天试用到期需要激活

    激活时激活不了,需要先修复下:4-Win10yjjh_XiTongZhiJia 链接: https://pan.baidu.com/s/1M_aNu2bqtEVn3l8FXsa91A 提取码: 784 ...

  3. 使用sqlite3解决IDEA中SVN更新提示cleanup却无法cleanup的问题

    用idea开发项目,更新svn有时莫名其妙的出现 Error:Error performing cleanup for 'D:\SourceProject\XXXX': svn: E155004: T ...

  4. VirtualBox下扩容vdi文件

    VirtualBox下扩容vdi文件 版本:VirtualBox 5.0.14 之前VirtualBox创建的虚拟机的vdi文件过小,无法满足新的实验需求,扩容vdi文件的方法如下: 比如我这里将RH ...

  5. react native 初识生命周期

    关于生命周期这块,我是看到慕课堂的一个视频,觉得将的很好,引入很容易理解,地址是:https://www.imooc.com/video/14288  如果你们想了解一下,也可以去看看 RN 组件的生 ...

  6. LeetCode155.最小栈

    设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- 删除栈顶的元素. top() -- 获取栈顶元素. ...

  7. C# 基于DocumentFormat.OpenXml的数据导出到Excel

    using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.S ...

  8. 7.线程id,优先级讲解

    1.线程id可以通过Thread对象的getId()方法得到,在线程出了问题,为什么CPU占用这么高的时候,查的时候我们可以在堆栈信息中找到对应线程,然后干掉该线程就好! 2.而线程对象的getNam ...

  9. 【转】robot framework + python实现http接口自动化测试框架

    前言 下周即将展开一个http接口测试的需求,刚刚完成的java类接口测试工作中,由于之前犯懒,没有提前搭建好自动化回归测试框架,以至于后期rd每修改一个bug,经常导致之前没有问题的case又产生了 ...

  10. 【Scala学习之二】 Scala 集合 Trait Actor

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...