当前位置:网站首页>第十五章 mysql存储过程与存储函数课后练习
第十五章 mysql存储过程与存储函数课后练习
2022-08-09 22:53:00 【大数据小理】
第十五章 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;
- 创建存储过程insert_user(),实现传入用户名和密码,插入到admin表中
- 创建存储过程get_phone(),实现传入女神编号,返回女神姓名和女神电话
- 创建存储过程date_diff(),实现传入两个女神生日,返回日期间隔大小
- 创建存储过程format_date(),实现传入一个日期,格式化成xx年xx月xx日并返回
- 创建存储过程beauty_limit(),根据传入的起始索引和条目数,查询女神表的记录
创建带inout模式参数的存储过程 - 传入a和b两个值,最终a和b都翻倍并返回
- 删除题目5的存储过程
- 查看题目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’;
边栏推荐
- 离散选择模型之Gumbel分布
- [Cloud native] Kubernetes orchestration tools
- IT传奇人物菲尔德的转型经验教训及给CIO的建议
- 70. Stair Climbing Advanced Edition
- Eureka自我保护
- conda新建环境时报错NotWritableError: The current user does not have write permissions
- Alibaba Cloud SMS Service Activation
- Filament-Material 绘制基本图形
- MQTT X Web:在线的 MQTT 5.0 客户端工具
- 用函数统计最长单词的字母数量
猜你喜欢
随机推荐
Dry goods!Towards robust test-time adaptation
MVC与MVVM模式的区别
技术盛宴!华云数据携六大议题亮相OpenInfra Days China
How to match garbled characters regularly?
微信小程序获取微信用户步数
JSON对象和字符串相互转化
完全背包理论
Has your phone ever been monitored?
了解什么是架构基本概念和架构本质
Eureka自我保护
【云原生】一文讲透Kubevela addon如何添加腾讯Crane
Sqlserver restricts the ip under which accounts can access the database
redis distributed lock code example
【诗歌】最高级的惩罚就是沉默
直播间搭建,按钮左滑出现删除等操作按钮
领跑政务云,连续五年中国第一
直播app开发搭建,flutter 实现自适应、自动换行、相对布局
【JZOF】77 Print binary tree in zigzag
6款跨境电商常用工具汇总
经济衰退即将来临前CIO控制成本的七种方法









