SQL案例-高校信息管理系统实现要求

news/2025/2/23 4:20:29/

SQL案例-高校信息管理系统实现要求

(1) 建表

stuInfo(学生信息表)

字段名称数据类型说明
stuName字符学生姓名,该列必填,要考虑姓氏可能是两个字的,如欧阳俊雄
stuNo字符学号,该列必填,学号不能重复,且必须是S253XX格式
stuSex字符学生性别,该列必填,且只能是“男”或“女”。因为男生较多,默认为“男”
stuAge数字学生年龄,该列必填,必须在15~50岁之间
stuSeat数字学生的座位号,不用人工输入,采用自动编号方式,且必须是1~30号
stuAddress文本学生地址,该列可不填,如没有填写,默认为“地址不详”

stuMarks(学生成绩表)

字段名称数据类型说明
examNo字符考号,该列必填,且不能重复,必须是E200507XXXX格式
stuNo字符学号 ,该列必填,且必须在学生基本信息表中有相关记录
writtenExam数字学生笔试成绩,数据必须是0~100分之间,不填默认为0分
labExam数字学生机试成绩,数据必须是0~100之间,不填默认为0分

(2) 加约束

(3) 建关系

(4) 插入数据

插入数据时注意:

  1. 其中有一名学员的地址不详,因此请将其中一名学生的地址设为空
  2. 有一名学员机试缺考,因此他的机试成绩请设为空
  3. 有一名学员因病,所有的考试都没有参加.

数据样板

在这里插入图片描述

建表

create table stuinfo(stuName varchar2(40) not null,stuNo varchar2(10) primary key constraint CK_stuNo check(stuNo like 'S253__'),stuSex varchar2(2) default '男'constraint CK_stuSex check(stuSex in('男','女')),stuAge intconstraint CK_stuAge check(stuAge between 15 and 30),stuSeat intconstraint CK_stuSeat check(stuSeat between 1 and 30),   --要求座位号只能在1-30之间,超过30从1开始重新自增stuAddress varchar2(100) default '地址不详'
);create table stuMarks(examNo varchar2(20) not nullconstraint CK_examNo check(examNo like 'E200507____'),stuNo varchar2(10) not nullconstraint FK_sNo references stuInfo(stuNo),writtenExam Numeric(5,2) default 0constraint CK_we check(writtenExam between 0 and 100),labExam Numeric(5,2) default 0constraint CK_le check(labExam between 0 and 100)
);-- 序列定义
create sequence seq_stuinfo_stuSeat start with 1 increment by 1 maxvalue 30 cycle cache 10;-- 触发器  获取插入的最新序列值
create or replace trigger tri_stuinfo
before insert on stuinfo
for each row
beginselect seq_stuinfo_stuSeat.nextval into :new.stuSeat from dual;
end;

数据插入

insert into stuInfo values('张秋丽','S25301','男',18,1,'湖南衡阳');
insert into stuInfo values('李斯文','S25303','女',22,1,'河南洛阳');
insert into stuInfo values('李文才','S25302','男',20,1,default);
insert into stuInfo values('欧阳俊雄','S25304','男',28,1,'新疆威武哈');
insert into stuInfo values('张丽','S25306','男',18,1,'北京海淀');insert into stuMarks(ExamNo,stuNo,writtenExam,LabExam) values('E2005070001','S25301',80,58);
insert into stuMarks(ExamNo,stuNo,writtenExam) values('E2005070002','S25302',50);
insert into stuMarks(ExamNo,stuNo,writtenExam,LabExam) values('E2005070003','S25303',97,82);select * from stuInfo;

每人的笔试成绩都提5分

update stuMarks set writtenexam = writtenexam+5 where writtenexam <= 95;

100分封顶(加分后超过100分的,按100分计算)

case when then 实现

update stuMarks set wittenExam = (case when wittenExam + 5 >100 then 100 else wittenExam + 5  end )

cursor 实现

declarecursor cur_smks is select * from stuMarks for update
beginfor v_smks in cur_smks loopif v_smks.wittenExam + 5 > 100 thenupdate stuMarks set writtenexam = 100 where current of cur_smks;elseupdate stuMarks set writtenexam = writtenexam+5 where current of cur_smks;end if;end loop;
end;   

http://www.ppmy.cn/news/88088.html

相关文章

【ES】---ES的基本操作

目录 一、前言二、Jest client和Rest client使用2.1、Rest client方式三、Rest client方式3.1、基本操作一、前言 ES有4种客户端,分别是:Jest client、Rest client、Transport client、Node client。 ES支持两种协议 HTTP协议,支持的客户端有Jest client和Rest client Nati…

3步轻松获取Pandas DataFrame任意单元格值

在Pandas处理DataFrame数据的过程中&#xff0c;我们时常需要获取某个具体的单元格值进行操作。那么如何高效而灵活地从Pandas DataFrame中提取任意一个单元格的值呢? 今天分享在Pandas DataFrame获取单元格值的3大方法: 第一步:.loc[]方法&#xff0c;传入行列标签 使用.loc…

Java | 一分钟掌握定时任务 | 9 - PowerJob分布式定时任务

作者&#xff1a;Mars酱 声明&#xff1a;本文章由Mars酱整理编写&#xff0c;部分内容来源于网络&#xff0c;如有疑问请联系本人。 转载&#xff1a;欢迎转载&#xff0c;转载前先请联系我&#xff01; 前言 我们选择一套框架或者技术的时候&#xff0c;一定要知道它的特点和…

带你深入理解自定义View和自定义ViewGroup

自定义 View 和自定义 ViewGroup 是 Android 开发中常见的两种自定义视图的方式。它们允许开发者根据自己的需求和设计来创建完全定制的界面元素。下面将详细介绍自定义 View 和自定义 ViewGroup&#xff0c;并对它们的实现和使用进行解析。 一、自定义 View 自定义 View 是指…

Java中常见的垃圾回收器 Serial、Parallel、CMS、G1 和 ZGC简介

Java中有几种常见的垃圾回收器&#xff0c;每种垃圾回收器都有其特定的工作方式和回收策略。下面列举了常见的Java垃圾回收器&#xff0c;并对其进行详细说明。 Serial 垃圾回收器&#xff1a; 回收过程&#xff1a;单线程回收器&#xff0c;使用标记-清除算法。它首先暂停所…

统信UOS系统开发笔记(一):国产统信UOS系统搭建开发环境之虚拟机安装

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/130876940 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

BSN-DDC基础网络详解(十二):算力中心开发者门户部署说明(2)

05 环境准备 环境验证 输出验证命令并展示输出结果&#xff0c;要与基础环境核对无误&#xff0c;包括网络 硬件环境验证 cpu核数验证 cat /proc/cpuinfo | grep -i "model name" | wc -l 内存大小验证 free -h 磁盘大小验证 df -h 输出结果&#xff1a; …

面试:解决跨域

1.通过 jsonp 跨域 2.document.domain iframe 跨域 3.location.hash iframe 4.window.name iframe 跨域 5.postMessage 跨域 6.跨域资源共享&#xff08;CORS) 7.nginx 代理跨域 8.nodejs 中间件代理跨域 9.WebSocket 协议跨域 10.proxy 代理解决跨域 解决跨域的方…