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

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

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. C语言strcasecmp()函数:判断字符串是否相等(忽略大小写)

    头文件:#include <string.h> 定义函数:int strcasecmp (const char *s1, const char *s2); 函数说明:strcasecmp( ...

  2. linux下automake用法

    linux下automake用法 2017年02月06日 09:21:14 阅读数:3684 标签: makemakefilegnulinux   作为Linux下的程序开发人员,大家一定都遇到过Ma ...

  3. MySQL 基础 备份和恢复

    数据库备份 mysqldump [args] > file_name 例如:备份所有数据库 shell> mysqldump --all-databases > dump.sql # ...

  4. fiddler抓取https-----重要

    原文地址https://www.cnblogs.com/joshua317/p/8670923.html 很多使用fiddler抓包,对于http来说不需太多纠结,随便设置下就能用,但是抓取https ...

  5. gitlab4.0->5.0->6.0->7.14->8.0->8.2升级

    参考官方文档: https://gitlab.com/gitlab-org/gitlab-ce/tree/master/doc/update 本地服务器为4.0.1版本  1)4.0.1->4. ...

  6. react的props验证

    Props 验证使用 propTypes,它可以保证我们的应用组件被正确使用,React.PropTypes 提供很多验证器 (validator) 来验证传入数据是否有效. 当向 props 传入无 ...

  7. redis_bj_01

    windows下安装redis 下载地址https://github.com/dmajkic/redis/downloads.下载到的Redis支持32bit和64bit.根据自己实际情况选择,我选择 ...

  8. oracle数据库数值类型

    ---恢复内容开始--- 内容摘自网络 Oracle的数值类型有int,number,float,decimal,numberic等. NUMBER类型   定义   定义格式NUMBER (prec ...

  9. 20171130-2-python orm

    https://www.cnblogs.com/pycode/p/mysql-orm.html https://www.cnblogs.com/Hiberniane/archive/2011/01/3 ...

  10. base64的编码

    计算机中的数据一般是由ascii编码,来存储的, 0---31以及127,表示的是控制字符: 32-126表示的是字符,包括空格,阿拉伯数字,大小写字母: 之后的128个字符,是不可见的字符, 在网络 ...