MySQL笔记(八)存储过程练习&补充
存储过程有什么优缺点?为什么要用存储过程?或者在什么情况下才用存储过程?
最直白的好处是存储过程比较快。
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、相关
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笔记(八)存储过程练习&补充的更多相关文章
- MySQL笔记---视图,存储过程, 触发器的使用入门
大二学数据库的时候,只是隐约听到老师提起过视图啊,存储过程啊,触发器啊什么的,但只是淡淡的记住了名字,后来自己做些小项目,小程序,也没有用上过,都只是简单的建表,关联表之类的,导致我对这些东西的理解只 ...
- mysql学习笔记:存储过程
use test; drop table if exists t8; CREATE TABLE t8(s1 INT,PRIMARY KEY(s1)); drop procedure if exists ...
- MySQL笔记(六)游标练习
23.3.1 Trigger Syntax and Examples 意义不明的几道练习,留着备用. 感觉不好写,而且难以调试..不知道以后会不会有实际的应用场景. 环境:MySQL 笔记(三)由 t ...
- 最全mysql笔记整理
mysql笔记整理 作者:python技术人 博客:https://www.cnblogs.com/lpdeboke Windows服务 -- 启动MySQL net start mysql -- 创 ...
- MySQL笔记汇总
[目录] MySQL笔记汇总 一.mysql简介 数据简介 结构化查询语言 二.mysql命令行操作 三.数据库(表)更改 表相关 字段相关 索引相关 表引擎操作 四.数据库类型 数字型 字符串型 日 ...
- 涂抹mysql笔记-数据库中的权限体系
涂抹mysql笔记-数据库中的权限体系<>能不能连接,主机名是否匹配.登陆使用的用户名和密码是否正确.mysql验证用户需要检查3项值:用户名.密码和主机来源(user.password. ...
- 【MySQL笔记】SQL语言四大类语言
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL. 1. 数据查询语言DQL 数据查询语言DQL基本结构是由SELECT子句,FROM子句, ...
- MySQL学习——操作存储过程
MySQL学习——操作存储过程 摘要:本文主要学习了使用DDL语句操作存储过程的方法. 了解存储过程 是什么 存储过程是一组为了完成特定功能的SQL语句集合. 使用存储过程的目的是将常用或复杂的工作预 ...
- MySQL中的存储过程、游标和存储函数
MySQL中的存储过程首先来看两个问题: 1.什么是存储过程? 存储过程(Stored Procedure)是在数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存 ...
- mysql(函数,存储过程,事务,索引)
函数 MySQL中提供了许多内置函数: 内置函数 一.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND( ...
随机推荐
- C语言strcasecmp()函数:判断字符串是否相等(忽略大小写)
头文件:#include <string.h> 定义函数:int strcasecmp (const char *s1, const char *s2); 函数说明:strcasecmp( ...
- linux下automake用法
linux下automake用法 2017年02月06日 09:21:14 阅读数:3684 标签: makemakefilegnulinux 作为Linux下的程序开发人员,大家一定都遇到过Ma ...
- MySQL 基础 备份和恢复
数据库备份 mysqldump [args] > file_name 例如:备份所有数据库 shell> mysqldump --all-databases > dump.sql # ...
- fiddler抓取https-----重要
原文地址https://www.cnblogs.com/joshua317/p/8670923.html 很多使用fiddler抓包,对于http来说不需太多纠结,随便设置下就能用,但是抓取https ...
- 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. ...
- react的props验证
Props 验证使用 propTypes,它可以保证我们的应用组件被正确使用,React.PropTypes 提供很多验证器 (validator) 来验证传入数据是否有效. 当向 props 传入无 ...
- redis_bj_01
windows下安装redis 下载地址https://github.com/dmajkic/redis/downloads.下载到的Redis支持32bit和64bit.根据自己实际情况选择,我选择 ...
- oracle数据库数值类型
---恢复内容开始--- 内容摘自网络 Oracle的数值类型有int,number,float,decimal,numberic等. NUMBER类型 定义 定义格式NUMBER (prec ...
- 20171130-2-python orm
https://www.cnblogs.com/pycode/p/mysql-orm.html https://www.cnblogs.com/Hiberniane/archive/2011/01/3 ...
- base64的编码
计算机中的数据一般是由ascii编码,来存储的, 0---31以及127,表示的是控制字符: 32-126表示的是字符,包括空格,阿拉伯数字,大小写字母: 之后的128个字符,是不可见的字符, 在网络 ...