肖sir__mysql之存储练习题__013

实验
一、

实验要求:

  1. 理解存储过程的概念
  2. 掌握存储过程的语法格式、使用方法
  3. 掌握存

储过程的创建、执行
二、实验前提:
– drop table if exists student;
– Create table student
– (Id varchar(255), #学号
– Name varchar(255), #姓名
– Roomid varchar(255), #班级
– Sex char(1), #性别
– Degree varchar(3) );#成绩;
Insert into student value

s(‘1’,‘amy’,‘8’,‘0’,‘65’);
Insert into student values(‘2’,‘bob’,‘4’,‘1’,‘80’);
Insert into student values(‘3’,‘candy’,‘6’,‘0’,‘70’);
Insert into student values(‘4’,‘danny’,‘8’,‘1’,‘90’);
Insert into student values(‘5’,‘edward’,‘8’,‘1’,‘95’);
Insert into student values(‘6’,‘frank’,‘7’,‘1’,‘100’);
在这里插入图片描述
1:创建一个存储过程,实现查询表student中的记录信息,并执行存储过程
建一个存储
结果:查询表student中的记录信息,
方法1:
delimiter //
drop procedure IF EXISTS xx;
CREATE PROCEDURE xx ()
BEGIN
SELECT * FROM student;
END//

call xx;

2:创建一个存储过程,根据给定的学生学号返回该学生的姓名
结果:学生姓名
条件:
语句:
select name from student wehre id =x
select name into y from student wehre id =x
方法:
delimiter //
create procedure student3(in x int(10),out y varchar(10))
BEGIN
select Name into y from student where id=x;
END //

call student3(1,@y)
select @y

3:创建一个存储过程,根据所给的班级的编号,统计该班人数,并将人数以输出变量返回给用户。
结果:
条件:roomid =x
select count(name) into y from roomid= x
方法:
delimiter //
create PROCEDURE student10(in z varchar(225),out x varchar(225))
begin
select count(id)into x from student where roomid =z;
END
//

call student10(“8”,@x)
select @x

方法2:
delimiter //
create PROCEDURE p3 (in x varchar(255) , out v int(10))
begin

SELECT count(student.Id) into v from student where student.Roomid=x ;

SELECT @v;

END//

call p3(‘8’,@v);
4:创建一个存储过程,根据所给的学号查询该学生的考试分数是否超过了85分, 若超过则输出“ 考得好”, 否则输出 “考得不好”。

结果:

85 “考的好”
考的不好

条件:select degree from student where id =x
判断if

方法1:
delimiter //
DROP PROCEDURE IF EXISTS stu4;
CREATE PROCEDURE stu4(IN x VARCHAR(225))
BEGIN
IF (SELECT Degree FROM student s WHERE x=s.Id)>85 THEN
SELECT “考得好”;
ELSE
SELECT “考得不好”;
END IF;
END
//
CALL stu4(5)

方法2:
delimiter //
create procedure student5(in x varchar(255), out y varchar(255))
BEGIN
select level into y from (select *, case when Degree >85 then “考得好” when Degree <=85 then “考得不好” end level from student) a where Id=x;
END
//

call student5(4,@y)
select @y

方法3:
drop procedure studentresult;
delimiter//
create procedure studentresult(in stuid varchar(20),out sturesult varchar(20))
begin
select degree into sturesult from student where id = stuid;
if(sturesult > 85) then
select ‘考得好’ ;
elseif(sturesult < 85) then
select ‘考得不好’ ;
end if;
end;
//
call studentresult(4,@sturesult);
方法4:
delimiter//
create procedure p6(in x int(10) )
BEGIN
DECLARE exam_score int DEFAULT (SELECT Degree FROM student WHERE Id = x);

IF exam_score > 85 THENSELECT '考得好' ;
ELSESELECT '考得不好' ;
END IF;

END//

call p6(4)

实验5:创建一个存储过程,对表student增加两条记录。

