当前位置: 首页 > news >正文

存储的测试题目

实验
一、

实验要求:

  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 values('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');
SELECT * FROM student

备注:(1)返回值 就是要输出 out
(2)显示考的好,不好 select "考的好,不好"

1:创建一个存储过程,实现查询表student中的所有信息,并执行存储过程
delimiter//
DROP PROCEDURE if EXISTS cc8;
CREATE PROCEDURE cc8()
BEGIN
SELECT * FROM student;
END
//
call cc8()
image

2:创建一个存储过程,根据给定的学生(学号)显示学生的(姓名)
delimiter//
DROP PROCEDURE if EXISTS cc8;
CREATE PROCEDURE cc8(in x int(20),out y VARCHAR(20))
BEGIN
SELECT Name into y FROM student WHERE id=x;
END
//
call cc8(1,@y)
SELECT @y
image

3:创建一个存储过程,根据所给的班级的(编号),(统计该班人数),(并将人数以输出变量返回给用户)。
delimiter//
DROP PROCEDURE if EXISTS cc8;
CREATE PROCEDURE cc8(in x int(20),out y VARCHAR(20))
BEGIN
SELECT count(*)into y FROM student WHERE Roomid=x;
END
//
call cc8(2,@y)
SELECT @y
image

四4:创建一个存储过程,根据所给的学号查询该学生的考试分数是否超过了85分, 若超过则输出“ 考得好”, 否则输出 “考得不好”。
解决方法一:
delimiter //
drop procedure if EXISTS cc8;
create procedure cc8(in x varchar(255))
BEGIN
if (SELECT degree FROM student where id=x)>85 THEN
select "考得好";
ELSE
select "考得不好";
END if;
end
//
call cc8(1)
解决方法二:
delimiter //
drop procedure if EXISTS sc;
create procedure sc(in x varchar(255))
BEGIN
DECLARE i int DEFAULT(select degree from student where id=x);
if 85<i THEN
select "考得好";
ELSE
select "考得不好";
END if;
end
//
call sc(5)
image

五.实验5:创建一个存储过程,对表student增加两条记录。
DROP PROCEDURE if EXISTS cc8;
delimiter //
CREATE procedure cc8(IN x int(10))
DECLARE i int default (select count(*) from student);
WHILE (i+1<x) do
INSERT into student(id) VALUES (i);
SET i=i+1;
END WHILE;
select * from student;
end //
call stu_c6(9)

DROP PROCEDURE if EXISTS cc8;
delimiter //
CREATE procedure cc8( )
BEGIN
DECLARE i int default (select count(*) from student);

INSERT into student(id) VALUES (i+1);
INSERT into student(id) VALUES (i+2);

select * from student;
end //
call cc8()
image

6:请撰写一个存储过程,输出各班学生的平均成绩。

delimiter//
DROP PROCEDURE if EXISTS cc8;
CREATE PROCEDURE cc8()
BEGIN
select avg(degree) from student group by roomid;
END
//
call cc8()
image

7:请撰写一个存储过程,能根据用户输入的学号,输出学生的姓名、性别到两个参数变量中,以供其它程序使用。

delimiter //
drop procedure if EXISTS cc8;
CREATE procedure cc8(in x int(10),out y VARCHAR(255),out z char(1))
BEGIN
SELECT Name,Sex into y,z from student where Id=x;
END
//
call cc8(1,@y,@z);
SELECT @y,@z;
image

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

两张表的字段一致,插入数据:
方法一:insert into 目标表 select * from 来源表;#插入全部数据
方法二:insert into 目标表(字段 )select 字段1,字段2 from 来源表。
解决方法一:
delimiter //
drop procedure if EXISTS cc8;
CREATE procedure cc8(in x int(20))
BEGIN
DECLARE a VARCHAR(255) DEFAULT (SELECT sex from student where id=x);
DECLARE b VARCHAR(255) DEFAULT (SELECT degree from student where id=x);
INSERT into temp VALUES(a,b);
END //
CALL cc8(3)
select * from temp ;
解决方法二:
delimiter //
drop procedure if EXISTS cc8;
CREATE procedure cc8(in x int(20))
BEGIN
DECLARE a VARCHAR(255) DEFAULT (SELECT sex from student where id=x);
DECLARE b VARCHAR(255) DEFAULT (SELECT degree from student where id=x);
drop table if EXISTS temp ;
Create table temp(Sex varchar(255),Degree varchar(255));
INSERT into temp VALUES(a,b);
select * from temp ;
END //
CALL cc8(3)

