肖sir__mysql之存储练习题__013

news2024/11/18 21:52:01

实验
一、

实验要求:

  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 THEN
    SELECT '考得好' ;
ELSE
    SELECT '考得不好' ;
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.coloradmin.cn/o/1025103.html

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

相关文章

4、wireshark使用教程

文章目录 一、wireshark简介二、环境三、wireshark抓包三、wireshark过滤器使用 一、wireshark简介 Wireshark是使用最广泛的一款「开源抓包软件」&#xff0c;常用来检测网络问题、攻击溯源、或者分析底层通信机制。 Wireshark抓包原理&#xff1a; 单机情况&#xff1a;电脑…

Java中常见的线程池

一、Java中常见的线程池 1.为什么使用线程池 重用线程池的线程&#xff0c;避免因为线程的创造和销毁所带来的性能开销。有效控制线程池的最大并发数&#xff0c;避免大量的线程之间因抢占系统资源而阻塞。能够对线程进行简单的管理&#xff0c;并提供一些特定的操作&#xf…

PY32F003F18之DMA串口

PY32F003F18使用DMA串口&#xff0c;官方程序省FLASH&#xff0c;但不省内存。单片机内存够大&#xff0c;节省没意义&#xff0c;故做了修改&#xff0c;少用HAL库中的发送和接收&#xff0c;从里面抠出有用的部分&#xff0c;修修改改就可以了。 一、DMA串口初始化流程&…

未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序

1.第一步&#xff1a;下载 Microsoft Access Database Engine Microsoft Access Database Engine 2010 Redistributable Download 2.第二步: 安装下载的引擎软件 3.第三步&#xff1a;重新连接&#xff1b; 代码如下: private void button1_Click(object sender, EventArgs …

【M malloc送书第二期】朋友圈大佬都去读研了,这份备考书单我码住了!

文章目录 01 《**数据结构与算法分析**》02 《计算机网络&#xff1a;自顶向下方法》03 《现代操作系统》04 《深入理解计算机系统》01 《概率论基础教程&#xff08;原书第10版》03 《线性代数及其应用》 八九月的朋友圈刮起了一股晒通知书潮&#xff0c;频频有大佬晒出“研究…

从统计语言模型到预训练语言模型---统计语言模型

语言模型 从历史上来看&#xff0c; 自然语言处理的研究范式变化是从规则到统计&#xff0c; 从统计机器学习到基于神经网络的深度学习&#xff0c;这同时也是语言模型发展的历史。要了解语言模型的发展历史&#xff0c;首先我们需要认识什么是语言模型。语言模型的目标是建模…

RT-Thread I/O设备模型框架

I/O 设备模型框架 RT-Thread提供了一套简单的I/O设备模型框架&#xff0c;如图所示&#xff0c;它位于硬件和应用程序之间&#xff0c;共分成三层&#xff0c;从上到下分别是I/O设备管理层、设备驱动框架层、设备驱动层。 应用程序通过I/O设备管理接口获得正确的设备驱动&…

【AI视野·今日CV 计算机视觉论文速览 第249期】Tue, 19 Sep 202

AI视野今日CS.CV 计算机视觉论文速览 Tue, 19 Sep 2023 (showing first 100 of 152 entries) Totally 152 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers GEDepth: Ground Embedding for Monocular Depth Estimation Authors Xiaodong Yang…

【vue3页面展示代码】展示代码codemirror插件

技术版本&#xff1a; vue 3.2.40、codemirror 6.0.1、less 4.1.3、vue-codemirror 6.1.1、 codemirror/lang-vue 0.1.2、codemirror/theme-one-dark 6.1.2 效果图&#xff1a; 1.安装插件 yarn add codemirror vue-codemirror codemirror/lang-vue codemirror/theme-one-dar…

ChatGpt介绍和国产ChatGpt对比

1.ChatGPT是美国OpenAI研发的聊天机器人程序&#xff0c;2022年11月30日发布。ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过理解和学习人类的语言来进行对话。 2.ChatGPT是一种基于自然语言处理的聊天机器人程序。它使用深度学习技术&#xff0c;通过对…

