MySQL练习

MySQL存储过程练习

实验要求

  1. 根据编号查询名字【传入编号,获取名字】
  2. 根据编号查询vip的名字(传入编号,获取名字和性别)
  3. 创建过程,根据输入的成绩编号【pk】,获取该学号,科目号以及成绩
  4. 根据考试号查找学生的名字,科目名字,以及成绩
  5. 使用存储函数|过程 传入学号,获取学生的姓名,总分,平均分
  6. 输入,科目名字,学时,以及gradeid ,将该数据插入到数据库
  7. 根据传入的科目编号删除科目信息,如果该科目以及被考过试,则不能删除

实验过程

  1. 根据编号查询名字【传入编号,获取名字】
delimiter $$
	create procedure test01(id varchar(20), out sName varchar(20))
	begin
		select studentName into sName from students where studentNo = id;
	end$$
delimiter;

call test01('s1001',@sname);

select @sname;
  1. 根据编号查询vip的名字(传入编号,获取名字和性别)
delimiter $$
	create procedure test02(id varchar(20), out sName varchar(20), out gender varchar(5))
	begin 
		select studentName, sex into sName,gender from students where studentNo = id;
	end$$
delimiter;

call test02('s1001', @sname, @gender);

select @sname, @gender;
  1. 创建过程,根据输入的成绩编号【pk】,获取该学号,科目号以及成绩
delimiter $$
	create procedure test03(sid int, out stuid varchar(20), out subid int(5), out score varchar(10))
	begin
		select studentNo,subjectId,studentScore into stuid,subid,score from achievements where id = sid;
	end$$
delimiter;

call test03(1, @id, @subid, @score);

select @id, @subid, @score;
  1. 根据考试号查找学生的名字,科目名字,以及成绩
delimiter $$
	create procedure test04(eid int, out sName varchar(20), out subName varchar(20), out score varchar(10))
	begin
		select s.studentName, a.studentScore, sub.subjectName 
		into sName, score, subName from students s inner join 
		achievements a on a.studentNo = s.studentNo inner join 
		subjects sub on sub.subjectId = a.subjectId 
		where a.id = eid;
	end$$
delimiter;

call test04(1, @sName, @subName, @score);

select @sName, @subName,@score;
  1. 使用存储函数|过程 传入学号,获取学生的姓名,总分,平均分
delimiter $$
	create procedure test05(sid varchar(20), out sName varchar(20), out total varchar(20), out average varchar(20))
	begin
		select studentName into sName from students where studentNo = sid;
		select SUM(studentScore), AVG(studentScore) into total, average from achievements where studentNo = sid;
	end$$
delimiter;

call test05('s1001', @sName, @total, @average);

select @sName, @total, @average;
  1. 输入,科目名字,学时,以及gradeid ,将该数据插入到数据库
delimiter $$
	create procedure test06(subName varchar(20), subHour int, gid int(5))
	begin
		insert into subjects values(null, subName, subHour, gid);
	end$$
delimiter;

call test06('测试', 20, 1);

SELECT * from subjects;

在这里插入图片描述

  1. 根据传入的科目编号删除科目信息,如果该科目以及被考过试,则不能删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值