第十五章 mysql存储过程与存储函数课后练习

第十五章 MYSQL存储过程与存储函数课后练习

存储过程练习
0.准备工作
使用dbtest1数据库

CREATE TABLE admin(
id INT PRIMARY KEY AUTO_INCREMENT,
user_name VARCHAR(15) NOT NULL,
pwd VARCHAR(25) NOT NULL
);

CREATE TABLE beauty(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(15) NOT NULL,
phone VARCHAR(15) UNIQUE,
birth DATE
);
INSERT INTO beauty(NAME,phone,birth)
VALUES
(‘朱茵’,‘13201233453’,‘1982-02-12’),
(‘孙燕姿’,‘13501233653’,‘1980-12-09’),
(‘田馥甄’,‘13651238755’,‘1983-08-21’),
(‘邓紫棋’,‘17843283452’,‘1991-11-12’),
(‘刘若英’,‘18635575464’,‘1989-05-18’),
(‘杨超越’,‘13761238755’,‘1994-05-11’);
SELECT * FROM beauty;

  1. 创建存储过程insert_user(),实现传入用户名和密码,插入到admin表中
  2. 创建存储过程get_phone(),实现传入女神编号,返回女神姓名和女神电话
  3. 创建存储过程date_diff(),实现传入两个女神生日,返回日期间隔大小
  4. 创建存储过程format_date(),实现传入一个日期,格式化成xx年xx月xx日并返回
  5. 创建存储过程beauty_limit(),根据传入的起始索引和条目数,查询女神表的记录
    创建带inout模式参数的存储过程
  6. 传入a和b两个值,最终a和b都翻倍并返回
  7. 删除题目5的存储过程
  8. 查看题目6中存储过程的信息

1. 创建存储过程insert_user(),实现传入用户名和密码,插入到admin表中
CREATE TABLE admin(
id INT PRIMARY KEY AUTO_INCREMENT,
user_name VARCHAR(15) NOT NULL,
pwd VARCHAR(25) NOT NULL
);
DELIMITER //
CREATE PROCEDURE insert_user(IN username VARCHAR(20),IN loginPwd VARCHAR(20))
BEGIN
INSERT INTO admin(user_name,pwd)
VALUES(username,loginpwd);
END //
DELIMITER ;

调用
CALL insert_user(‘lili’,‘abcappp’);
SELECT * FROM admin;
多次调用的话,表里面的数据不断增加

2. 创建存储过程get_phone(),实现传入女神编号,返回女神姓名和女神电话 in 传入编号后 out 便传出姓名和电话
DELIMITER //
CREATE PROCEDURE get_phone(IN id INT,OUT NAME VARCHAR(20),OUT phone VARCHAR(20))
BEGIN
SELECT b.name ,b.phone INTO NAME,phone
FROM beauty b
WHERE b.id = id;
END //
DELIMITER ;

调用
CALL get_phone(3,@name,@phone);
SELECT @name,@phone;

3. 创建存储过程date_diff(),实现传入两个女神生日,返回日期间隔大小
用 in 传入两个女生的生日 用 out 传出两个生日间隔的日期大小

DELIMITER //
CREATE PROCEDURE date_diff(IN birth1 DATETIME,IN birth2 DATETIME,OUT result INT)
BEGIN
SELECT DATEDIFF(birth1,birth2) INTO result;
END //
DELIMITER ;
调用
SET @birth1 = ‘1992-09-08’;
SET @birth2 = ‘1989-01-03’;
CALL date_diff(@birth1,@birth2,@result);
SELECT @result;

4. 创建存储过程format_date(),实现传入一个日期,格式化成xx年xx月xx日并返回日期传入,格式化后传出
DELIMITER //
CREATE PROCEDURE format_date(IN mydate DATETIME,OUT strdate VARCHAR(50))
BEGIN
SELECT DATE_FORMAT(mydate,‘%y年%m月%d日’) INTO strDate;
END //
DELIMITER ;

调用
SET @mydate = ‘1992-09-08’;
CALL format_date(@mydate,@strdate);
SELECT @strdate;

5. 创建存储过程beauty_limit(),根据传入的起始索引和条目数,查询女神表的记录传入起始值,传入记录数(偏移量),传出表中的记录
DELIMITER //
CREATE PROCEDURE beauty_limit(IN startIndex INT,IN size INT)
BEGIN
SELECT * FROM beauty LIMIT startIndex,size;
END //
DELIMITER ;

调用
CALL beauty_limit(1,3);
创建带inout模式参数的存储过程

6. 传入a和b两个值,最终a和b都翻倍并返回 重要
DELIMITER //
CREATE PROCEDURE add_double(INOUT a INT ,INOUT b INT)
BEGIN
SET a = a * 2;
SET b = b * 2;
END //
DELIMITER ;
调用
SET @a = 3,@b = 5;
CALL add_double(@a,@b);
SELECT @a,@b;

7. 删除题目5的存储过程
DROP PROCEDURE beauty_limit;

8. 查看题目6中存储过程的信息
创建信息
SHOW CREATE PROCEDURE add_double;
状态信息
SHOW PROCEDURE STATUS LIKE ‘add_double’;

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据小理

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值