1,已建表,在插入数据
方法1:
drop procedure studentinsert;
delimiter//
create procedure studentinsert()
begin
insert into student values(7,‘mary’,7,1,75);
insert into student values(8,‘smith’,6,0,92);
end
//
call studentinsert();
select * from student;
方法2:
delimiter //
CREATE procedure cc()
BEGIN
declare i int DEFAULT (select count(id) from student) ;
insert into student(id) VALUES(i+1) ;
insert into student(id) VALUES(i+2) ;
select * from student ;
END
//

call cc()

2、不存在表,在如数据
a、方法1:

delimiter//
create procedure p7(in a int(10),in b VARCHAR(255),in a1 int(10),in b1 VARCHAR(255))
BEGIN
drop table if EXISTS s1;
create table s1(sid int(10) PRIMARY key,sname VARCHAR(255) );
insert into s1 VALUES (a,b);
insert into s1 VALUES (a1,b1);
SELECT * from s1;
end//
call p7(9,‘aa’,10,‘bb’)

6:请撰写一个存储过程,输出各班学生的平均成绩。
结果:avg(degree)
分组: roomid
select avg(degree) from student group by roomid;
方法:
drop procedure studentavg;
delimiter//
create procedure studentavg()
begin
select avg(degree) from student group by roomid;
end
//
call studentavg();

7:请撰写一个存储过程,能根据用户输入的学号,输出学生的姓名、性别到两个参数变量中,以供其它程序使用。
结果:姓名、性别
条件:
方法1select name,sex into m,n from id=x

drop procedure if exists studentnamesex ;
delimiter//
create procedure studentnamesex(in stuid varchar(20),out stuname varchar(20),out stusex char(10))
begin
select name,sex into stuname ,stusex from student where id = stuid;
end
//
call studentnamesex(1,@stuname,@stusex);
select @stuname,@stusex;

方法2:
select name into m from id=x
select sex into n from id=x

drop procedure if exists studentnamesex ;
delimiter//
create procedure studentnamesex(in stuid varchar(20),out stuname varchar(20),out stusex char(10))
begin
select name into stuname from student where id = stuid;
select sex into stusex from student where id = stuid;
end
//
call studentnamesex(1,@stuname,@stusex);
select @stuname,@stusex;

方法3:
drop procedure if exists studentnamesex ;
delimiter//
create procedure studentnamesex(in stuid varchar(20))
begin
set@y=(select name from student where id = stuid);
set@z=(select sex from student where id = stuid);
select @y,@z ;
end
//
call studentnamesex(1);

8:撰写一个存储过程,根据用户输入的学号,输出学生性别,成绩两个参数放到新表temp中Create table temp(Sex varchar(255),Degree varchar(255));

结果:性别,成绩
条件:输入的学号 ,建表

方法1:
delimiter //
drop procedure if EXISTS student2 ;
create procedure student2(in x int(10))
BEGIN
drop table if exists temp;
create table temp(Sex1 char(1) , Degree1 varchar(3));
insert into temp(Sex1,Degree1) select Sex,Degree from student where x=Id;
select * from temp;
end
//

call student2(2)

方法2:

delimiter //
drop PROCEDURE if EXISTS p9 ;
create PROCEDURE p9( in I int(10),out s VARCHAR(255),out d VARCHAR(255))
BEGIN

SELECT Sex,Degree into s,d from student where Id = I ;
SELECT @s,@d;
drop table if EXISTS temp;
Create table temp(Sex varchar(255),Degree varchar(255));
insert into temp VALUES(@s,@d);
SELECT * from temp;
END

call p9(2,@s,@d)
方法3:

两张表的字段一致,插入数据:
方法一:insert into 目标表 select * from 来源表;#插入全部数据
方法二:insert into 目标表(字段 )select 字段1,字段2 from 来源表。

9:请撰写一个存储过程,求1+2+3+…x的值。
方法1:
delimiter //
drop procedure if exists he;
create procedure he(inout x int(10))
BEGIN
set x=x*(x+1)/2;
END

set @x=10
call he(@x)
select @x

方法2:
drop procedure if exists studentadd1;
delimiter//
create procedure studentadd1(in x varchar(20))
begin
declare result varchar(255) default 0;
while x > 0 do
set result = result + x;
set x = x - 1;
end while;
select result;
end;
//
call studentadd1(10);

方法3:

