MQL实验(三)视图与游标

1.建立计算机系学生的视图student_cs,视图中包含sno,sname,dept,sex,totalcredit。使用select命令显示视图中的数据。

sql 复制代码
create view student_cs as 
select student.sno,sname,dept,sex,totalcredit from student 
where dept='计算机';
select * from student_cs;

create view student_cs as

2.向student_cs视图中录入学生sno:001242,sname:王五,dept:通信工程,sex:女,totalcredit:40,并用select命令查询显示上述录入的sno,sname,dept,sex,totalcredit信息。

sql 复制代码
insert into student(sno,sname,dept,sex,totalcredit)
values('001242','王五','通信工程','女','40');
select sno,sname,dept,sex,totalcredit from student where sno=001242;

3.建立通信工程系选修了"计算机基础"课程且成绩在80分以上的学生的视图,视图中包括sno,sname,cname,grade。用select命令显示视图中所有数据。

sql 复制代码
create view shitu(sno,sname,cname,grade) as
select student.sno,sname,cname,grade from student
join score on student.sno=score.sno
join course on score.cno=course.cno
where cname='计算机基础' and grade>80 and dept='通信工程';
select *from shitu;

4.将学生的学号及其平均成绩定义为一个视图S_G,视图包括sno,avggrade两个字段。用select命令显示视图S_G所有数据。

sql 复制代码
create view S_G as
select score.sno,avg(grade) from score
group by sno;
select *from S_G;

5.将Score中课程成绩超过该课平均分的学生学号定义成一个视图GOOD_SC,视图包括cno,sno,grade。用select命令显示视图GOOD_SC所有内容。

sql 复制代码
create view GOOD_SC as
select score.sno ,score.cno,grade from score where 
grade>(select avg(grade)from score where cno=score.cno );
select *from GOOD_SC;

6.基于视图S_G查询"通信工程"系学生的平均成绩,要求输出sno,sname,avggrade。

sql 复制代码
select student.sno,sname,avggrade from S_G join student on S_G.sno=student.sno
where dept='通信工程';

7.雇员表employees结构定义如下:(表中的数据由系统提供)

CREATE TABLE employees (

id INT,

name VARCHAR(50) NOT NULL,

salary DECIMAL(20, 2) NOT NULL,

PRIMARY KEY (id)

);

编写带有游标的存储过程,实现为职工长10%的工资。从最低工资开始长,最后工资总额限制在60万元以内。将涨过工资的职工id、name、涨后的工资,存入下面的临时表temp。

CREATE TABLE temp (

id INT,

name VARCHAR(50) NOT NULL,

salary DECIMAL(20, 2) NOT NULL

);

特别提示:要求编写存储过程后,用call命令调用过程,并用select命令显示temp表中的内容。

sql 复制代码
delimiter $$
create procedure updatesalaries() 
begin
    DECLARE curid INT;   
    DECLARE curname VARCHAR(50);   
    DECLARE cursal DECIMAL(20,2);   
    DECLARE flat TINYINT DEFAULT 0;   
    DECLARE sum DECIMAL(20,2);   
    DECLARE cur CURSOR FOR 
    SELECT id,name,salary FROM employees ORDER BY salary;   
declare continue handler for not found set flat=1;
select sum(salary) into sum from employees;
open cur;
 label:loop
       fetch cur into curid,curname,cursal;
       if flat=1 then  
          leave label;
       end if;
       if sum>600000 then
          leave label;
       end if;
       update employees set salary=salary*1.1 where id=curid;
       set sum=sum+cursal*0.1;
       insert into temp values(curid,curname,cursal*1.1);
  end loop label;
end $$
delimiter ;
call updatesalaries();
select * from temp;
相关推荐
云水一下5 小时前
从零开始!VMware安装Fedora Workstation 44桌面系统完整教程
前端
HackTwoHub6 小时前
AI大模型网关存在SQL注入、附 POC 复现、影响版本LiteLLM 1.81.16~1.83.7(CVE-2026-42208)
数据库·人工智能·sql·网络安全·系统安全·网络攻击模型·安全架构
l1t6 小时前
DeepSeek总结的DuckLake构建基于 SQL 原生表格式的下一代数据湖仓
数据库·sql
KmSH8umpK6 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第八篇
数据库·redis·分布式
小码哥_常6 小时前
安卓黑科技:实现多平台商品详情页一键跳转APP
前端
killerbasd6 小时前
还是迷茫 5.3
前端·react.js·前端框架
TDengine (老段)6 小时前
从施工监测到运营预警,桥科院用 TDengine 提升桥梁数据管理能力
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
不会敲代码17 小时前
TCP/IP 与前端性能:从数据包到首次渲染的底层逻辑
前端·tcp/ip
kyriewen7 小时前
奥特曼借GPT-5.5干杯,而你的Copilot正按Token收钱
前端·github·openai
AC赳赳老秦7 小时前
投标合规提效:用 OpenClaw 实现标书 / 合同自动审核、关键词校验、格式优化,降低废标风险
开发语言·前端·python·eclipse·emacs·deepseek·openclaw