drop table if exists temp;
create table temp(Sex varchar(255),Degree varchar(255));
image

解决方法三:
delimiter//
drop procedure if exists cc8;
create procedure cc8(in x int)
begin
insert into temp(sex,degree)
select sex,degree from student where id=x;
end //
call cc8(3);
select * from temp;
image

9:请撰写一个存储过程,求1+2+3+…x的值。
delimiter//
drop procedure if exists aa1;
create procedure aa1(in x int)
begin
DECLARE jg int(20);
set jg=(x+1)*x/2;
select jg;
end
//
call aa1(10);
2.
delimiter//
drop procedure if exists aa1;
create procedure aa1(in x int)
begin
DECLARE a int DEFAULT 1;
DECLARE b int DEFAULT 0;
while a<x+1 do
set b=b+a;
set a=a+1;
end WHILE;
select b;
end
//
call aa1(10);
image

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

delimiter//
drop procedure if exists aa1;
create procedure aa1(in x int)
begin
DECLARE a int DEFAULT 1;
DECLARE b int DEFAULT 0;
while a<x+1 do
set b=b+a;
set a=a+2;
end WHILE;
select b;
end
//
call aa1(10);

请撰写一个存储过程,求0+2+4+…x的值。
delimiter//
drop procedure if exists aa1;
create procedure aa1(in x int)
begin
DECLARE a int DEFAULT 0;
DECLARE b int DEFAULT 0;
while a<x+1 do
set b=b+a;
set a=a+2;
end WHILE;
select b;
end
//
call aa1(10);

http://www.jsqmd.com/news/294490/

相关文章:

  • P5569 [SDOI2008] 石子合并
  • 上海小学生补习提分实测!这4家机构亲测靠谱,家长闭眼抄作业
  • C++课后习题训练记录Day79
  • 2026年免费公众号排版工具推荐:5款新媒体人必备神器丨微信编辑器哪个好
  • Django 用 Loguru 完美替换标准 Logging,实现优雅的日志管理方案
  • 2026小学辅导机构实测TOP4|宝妈必藏!精准选机构不踩雷
  • 2026年广州节日定制礼盒公司推荐:广州甄选食材有限公司,精品礼盒定制/定制礼盒/礼盒包装定制/包装礼盒定制/高档礼盒定制公司精选
  • 小学辅导机构怎么选?这3个硬指标帮你避坑
  • 2026年保健食品集合店优选:供应链实力大比拼,进口保健食品/保健食品/进口热销品集合店,保健食品集合店加盟代理有哪些
  • 【Django毕设源码分享】基于 Python 的考研学习系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 【Django毕设源码分享】基于Python的毕业生去向反馈调查平台的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 2026济南雅思培训学校深度测评TOP5:高分提分方案谁更靠谱?
  • 【Django毕设源码分享】基于django的学生选课系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 避坑指南:如何选择靠谱的雅思培训?2026季度综合评分排行榜出炉
  • 救命神器8个AI论文网站,专科生搞定毕业论文不求人!
  • 认识 Promise
  • WebApp 本地部署全景指南(实战版)
  • 雅思课培训机构深度测评排行榜:从行业痛点解析到优选方案(2026版)
  • 吐血推荐!10个AI论文网站测评:本科生毕业论文必备工具
  • 实测封神!2026高中线上补习班TOP5:选对1家,提分少走3年弯路
  • 连接数据库并部署到Linux上使用Docker Compose编排的go语言网络聊天室
  • 性价比高的太原文创伴手礼定制厂家
  • 工程化思维破解协同与锁死难题:Java企业的AI集成新思路
  • 2025年商业邮件诈骗攻击趋势深度解析
  • ijkplayer相关实用链接
  • 云上 + 私有化:Java 企业 AI 模型调用的双向适配方
  • 名校冲刺攻略:揭秘2026高提分培优机构
  • 2026济南雅思培训学校深度测评TOP榜:济南优质机构口碑排名与高效提分方案解析
  • 2026沪上培优大揭秘:这些机构凭实力出圈
  • 全网最全9个一键生成论文工具,自考学生必备!