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

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

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. 算法 -- 求最长公共字符串&PHP

    https://blog.csdn.net/hongyuancao/article/details/83308093 本文是利用PHP,求最长公共字符串.思路:利用动态规划和矩阵的思想. 动态规划:就 ...

  2. 【Java】-NO.16.EBook.4.Java.1.008-【疯狂Java讲义第3版 李刚】- 集合/容器

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.008-[疯狂Java讲义第3版 李刚]- 集合 Style:EBook Series:Java Si ...

  3. vue中兄弟组件间 的传值 bus(可以理解为公共交通)

    点击大儿子(头部组件的年月日,下面的都要变化) 就相当于点击了年月日之后,下面的组件重新调接口,参数变化       1.首先随便哪儿写个bus.js 内容如下: import Vue from 'v ...

  4. cocos2d JS touch屏幕点击事件监听 cc.EventListener.TOUCH

    var self = this; this.touchListener = cc.EventListener.create({ event: cc.EventListener.TOUCH_ONE_BY ...

  5. opencv之模糊处理

    初学OpenCV的开发者很容易被OpenCV中各种滤波方法所困扰,不知道到底该用哪里一个来做滤波.表面原因看起来是因为OpenCV中各种滤波方式实在是太多太杂, 其背后原因是对各种滤波方法的应用场景认 ...

  6. nginx空白图片(empty_gif模块)

    用过百度统计的兄弟有没有注意到百度使用1x1的空白图片传递统计参数,自己做异步统计的兄弟是否使用静态文件来传递参数.为什么使用空白图片呢,而不是自己存放一张小图呢,nginx里面的空白图片是保存在内存 ...

  7. C# JArray与JObject 的使用

    STEP1.using Newtonsoft.Json.Linq; STEP2 如何获取json里的某个属性(节点)值,对其删改,新增 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  8. __init__.py的作用

    __init__.py 文件定义了包的属性和方法.其实它可以什么也不定义:可以只是一个空文件,但是必须存在.如果 __init__.py 不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入 ...

  9. JavaScript(四):运算符&数据类型转换

    +:算符的加法:连接字符串 加法会将其它类型的值,自动转为字符串,然后再进行连接运算! var a=1+2; console.log('first: '+a); var a=1+2+'3';//先计算 ...

  10. CSS position &居中(水平,垂直)

    css position是个很重要的知识点: 知乎Header部分: 知乎Header-inner部分: position属性值: fixed:生成绝对定位的元素,相对浏览器窗口进行定位(位置可通过: ...