Delimiter //
Create procedure stu9(in x VARCHAR(225))
Begin
Declare i int default 1;
Declare num int default 0;
While i<=x do
Set num=num+i;
Set i=i+1;
End while;
Select num;
End
//
call stu9(10)

请撰写一个存储过程,求0+2+4+…x的值。
方法1:
delimiter //
drop PROCEDURE if EXISTS p11;
create PROCEDURE p11(in x int)
BEGIN

DECLARE i int DEFAULT 0;
DECLARE s int DEFAULT 0;
WHILE i<=x do

set s=i+s;
set i=i+2;
end WHILE ;
select s;
END//

call p11(10)
方法2:
drop procedure if exists studentadd1;
delimiter//
create procedure studentadd1(in x varchar(20))
begin
declare result varchar(255) default 0;
while x > 0 do
set result = result + x;
set x = x - 2;
end while;
select result;
end;
//
call studentadd1(10);

请撰写一个存储过程,求1+3+5+…x的值。

方法:
delimiter //
drop PROCEDURE if EXISTS p11;
create PROCEDURE p11(in x int)
BEGIN

DECLARE i int DEFAULT 1;
DECLARE s int DEFAULT 0;
WHILE i<=x do

set s=i+s;
set i=i+2;
end WHILE ;
select s;
END//

call p11(10)

方法2:
drop procedure if exists studentadd1;
delimiter//
create procedure studentadd1(in x varchar(20))
begin
declare result varchar(255) default 0 ;
while x > 0 do
set result = result + x;
set x = x - 2;
end while;
select result;
end;
//
call studentadd1(9);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/85303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生成式模型和判别式模型区别

目录 1.概念 2.定义​ 3.举例​ &#xff08;1&#xff09;例子 A​ &#xff08;2&#xff09;例子 B​ 4.特点 5.优缺点 6.代表算法 1.概念 首先我们需要明确&#xff0c;两种不同的模型都用于监督学习任务中。监督学习的任务就是从数据中学习一个模型&#xff0c;并用…

golang优先级坑

看如下代码&#xff0c;我本以为a1, a2是相同的 package mainimport "fmt"func main() {b, c, d : 1, 0, 1a1 : b ^ c&(^d) // 1 ^a2 : c ^ b&(^d) // 0 ^fmt.Println(a1, a2) // 1 0 }但结果却是不同的&#xff0c;在golang中&的优先级^和&#xff5c;…

使用 PyTorch 的计算机视觉简介 (1/6)

一、说明 Computer Vision&#xff08;CV&#xff09;是一个研究计算机如何从数字图像和/或视频中获得一定程度的理解的领域。理解这个定义具有相当广泛的含义 - 它可以从能够区分图片上的猫和狗&#xff0c;到更复杂的任务&#xff0c;例如用自然语言描述图像。 二、CV常见的问…

RocketMQ高性能核心原理与源码架构剖析

文章目录 1、源码环境搭建1.1、主要功能模块1.2、源码启动服务1.2.1、 启动nameServer1.2.2、 启动Broker1.2.3、 发送消息1.2.4、 消费消息 2、源码剖析2.1、NameServer的启动过程2.2、Broker服务启动过程2.3、Netty服务注册框架2.3.1、关注重点2.3.2、源码重点 1、源码环境搭…

AJAX学习

文章目录 创建 XMLHttpRequest 对象向服务器发送请求XMLHttpRequest.open()XMLHttpRequest.send()GET或POST 服务器响应XMLHttpRequest 的属性XMLHttpRequest.readyStateXMLHttpRequest.onreadystatechangeXMLHttpRequest.responseXMLHttpRequest.responseTypeXMLHttpRequest.r…

OpenAI官方吴达恩《ChatGPT Prompt Engineering 提示词工程师》(7)聊天机器人 / ChatBot

聊天机器人 / ChatBot 使用大型语言模型来构建你的自定义聊天机器人 在本视频中&#xff0c;你将学习使用OpenAI ChatCompletions格式的组件构建一个机器人。 环境准备 首先&#xff0c;我们将像往常一样设置OpenAI Python包。 import os import openai from dotenv import…