A+CLUB管理人支持计划第八期 | 量创投资

免责声明 本文内容仅对合格投资者开放&#xff01; 私募基金的合格投资者是指具备相应风险识别能力和风险承担能力&#xff0c;投资于单只私募基金的金额不低于100 万元且符合下列相关标准的单位和个人&#xff1a; &#xff08;一&#xff09;净资产不低于1000 万元的单位&…

抖 X-Bongus 参数逆向 python案例实战

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 知识点&#xff1a; 动态数据抓包 requests发送请求 X-Bogus 参数逆向 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 requests pip ins…

python从入门到精通(一)

自己也有三四年的码龄了&#xff0c;目前&#xff0c;重拾起自己的博客&#xff0c;记录自己的学习笔记&#xff0c;为大家提供优质内容&#xff0c;也来巩固自己的学习内容。 很开心也成功成为了一名研究生&#xff0c;张张的研究方向是图像处理和计算机视觉这一块&#xff0c…

k8s手动下载镜像、通过容器创建镜像方法

手动下载镜像 1、首先pull镜像到本地 docker pull <镜像名称>:<标签>2、转储镜像 docker save -o /path/to/save/image.tar 3、解压 tar -xvf /path/to/save/image.tar补充 1、如果要将tar还原成镜像 docker load -i /path/to/save/image.tar或者用输入重定向…

Win10专业版开启远程桌面

Win10专业版开启远程桌面 方法一&#xff1a; 一、按“Win R”键&#xff0c;然后输入“sysdm.cpl”并按下回车键打开系统属性。 二、选择“远程”选项卡&#xff0c;在远程桌面中勾选“允许远程连接到此计算机”就可以开启远程桌面&#xff1b; 方法二&#xff1a; 一、打…

融云受邀参加 Web3.0 顶级峰会「Meta Era Summit 2023」

本周四 19:00-20:00&#xff0c;融云直播课 社交泛娱乐出海最短变现路径如何快速实现一款 1V1 视频应用&#xff1f; 欢迎点击上方小程序报名~ 9 月 12 日&#xff0c;由中国香港 Web3.0 媒体 Meta Era 主办的“Meta Era Summit 2023”在新加坡收官&#xff0c;融云作为战略合作…

Window11专业版安装Java环境

目录 一、首先准备好一个Java的环境包 二、在Windows11上双击运行此环境包 三、根据提示安装完成后&#xff0c;在此电脑上属性中搜索环境变量 四、配置环境变量、并验证 一、首先准备好一个Java的环境包 二、在Windows11上双击运行此环境包 按着要求进行下一步操作&#…

数据丢失防护工具

什么是数据丢失防护 数据丢失防护 &#xff08;DLP&#xff09; 涉及系统地识别、定位和评估具有内容和上下文感知的数据和用户活动&#xff0c;以应用策略或主动响应来防止数据丢失。静态、使用和动态数据必须受到持续监控&#xff0c;以发现企业数据存储、使用或共享方式的偏…

Docker-如何获取docker官网x86、ARM、AMD等不同架构下的镜像资源

文章目录 一、概要二、资源准备三、环境准备1、环境安装2、服务器设置代理3、注册docker账号4、配置docker源 四、查找资源1、服务器设置代理2、配置拉取账号3、查找对应的镜像4、查找不同版本镜像拉取 小结 一、概要 开发过程中经常会使用到一些开源的资源&#xff0c;比如经…

股票量化系统QTYX开启全自动实盘之路——第一弹easytrader库搭建本地自动交易环境...

搭建全自动化量化系统 股票量化交易系统QTYX最终形态是一款全自动化的量化交易系统。 接下来我们通过一个系列逐步把QTYX升级为全自动的系统。当前为第一篇&#xff1a;使用easytrader库搭建本地自动交易环境 股票的自动化交易接口在2015年之后就被管制了&#xff0c;于是对于普…