ruoyi框架修改左侧菜单样式

菜单效果 ruoyi前端框架左侧的菜单很丑&#xff0c;我们需要修改一下样式&#xff0c;下面直接看效果。 修改代码 1、sidebar.scss .el-menu-item, .el-submenu__title {overflow: hidden !important;text-overflow: ellipsis !important;white-space: nowrap !important;//…

vue3——pixi初学,编写一个简单的小游戏,复制粘贴可用学习

pixi官网 小游戏效果 两个文件夹 一个index.html 一个data.js //data.js import { reactive } from "vue"; import { Sprite, utils, Rectangle, Application, Text, Graphics } from "pixi.js";//首先 先创建一个舞台 export const app new Applicat…

QT配置MySQL数据库 ninja: build stopped: subcommand failed

QT配置MySQL数据库 我当前的软件版本&#xff1a;QT Creator 10.0.2 (community)&#xff0c;MingW 6.4.3 (QT6)&#xff0c;MySQL 8.0。 MySQL不配置支持的数据库有QList("QSQLITE", "QODBC", "QPSQL")&#xff0c;这个时候是不支持MYSQL数据…

[极客大挑战 2019]RCE ME 取反绕过正则匹配 绕过disable_function设置

目录 取反 1.蚁剑插件绕过 2.baypass disable_function open_dir/disable_function putenv()/LD_PRELOAD 来绕过限制 利用条件 利用思路 有意思。。。。 <?php error_reporting(0); if(isset($_GET[code])){$code$_GET[code];if(strlen($code)>40){die("Th…

windbg -I之后如何恢复原有的

直接运行了一下windbg -I&#xff0c;抓取了注册表行为&#xff0c;然后这里记录一下&#xff0c;方便翻阅。 抓取到的windbg的注册表 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger 将值改为 "C:\WINDOWS\system32\vsji…

git 本地工作区和仓库区基本使用

(1)git 本地有三个区 工作区和暂存区和 git管理的仓库. &#xff08;自行动手实践理解,然后就入门了&#xff09;(2)本地初次使用git做的事情,需要做如下工作 git config --global user.name "xx" git config --global user.email xxxqq.com git config --globa…

java 工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

编写第一个Go程序

编写第一个Go程序 1. 开发环境构建 在Go语言中&#xff0c;开发环境的构建需要设置GOPATH环境变量。在1.8版本之前&#xff0c;必须显式设置GOPATH环境变量。而在1.8版本及之后&#xff0c;如果没有设置GOPATH&#xff0c;Go将使用默认值。 在Unix系统上&#xff0c;默认值为…

基于YOLOv8模型的条形码二维码检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8模型的条形码二维码检测系统可用于日常生活中检测与定位条形码与二维码目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测…

Android12之仿Codec2.0实现传递编解码器组件本质(四十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

多策略改进蜣螂优化--螺旋搜索+最优值引导+反向学习策略

声明&#xff1a;对于作者的原创代码&#xff0c;禁止转售倒卖&#xff0c;违者必究&#xff01; 关于蜣螂算法的原理网上有很多&#xff0c;本文就不再详细介绍&#xff0c;本期算法是作者在参考了网上一些文献后自行改进的&#xff0c;接下来直接上改进策略&#xff1a; ①螺…

十六)Stable Diffusion教程:出图流程化

今天说一个流程化出图的案例&#xff0c;适用很多方面。 1、得到线稿&#xff0c;自己画或者图生图加线稿lora出线稿&#xff1b;如果想sd出图调整参数不那么频繁细致&#xff0c;则线稿的素描关系、层次、精深要表现出来&#xff0c;表现清楚。 2、文生图&#xff0c;seed随机…

前后端分离毕设项目之springboot同城上门喂遛宠物系统(内含文档+源码+教程)

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

Quartz 建表语句SQL文件

SQL文件在jar里面&#xff0c;github下载 https://github.com/quartz-scheduler/quartz/releases/tag/v2.3.2 解压&#xff0c;sql文件路径&#xff1a;quartz-core\src\main\resources\org\quartz\impl\jdbcjobstore tables_mysql_innodb.sql # # In your Quartz propertie…