数据库——学生成绩管理 SQL语句
学生成绩管理系统——SQL数据库技术
《SQL数据库技术》课程设计一、题目:学生成绩管理二、因为我做的是学生成绩管理,所以数据库中至少有个一个表是来存储学生的各课成绩的。
有了学生成绩,得知道这个成绩是哪个学生的,所以此表中也得有学生姓名,但是学生姓名肯定有重复的,所以得必须有个标志来惟一标识一个学生,所以得给每个学生一个编号(学号),但是也得必须清楚,这个成绩是哪门课程的,所以给课程定义了一个编号。
之后,得想到有了学生成绩表,总得有个表来存放学生信息吧,所以又建立一个学生信息表,此表中的必须的字段得有学号、姓名、班级,其他的字段可以根据需要来添加。
然后就是得有个课程表来存放哪个教师教哪门课程信息,所以此表中至少得有课程号,课程名称和教师的惟一标识(教师编号),再有一个表来存放教师的信息的,其中的字段必须有教师编号,教师姓名和所在的部门,当然也可以有教师出生日期、职称、电话号码等字段。
总之,这个学生管理系统总共包括四个表学生信息表student、教师信息表teacher、成绩表score和课程表course。
Student表:在建表时,除了添加学号、姓名、班级必要字段,还添加一些其他的字段,比如:出生日期、性别、邮箱地址和类型等。
Teacher表:在建表时,除了添加教师编号,教师姓名,部门必要字段,还可以添加一些其他的字段,比如:出生日期、性别、和电话等。
Score表:此表应该包括学生学号、课程号和成绩等。
Course表:应包括课程号,对应的课程名称和教此课程的教师编号。
(1)、建立一个数据库,然后在此数据库中建立这四个数据表。
(2)、向表中添加记录。
(3)、用一些查询语句来查看表中的特定记录。
(4)、向表中添加一些字段。
如:向teacher表中添加字段tel(5)、创建一个自定义数据类型,并修改student表中的某个字段为此数据类型。
(6)、创建几个视图⏹查询某个班级的学生信息⏹查看每门课程的平均成绩⏹查看选修计算机课程的学生信息⏹查看所有男教师和所有男学生的信息(7)、创建几个存储过程● 显示成绩表中的课程号在课程表中且所任教师性别为男、计算机系的成绩表● 显示某学生的学号,姓名,所学课程号,课程名称和对应的成绩● 在执行此存储过程时,如果没有给出参数(学生姓名),则输入全部的学生的学号,姓名,班级,任课教师编号及其姓名,所学课程名称和成绩,如果有,则显示此学生的以上信息。
Sql语句之查询所有学生所有科目分数及总分
Sql语句之查询所有学⽣所有科⽬分数及总分
昨天练Sql语句,数据库建了四个表分别是,学⽣表,课程表,成绩表以及教师表(教师表不在讨论范围),突然想到以前⾼中时代⽼师⼿上的那张成绩表,然后我就寻思着能不能⽤Sql语句把表打印出来,以下是我的思考过程:
话不多说,先上三张表的图
如下图1.1学⽣表(Student表)
S#-学号 Sname-姓名 Sage-年龄 Ssex-性别
图1.1 Student表
如下图1.2课程表(Course表)
C#-课程号 Cname-课程名 T#-教师号
图1.2课程表 Course表
如下图1.3成绩表(CS表)
S#-学⽣号 C#-课程号 score-成绩
图 1.3课程表Course表
⾸先,我初步查询了所有⼈所有科⽬成绩
Sql语句如下:
查询结果如下:
成绩是打印出来了,可是有点不好看,重复的数据太多了,于是继续寻思精简⼀点的。
如果要精简,那么学科就不能是Cname了,⽽是将⼀个个学科打出来,就像成绩单,各科成绩名和列名在同⼀列,于是乎我想到了case then else end
sql语句如下:
然⽽结果并没有Group by,结果如下:
想来想去我就⽤表的联结join,然后成功了。
sql语句如下:
结果如下:
哦!忘记排名了:
重写sql如下:
结果如下:
另外有⼏科⽬成绩没有加进来,所以总分有些加了不够。
差不多就是这样了。
数据库课程设计学生成绩管理系统SQL
数学与计算机学院课程设计说明书课程名称: 大型数据库-课程设计课程代码: 8424141 题目: 学生成绩管理系统年级/专业/班:学生姓名:学号:开始时间:2012 年 6 月 12 日完成时间:2012 年6月30 日课程设计成绩:指导教师签名:年月日目录摘要 ............................................................................................................................ 错误!未定义书签。
引言 (3)1 开发环境 (3)1.1 硬件环境 (3)1.2 软件环境 (4)1.2.1 SQL Server 2005、Delphi7简单介绍 (4)2 需求分析 (6)2.1 信息需求 (6)2.2 功能需求 (6)3概念结构设计 (6)4逻辑结构设计 (6)5 数据库实现 (7)5.1 创建数据库 (7)5.2 创建数据表格 (8)6数据库的运行和维护 (9)6.1 数据定义 (9)6.2 数据查询 (10)6.2.1 单表查询 (10)6.2.2 连接查询 (10)6.2.3 操作结果集查询 (11)6.2.4 嵌套查询 (11)6.3 数据库的更新 (11)6.3.1插入数据 (11)6.3.2 修改数据 (11)6.3.3 删除数据 (12)6.4 数据库索引 (12)6.4.1 建立索引 (12)6.4.2 删除索引 (12)6.4 数据库视图 (12)6.5 数据库的安全性 (14)6.6数据库的完整性 (14)7 Delphi7软件实现 (15)7.1 界面设计 (15)7.2 数据库连接 (16)7.3 登陆权限 (16)7.3.1 用户登陆设计 (16)7.3.2 权限管理设计 (16)7.4 管理界面 (17)7.5 查询界面 (17)7.6 统计界面 (17)7.7 报表界面 (17)2程序测试 (18)8.1 测试环境 (18)8.2功能测试 (18)8.3 问题汇总 (18)结论 (18)参考文献 (19)引言在我国,各大中小学校的各类信息管理系统并非一个新的课题。
学生各门课程成绩统计SQL语句大全
学⽣各门课程成绩统计SQL语句⼤全学⽣成绩表(stuscore):姓名:name课程:subject分数:score学号:stuid张三数学891张三语⽂801张三英语701李四数学902李四语⽂702李四英语802创建表SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[stuscore]( [name] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL, [subject] [varchar](50) COLLATE Chinese_PRC_CI_A问题:1.计算每个⼈的总成绩并排名(要求显⽰字段:姓名,总成绩)2.计算每个⼈的总成绩并排名(要求显⽰字段: 学号,姓名,总成绩)3.计算每个⼈单科的最⾼成绩(要求显⽰字段: 学号,姓名,课程,最⾼成绩)4.计算每个⼈的平均成绩(要求显⽰字段: 学号,姓名,平均成绩)5.列出各门课程成绩最好的学⽣(要求显⽰字段: 学号,姓名,科⽬,成绩)6.列出各门课程成绩最好的两位学⽣(要求显⽰字段: 学号,姓名,科⽬,成绩)7.如下:学号姓名语⽂数学英语总分平均分8.列出各门课程的平均成绩(要求显⽰字段:课程,平均成绩)9.列出数学成绩的排名(要求显⽰字段:学号,姓名,成绩,排名)10.列出数学成绩在2-3名的学⽣(要求显⽰字段:学号,姓名,科⽬,成绩)11.求出李四的数学成绩的排名12.如下:课程不及格(0-59)个良(60-80)个优(81-100)个13.如下:数学:张三(50分),李四(90分),王五(90分),赵六(76分)答案:1.计算每个⼈的总成绩并排名select name,sum(score) as allscore from stuscore group by name order by allscore2.计算每个⼈的总成绩并排名select distinct ,t1.stuid,t2.allscore from stuscore t1,( select stuid,sum(score) as allscore from stuscore group by stuid)t2where t1.stuid=t2.stuidorder by t2.allscore desc3. 计算每个⼈单科的最⾼成绩select t1.stuid,,t1.subject,t1.score from stuscore t1,(select stuid,max(score) as maxscore from stuscore group by stuid) t2where t1.stuid=t2.stuid and t1.score=t2.maxscore4.计算每个⼈的平均成绩select distinct t1.stuid,,t2.avgscore from stuscore t1,(select stuid,avg(score) as avgscore from stuscore group by stuid) t2where t1.stuid=t2.stuid5.列出各门课程成绩最好的学⽣select t1.stuid,,t1.subject,t2.maxscore from stuscore t1,(select subject,max(score) as maxscore from stuscore group by subject) t2where t1.subject=t2.subject and t1.score=t2.maxscore6.列出各门课程成绩最好的两位学⽣select distinct t1.* from stuscore t1 where t1.id in (select top 2 stuscore.id from stuscore where subject = t1.subject order by score desc) order by t1.subject7.学号姓名语⽂数学英语总分平均分select stuid as 学号,name as 姓名,sum(case when subject='语⽂' then score else 0 end) as 语⽂,sum(case when subject='数学' then score else 0 end) as 数学,sum(case when subject='英语' then score else 0 end) as 英语,sum(score) as 总分,(su8.列出各门课程的平均成绩select subject,avg(score) as avgscore from stuscoregroup by subject9.列出数学成绩的排名declare @tmp table(pm int,name varchar(50),score int,stuid int)insert into @tmp select null,name,score,stuid from stuscore where subject='数学' order by score descdeclare @id intset @id=0;update @tmp set @id=@id+1,pm=@idselect * from @ select DENSE_RANK () OVER(order by score desc) as row,name,subject,score,stuid from stuscore where subject='数学'order by score desc10. 列出数学成绩在2-3名的学⽣select t3.* from(select top 2 t2.* from (select top 3 name,subject,score,stuid from stuscore where subject='数学'order by score desc) t2 order by t2.score) t3 order by t3.score desc11. 求出李四的数学成绩的排名declare @tmp table(pm int,name varchar(50),score int,stuid int)insert into @tmp select null,name,score,stuid from stuscore where subject='数学' order by score descdeclare @id intset @id=0;update @tmp set @id=@id+1,pm=@idselect * from @12. 课程不及格(-59)良(-80)优(-100)select subject, (select count(*) from stuscore where score<60 and subject=t1.subject) as 不及格,(select count(*) from stuscore where score between 60 and 80 and subject=t1.subject) as 良,(select count(*) from stuscore where score >80 and su13. 数学:张三(50分),李四(90分),王五(90分),赵六(76分)declare @s varchar(1000)set @s=''select @s =@s+','+name+'('+convert(varchar(10),score)+'分)' from stuscore where subject='数学' set @s=stuff(@s,1,1,'')print '数学:'+@s。
用mysql实现学生成绩管理代码
用mysql实现学生成绩管理代码学生成绩管理是教育行业中非常重要的一项工作,它涉及到学生的学习情况、成绩统计、课程安排等多方面内容。
为了更好地管理学生成绩数据,我们可以利用MySQL数据库来实现学生成绩管理代码,实现高效的学生成绩管理。
一、数据库设计在开始实现学生成绩管理代码之前,我们首先要进行数据库设计。
为了存储学生信息和成绩数据,我们可以创建两张表:学生表和成绩表。
学生表包含以下字段:-学号(id):唯一标识学生的编号,也是该表的主键。
-姓名(name):学生的姓名。
-班级(class):学生所在的班级。
成绩表包含以下字段:-学号(id):学生的学号,也是该表的外键,与学生表中的id字段关联。
-课程(course):学生所修的课程。
-成绩(score):学生在该门课程上的成绩。
二、创建数据库和表在MySQL命令行中,我们可以使用以下SQL语句创建学生成绩管理数据库和相应的表:```CREATE DATABASE student_score;USE student_score;CREATE TABLE student ( id INT PRIMARY KEY, name VARCHAR(50), class VARCHAR(50));CREATE TABLE score ( id INT, course VARCHAR(50), score INT, FOREIGN KEY (id) REFERENCES student(id));```三、插入数据在完成数据库和表的创建之后,我们可以向学生表和成绩表中插入数据。
以下是向学生表中插入学生信息的示例:```INSERT INTO student (id, name, class) VALUES (1, '张三', '一班'), (2, '李四', '二班'), (3, '王五', '一班');```以下是向成绩表中插入学生成绩的示例:```INSERT INTO score (id, course, score) VALUES (1, '数学', 90), (1, '英语', 85), (2, '数学', 95), (2, '英语', 80), (3, '数学', 88), (3, '英语', 92);```四、查询数据在学生成绩管理中,我们经常需要查询学生的成绩信息。
sql学生成绩管理系统
一、创建学生成绩管理数据库1、学生成绩管理数据库概念模型(E—R图)如下:2、在查询分析器中创建学生成绩管理数据库,数据库名为“学生成绩管理表”,物理文件的存储位置为:“E:\学生成绩管理表\XSCJGLB”;⑴打开查询分析器,在查询分析器中输入如下代码创建数据库CREATEDATABASE学生成绩管理表ONPRIMARY(NAME=XSCJGLB_DATA,FILENAME='E:\学生成绩管理表\XSCJGLB.MDF',SIZE=5,FILEGROWTH=10%)LOGON(NAME=XSCJGLB_LOG,FILENAME='E:\学生成绩管理表\XSCJGLB.LDF',SIZE=1,MAXSIZE=10,FILEGROWTH=10)⑵单击运行按钮,显示运行结果如图1所示图1建立数据库⑶在企业管理器中窗体示意图如图2所示图2企业管理器学生成绩管理数据库示意图3、根据数据库概念模型(E—R图)建立基本表如下:学生表(学号,姓名,性别,出生日期,系部,班级,备注)课程表(课程号,课程名,开课日期,任课教师)成绩表(学号,课程号,成绩)4、在查询分析器中在学生成绩管理数据库中新建表:USE学生成绩管理表CREATETABLE学生表(学号CHAR(8)PRIMARYKEYNOTNULL,姓名CHAR(10)NOTNULL,性别CHAR(2)NULL,出生日期SMALLDATETIMENOTNULL,系部CHAR(30)NULL,班级CHAR(30)NULL,备注TEXTNULL,CONSTRAINT约束1CHECK(性别IN('男','女'))) CREATETABLE课程表(课程号CHAR(4)PRIMARYKEYNOTNULL,课程名CHAR(30)NOTNULL,开课日期TINYINTNULL,任课教师CHAR(10)NULL,CONSTRAINT约束2CHECK(开课日期LIKE'[1-6]')) CREATETABLE成绩表(学号CHAR(8)NOTNULL,课程号CHAR(4)NOTNULL,成绩TINYINTNULL,CONSTRAINT约束3CHECK(成绩BETWEEN1AND100),CONSTRAINT约束4PRIMARYKEYCLUSTERED(学号,课程号),CONSTRAINT约束5FOREIGNKEY(学号)REFERENCES学生表(学号),CONSTRAINT约束6FOREIGNKEY(课程号)REFERENCES课程表(课程号),)⑸单击运行按钮,显示运行结果如图3所示图3建表示意图⑹在企业管理器中查看设计界面①在企业管理器中窗体示意图如图4所示图4企业管理器中各表②企业管理器中学生表设计示意图,图5所示图5学生表③企业管理器中课程表表设计示意图,图6所示图6课程表④企业管理器中成绩表设计示意图,图7所示图7成绩表二、在企业管理器中创建关系图⑴打开企业管理器中学生成绩管理表数据库,选择“关系图”,右击“关系图”选项,如图8所示,弹出快捷菜单⑵在弹出的快捷菜单中选中新建数据库关系图弹出图9对话框,单击【下一步】按钮,在可用的表中将学生表、成绩表、课程表添加到右侧列表框中,出现图10所示对话框,单击【下一步】查看选中的表,如图11所示图8关系图快捷菜单图9关系图向导对话框图10添加表对话框图11完成数据库关系向导⑶单击【完成】按钮,出现如图12所示关系图图12学生成绩管理表关系图⑷在弹出的“另存为”对话框中输入学生表关系图如图13所示图13保存学生表关系图三、在企业管理器中创建视图⑴打开企业管理器中学生成绩管理表数据库,选择“视图”,右击“视图”选项,如图14所示,弹出快捷菜单图14“视图”快捷菜单⑵在弹出的菜单中选择“新建视图命令”,将弹出“学生成绩管理表”中的“新视图”,如图15所示,在对话框上半部分的灰色框内右击,从弹出的快捷菜单中选择“添加表”命令,出现如图16所示“添加表”对话框图15新视图窗口图16添加表对话框⑶在“添加表”对话框内,选择表学生表、成绩表、课程表,单击【添加】按钮,关闭“添加表”对话框,返回新视图窗口,如图17所示图17添加表后视图⑷在列中选择要添加到视图中的字段,学号、课程号选择成绩表中的字段,每个字段只选一次,如图18所示图18向视图中添加所需字段⑸添加表后新视图窗口如图19所示图19添加表后视图⑹单击【保存】按钮,在“另存为”对话框中输入学生表视图,如图20所示,单击【确定】按钮,完成视图的建立图20保存视图四、使用VBCREATEDATABASE学生成绩管理表ONPRIMARY(NAME=XSCJGLB_DATA,FILENAME='d:\学生成绩管理表Bdata.mdf',SIZE=10,maxsize=500,FILEGROWTH=10)LOGON(NAME=XSCJGLB_LOG,FILENAME='d:\学生成绩管理表data.ldf',SIZE=5,MAXSIZE=100,FILEGROWTH=10)CREATETABLE学生表(学号CHAR(12)PRIMARYKEYNOTNULL,姓名CHAR(6)NOTNULL,性别CHAR(2)NULL,出生日期char(8)NOTNULL,系部CHAR(30)NULL,班级CHAR(30)NULL,CONSTRAINT约束1CHECK(性别IN('男','女')))createtable课程表(课程号CHAR(4)NOTNULL,课程名CHAR(30)NOTNULL,开课日期datetime,任课教师CHAR(10),CONSTRAINT约束2CHECK(开课日期LIKE'[1-6]'))alterTABLE成绩表(学号CHAR(12)NOTNULL,课程号CHAR(4)NOTNULL,成绩INTNULL,CONSTRAINT约束3CHECK(成绩BETWEEN1AND100),CONSTRAINT约束4PRIMARYKEYCLUSTERED(学号,课程号),CONSTRAINT约束5FOREIGNKEY(学号)REFERENCES学生表(学号),CONSTRAINT约束6FOREIGNKEY(课程号)REFERENCES课程表(课程号))createviewview1asselect学生表.姓名,成绩表.课程号,成绩表.成绩from学生表,成绩表where学生表.学号=成绩表.学号createviewview2asselect课程表.课程号,课程表.开课日期from课程表,成绩表where课程表.课程号=成绩表.课程号。
学生成绩管理系统数据库
课程编号# 课程名称 课程类型
学分 学时
选课 教师
教师编号#
电话 姓名 性别 学院
授课
三、逻辑结构设计阶段
逻辑结构是独立于任何一种数据模型的信息结构。逻辑结构的任务 是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支 持的数据模型相符合的逻辑结构,并对其进行优化。
E-R图向关系模型转化要解决的问题是如何将实体型和实体间的联系 转化为关系模式,如何确定这些关系模式的属性和码。
cno degch_class)
字段名
属性
cno
课程号
teano
教师号
char(10) char(10)
数据类型 char(10) char(10)
Not null Not null
字段权限 Not null Not null
五、数据库实现
1、创建数据表
一个完整的数据库不可缺少的就是数据表,若干个数据表的集合成一个数据库。数据表主要
四、物理设计阶段
数据库物理设计的任务是为上一阶段得到的数据库逻辑模式,即数据库 的逻辑结构选择合适的应用环境的物理结构,既确定有效地实现逻辑结 构模式的数据库存储模式,确定在物理设备上所采用的存储结构和存取 方法,然后对该存储模式进行性能评价、修改设计,经过多次反复,最 后得到一个性能较好的存储模式。数据库物理设计内容包括记录存储结 构的设计,存储路径的设计。
设计学生成绩管理数据库,包括课程、学生、教师、成绩四个关系, 其关系模式中对每个实体定义的属性如下(其中码用下横线标出):
课程信息表: 课程(课程号,课程名,课程类型,学分,学时) 学生信息表: 学生(学号,姓名,性别,年龄,专业,学院) 成绩表: 成绩(学号,课程名,成绩) 教师表: 教师(教师号,姓名,性别,学院,电话) 选课表: 选课(学号,课程号,成绩) 授课表: 授课(课程号,教师号)
基于SQL数据库设计的学生成绩管理系统
基于SQL数据库设计的学生成绩管理系统随着教育信息化的不断深入,学生成绩管理系统在学校教务管理中扮演着越来越重要的角色。
为了更好地管理学生成绩信息,提高教学效率,设计一个基于SQL数据库的学生成绩管理系统显得尤为重要。
本文将从数据库设计的角度出发,探讨如何构建一个高效、稳定的学生成绩管理系统。
1. 数据库设计在设计学生成绩管理系统的数据库时,首先需要考虑的是数据库的表结构。
一般来说,可以设计以下几张表:学生表(Student):包含学生的基本信息,如学号、姓名、性别、年龄等字段。
课程表(Course):包含课程的信息,如课程编号、课程名称、学分等字段。
成绩表(Score):记录学生的成绩信息,包括学生学号、课程编号、成绩等字段。
2. 数据库关系在学生成绩管理系统中,不同表之间存在着一定的关系。
一般来说,可以建立以下几种关系:学生与成绩之间是一对多的关系,即一个学生可以有多条成绩记录。
课程与成绩之间是多对一的关系,即多个学生可以选择同一门课程。
3. SQL查询设计完数据库结构和关系后,接下来就是编写SQL查询语句来实现对学生成绩信息的增删改查操作。
以下是一些常用的SQL查询语句示例:查询某个学生的所有成绩:SELECT * FROM Score WHEREstudent_id = 'xxx';查询某门课程的平均成绩:SELECT AVG(score) FROM Score WHERE course_id = 'xxx';查询某个学生某门课程的成绩:SELECT score FROM Score WHERE student_id = 'xxx' AND course_id = 'xxx';4. 数据库优化为了提高系统性能和查询效率,需要对数据库进行优化。
可以采取以下措施:添加索引:对经常用于查询条件的字段添加索引,加快查询速度。
规范化设计:避免数据冗余和不一致,提高数据存储效率。
数据库学生成绩管理SQL
重庆交通大学信息科学与工程学院课程设计报告书专业:计算机科学与技术(信息技术及应用)课程设计名称:数据处理技术基础题目:学生成绩管理班级:学号:姓名:指导教师:完成时间:成绩:重庆交通大学计算机与信息学院课程设计(实践课)任务书课程数据处理技术基础班级指导教师题目学生成绩管理完成时间主要内容题目:学生成绩管理现有某学校需要完成学生成绩的管理,具体信息如下:1 学生信息:学号(sno)、姓名(sname)、性别(sex)、出生日期(birthday)、民族(Nation)2 课程信息:课程代码(cno)、课程名称(cname)、学分(credit)3 学生成绩:学号(sno)、课程代码(cno)、成绩(score)具体要求见附页设计报告要求1.封面:(格式附后)2.课程设计任务书3.课程设计报告:⑴根据附页中的具体要求完成各个题目,各个题目只记录相关的SQL语句,并将所有的SQL语句按照题目顺序放入设计报告中;⑵将最终结果(三个表的数据)用图片方式放在您的设计报告中;⑶心得体会和参考资料说明:1 学生完成课程设计后,提交课程设计报告,要求文字通畅、字数不少于3000 字,打印设计报告并装订成册。
2 设计报告在2012年11月23日前完成;3 所有内容每位同学独立完成,若有雷同,双方成绩均以0分计。
指导时间安排星期周次一二三四五六日第2周5-8节…第9周5-8节指导地点双福软件实验室版面要求1.题目用黑体三号,段后距18磅(或1行),居中对齐;2.标题用黑体四号,段前、段后距6磅(或0.3行);3.正文用小四号宋体,行距为1.25倍行距;4.标题按“一”、“㈠”、“1”、“⑴”顺序编号。
重庆交通大学信息科学与工程学院课程设计报告一建立数据库第一种方法:可视化右击数据库然后点击新建数据库,会弹出一个对话框,在数据库名称中写入student631106060108,再点击确定,再刷新一下就有了。
第二种方法:sql语句不过要先建立名为sql的文件夹才可以create database student631106060108on primary(name='si631106060108',filename='g:\sql\si631106060108.mdf',size=3,maxsize=20,filegrowth=1)log on(name='si631106060108log',filename='g:\sql\si631106060108log.ldf',size=3,maxsize=100,filegrowth=1%)2 建立表1 建立学生信息表名create table s631106060108(sno char(8)not null primary key,sname varchar(10)not null,sex var char(2)not null,check(sex in('男','女')),birthday datetime null,nation char(2)null,)2 建立课程信息表名及数据录入create table c631106060108(cno char(6)not null primary key,cname varchar(10)not null,credit numeric(2,1)not null)3 建立成绩信息表名create table sc631106060108(sno char(8)not null,cno char(6)not null,score numeric(3)not null,check(score between 0 and 100),PRIMARY KEY(Sno,Cno))三信息录入1 学生信息表名数据录入insert s631106060108 values('08010101','张三','男','1992-05-02','汉') insert s631106060108 values('08050412','李梦才','男','1991-08-09','藏') insert s631106060108 values('08060945','王珊珊','女','1993-08-29','汉') insert s631106060108 values('08110207','杨彤','女','1994-05-30','汉') 2 课程信息表名数据录入insert c631106060108 values('080601','c语言','3')insert c631106060108 values('080602','数据结构','4')insert c631106060108 values('080603','数据库原理','4')insert c631106060108 values('080604','操作系统','4')insert c631106060108 values('080605','编译原理','3.5')3 成绩信息表名数据录入insert sc631106060108 values('08010101','080601','80')insert sc631106060108 values('08010101','080602','79')insert sc631106060108 values('08010101','080603','65')insert sc631106060108 values('08060945','080601','98')insert sc631106060108 values('08060945','080604','89')insert sc631106060108 values('08050412','080601','85')insert sc631106060108 values('08050412','080602','86')insert sc631106060108 values('08110207','080602','65')insert sc631106060108 values('08110207','080605','54')四 sql语句查询1create view s631_viewasselect*from s6311060601082create view s632_viewasselect*from s631106060108where(year(getdate())-year(birthday))>23 and sex ='男'3create view s633_viewasselect*from s631106060108where sname like'杨%'and nation ='藏'4create view s634_viewasselect sno,o,cname,scorefrom c631106060108 a,sc631106060108 bwhere score<60 and o=o5create view s635_viewasselect sno,o,cname,credit,scorefrom c631106060108 a,sc631106060108 bwhere credit>3.5 and score >60 and o=o6select a.sno,sname,sex,o,cname,scorefrom s631106060108 a,c631106060108 b,sc631106060108 c where a.sno=c.sno and o=oselect count(cno),count(distinct sno)from sc631106060108where sno in(select b.snofrom s631106060108 a,sc631106060108 bwhere a.sno=b.sno)8select sno as'学号',sum(score)as'总分',cast(avg(score)as decimal(3,1))as'平均分',max(distinct score)as'最高分',min(distinct score)as'最低分'from sc631106060108group by sno9select*from s631106060108where sno not in(select a.snofrom s631106060108 a,sc631106060108 bwhere a.sno=b.sno)10select*from s631106060108where sno in(select snofrom sc631106060108group by snoHaving count(*)=(select count(*)from c631106060108 ))11select a.sno,sname,o,cname,scorefrom s631106060108 a,c631106060108 b,sc631106060108 cwhere a.sno = c.sno and o = o and score in(select max(score)from sc631106060108)12select*from s631106060108where sno in(select snofrom sc631106060108where sno like'0807%')五 sql语句修改1delete from sc631106060108where sno='08110207'2delete from s631106060108where sno in(select snofrom s631106060108where sno not in(select a.snofrom s631106060108 a,sc631106060108 bwhere a.sno=b.sno))3update s631106060108set sno='06060108',sname='张梦',sex='男',birthday='1991-10-26',nation='汉' where sno='08050412'4delete from s631106060108where sname='王珊珊'5update s631106060108set nation='藏'where sname='杨彤'六遇到问题在第三步中遇到的问题是:1.在给表c6331106060108设计credit 时没有注意最后一个是小数,所以开始时用的是char (1)后来改为numeric(2,1)使问题得到解决。
sql学生成绩管理系统代码
alter table Relationship_2drop constraint FK_RELATION_RELATIONS_学生goalter table Relationship_2drop constraint FK_RELATION_RELATIONS_课程表goalter table 学生drop constraint FK_学生_RELATIONS_学生成绩表goalter table 学生成绩表drop constraint FK_学生成绩表_RELATIONS_管理员goalter table 课程表drop constraint FK_课程表_RELATIONS_教师goalter table 课程表drop constraint FK_课程表_RELATIONS_学生成绩表goif exists (select 1from sysindexeswhere id = object_id('Relationship_2') and name = 'Relationship_2_FK' and indid > 0 and indid < 255)drop index Relationship_2.Relationship_2_FK goif exists (select 1from sysindexeswhere id = object_id('Relationship_2') and name = 'Relationship_3_FK' and indid > 0 and indid < 255)drop index Relationship_2.Relationship_3_FK goif exists (select 1from sysindexeswhere id = object_id('学生')and name = 'Relationship_4_FK' and indid > 0and indid < 255)drop index 学生.Relationship_4_FKgoif exists (select 1from sysindexeswhere id = object_id('学生成绩表') and name = 'Relationship_5_FK' and indid > 0 and indid < 255)drop index 学生成绩表.Relationship_5_FKgoif exists (select 1from sysindexeswhere id = object_id('课程表') and name = 'Relationship_1_FK' and indid > 0and indid < 255)drop index 课程表.Relationship_1_FKgoif exists (select 1from sysindexeswhere id = object_id('课程表') and name = 'Relationship_6_FK' and indid > 0and indid < 255)drop index 课程表.Relationship_6_FKgoif exists (select 1from sysobjectswhere id = object_id('Relationship_2') and type = 'U')drop table Relationship_2goif exists (select 1from sysobjectswhere id = object_id('学生') and type = 'U')drop table 学生goif exists (select 1from sysobjectswhere id = object_id('学生成绩表') and type = 'U')drop table 学生成绩表goif exists (select 1from sysobjectswhere id = object_id('教师') and type = 'U')drop table 教师goif exists (select 1from sysobjectswhere id = object_id('管理员') and type = 'U')drop table 管理员goif exists (select 1from sysobjectswhere id = object_id('课程表')and type = 'U')drop table 课程表go/*==============================================================*/ /* Table: Relationship_2 */ /*==============================================================*/ create table Relationship_2 (sno numeric(10) not null,cno numeric(10) not null,constraint PK_RELATIONSHIP_2 primary key (sno, cno))go/*==============================================================*/ /* Index: Relationship_2_FK */ /*==============================================================*/ create index Relationship_2_FK on Relationship_2 (sno ASC)go/*==============================================================*/ /* Index: Relationship_3_FK */ /*==============================================================*/ create index Relationship_3_FK on Relationship_2 (cno ASC)go/*==============================================================*/ /* Table: 学生*/ /*==============================================================*/ create table 学生(sno numeric(10) not null,sno1 numeric(10) null,sdept1 char(20) null,sname char(10) null,sage int null,sdept char(20) null,grade char(10) null,tel numeric(11) null,cno3 numeric(10) null,constraint PK_学生primary key nonclustered (sno))go/*==============================================================*/ /* Index: Relationship_4_FK */ /*==============================================================*/ create index Relationship_4_FK on 学生(sno1 ASC,sdept1 ASC)go/*==============================================================*//* Table: 学生成绩表*//*==============================================================*/ create table 学生成绩表(sno1 numeric(10) not null,sdept1 char(20) not null,ano numeric(20) null,cname2 char(10) null,grade1 char(10) null,constraint PK_学生成绩表primary key nonclustered (sno1, sdept1) )go/*==============================================================*/ /* Index: Relationship_5_FK */ /*==============================================================*/ create index Relationship_5_FK on 学生成绩表(ano ASC)go/*==============================================================*/ /* Table: 教师*/ /*==============================================================*/ create table 教师(tno numeric(20) not null,tname char(10) null,tclass char(5) null,cname1 char(10) null,constraint PK_教师primary key nonclustered (tno))go/*==============================================================*/ /* Table: 管理员*/ /*==============================================================*/ create table 管理员(ano numeric(20) not null,apassword char(10) null,constraint PK_管理员primary key nonclustered (ano))go/*==============================================================*/ /* Table: 课程表*/ /*==============================================================*/ create table 课程表(cno numeric(10) not null,tno numeric(20) null,sno1 numeric(10) null,sdept1 char(20) null,cname char(10) null,constraint PK_课程表primary key nonclustered (cno))go/*==============================================================*/ /* Index: Relationship_1_FK */ /*==============================================================*/ create index Relationship_1_FK on 课程表(tno ASC)go/*==============================================================*/ /* Index: Relationship_6_FK */ /*==============================================================*/ create index Relationship_6_FK on 课程表(sno1 ASC,sdept1 ASC)goalter table Relationship_2add constraint FK_RELATION_RELATIONS_学生foreign key (sno) references 学生(sno)goalter table Relationship_2add constraint FK_RELATION_RELATIONS_课程表foreign key (cno) references 课程表(cno)goalter table 学生add constraint FK_学生_RELATIONS_学生成绩表foreign key (sno1, sdept1) references 学生成绩表(sno1, sdept1)goalter table 学生成绩表add constraint FK_学生成绩表_RELATIONS_管理员foreign key (ano) references 管理员(ano)goalter table 课程表add constraint FK_课程表_RELATIONS_教师foreign key (tno) references 教师(tno)goalter table 课程表add constraint FK_课程表_RELATIONS_学生成绩表foreign key (sno1, sdept1) references 学生成绩表(sno1, sdept1)go。
学生成绩管理系统 数据库设计内含sql查询语句
createtable专业(
专业编号char(15) NOTNULLUNIQUE,
专业名char(20) NOT NULLUNIQUE,
系编号char(15)NOT NULL,
constraint专业pk primarykey(专业编号,专业名),
constraintFK_系_专业foreignkey(系编号)references系(系编号)
ﻩﻩwhen成绩<85 and成绩>=80then学分*3
when 成绩<80and成绩〉=75 then学分*2.5
when成绩〈75and成绩〉=70then学分*2
when成绩<70and 成绩>=65then学分*1.5
when成绩<65and成绩>=60then学分*1
ﻩ when成绩〈60then学分*0
1
mﻩn
N1
N4
1
N2
ﻩ1
ﻩ1
N3
ﻩ1
createdatabase学生成绩管理系统
go
use学生成绩管理系统
go
createtable系(
系编号char(15) NOT NULLUNIQUE,
系名称char(20)NOT NULLUNIQUE,
constraint系pk primarykey(系编号,系名称)
)
create view学生成绩(学号,姓名,班级,课程名,成绩,学分绩点)
AS
select选课.学号,姓名,班级=(select班名from班级where班号=(
select班号from学生where学生.学号=选课.学号)),
课程名,成绩,学分绩点=
case
数据库——学生成绩管理 SQL语句
建表:主键:外键:约束:create table 学生基本信息( 学号varcher(20) not null primary key clustered, 姓名varcher(20) not null, 性别tinyint(1) null, 专业varcher(20) null, 班级varcher(20) null, 电话varcher(20) not null)create table 教师基本信息( 工号varcher(20) not null primary key clustered, 姓名varcher(20) not null, 性别tinyint(1) null, 年龄tinyint(1) null, 学院名称varcher(20) null, 电话varcher(20) not null,constraint uk_教师工号unique(工号))create table 课程基本信息( 课程号varcher(20) not null primary key clustered, 课程名称varcher(20) not null, 学分tinyint(1) null, 学院名称varcher(20) not null,教师工号varcher(20) not null references 教师基本信息(工号))create table 选课信息( 课程号varcher(20) not null primary key clustered references 课程基本信息(课程号), 课程名称varcher(20) not null,教师工号varcher(20) not null, 学号varcher(20) not null references 学生基本信息(学号),成绩char(5) not null),constraint fk_选课primary key(学号,课程号), constraint chk_成绩check (成绩>=0 and 成绩<=100))规则:create rule 打分规则_ruleas @成绩between 1 and 100填表:打开表返回所有行操作视图:use 学生成绩管理create view 学生成绩as select 学生基本信息.姓名,选课信息.成绩,课程基本信息.课程名称,课程基本信息.学院名称,教师基本信息.姓名,教师基本信息.电话from学生基本信息cross join课程基本信息cross join 教师基本信息cross join选课信息where(课程基本信息.课程名称=’网络数据库’)。
sql 学生 课程 成绩
sql 学生课程成绩SQL 学生课程成绩SQL(Structured Query Language),是用于管理关系型数据库系统的一种编程语言。
它通过查询和操作数据库中的数据,实现数据的存储、检索、更新等功能。
在学生课程管理系统中,使用SQL可以方便地对学生、课程和成绩等数据进行管理和操作。
本文将介绍如何利用SQL来实现学生课程成绩的管理。
1. 学生表的创建在学生课程管理系统中,首先需要创建一个学生表来存储学生的信息。
学生表可以包含学生的学号、姓名、性别等字段,用于标识和描述每个学生的特征。
下面是创建学生表的SQL语句:```CREATE TABLE student (id INT PRIMARY KEY,name VARCHAR(50),gender VARCHAR(10));```在上述SQL语句中,`student`为表名,`id`为学生的学号字段,`name`为学生的姓名字段,`gender`为学生的性别字段。
2. 课程表的创建除了学生表,还需要创建一个课程表来存储课程的信息。
课程表可以包含课程编号、课程名称、学分等字段,用于描述每门课程的特征。
下面是创建课程表的SQL语句:```CREATE TABLE course (id INT PRIMARY KEY,name VARCHAR(50),credit INT);```在上述SQL语句中,`course`为表名,`id`为课程的编号字段,`name`为课程的名称字段,`credit`为课程的学分字段。
3. 成绩表的创建除了学生表和课程表,还需要创建一个成绩表来存储学生的课程成绩信息。
成绩表可以包含学生学号、课程编号、成绩等字段,用于记录每个学生在每门课程中的成绩。
下面是创建成绩表的SQL语句:```CREATE TABLE score (student_id INT,course_id INT,score FLOAT,PRIMARY KEY (student_id, course_id),FOREIGN KEY (student_id) REFERENCES student(id),FOREIGN KEY (course_id) REFERENCES course(id));```在上述SQL语句中,`score`为表名,`student_id`为学生的学号字段,`course_id`为课程的编号字段,`score`为学生在课程中的成绩字段。
成绩管理SQL查询语句
四数据库查询1 select教师编号,姓名,出生日期from教师表where性别='女';2Select姓名,性别,年龄=CaseWhen datediff(year,出生日期,getdate())>=50 then'老年'When datediff(year,出生日期,getdate())>=40 and datediff(year,出生日期,getdate())<50 then'中年'When datediff(year,出生日期,getdate())<40 then'青年'endfrom教师表3Select top 3 姓名From成绩表,学生表where成绩表.学号=学生表.学号Order by分数desc4 Select*From学生表Where院系名称='体育学院'or院系名称='外语学院'and year(出生日期)=1986 5 Select*From学生表Where院系名称='计算机学院'and len(姓名)=2;6 select学号,课程号,分数,等级=casewhen分数>=80 then'优秀'when分数<=60 then'及格'else'不及格'endfrom成绩表;7 select SUM(分数),AVG(分数),MAX(分数),MIN(分数)from成绩表where课程号=5;8select课程号,总分=SUM(分数),平均分=AVG(分数)from成绩表group by课程号order by AVG(分数)desc9 select院系名称,性别,COUNT(*)人数from学生表group by性别,院系名称10select学生表.学号,姓名from学生表,成绩表,课程表where成绩表.课程号=课程表.课程号and成绩表.学号=学生表.学号and课程表.课程名='数据库应用';11select姓名,课程名,分数from学生表,成绩表,课程表where成绩表.课程号=课程表.课程号and成绩表.学号=学生表.学号and分数>ALL(select姓名from学生表where姓名='王林');1213select姓名,学号from学生表where出生日期>=ALL(select出生日期from学生表)14select姓名,AVG(分数)from学生表,成绩表where学生表.学号=成绩表.学号group by姓名;15create table student(学号CHAR(6),姓名CHAR(6),性别CHAR(2))insert into student(学号,姓名,性别)select学生表.学号,学生表.姓名,学生表.性别from学生表where院系名称='计算机学院';五创建视图1CREATE VIEW V_学生_课程_分数ASSELECT学生表.学号,姓名,课程表.课程号,课程名,分数FROM学生表,课程表,成绩表where学生表.学号=成绩表.学号and课程表.课程号=成绩表.课程号and院系名称='计算机学院'GO2 CREATE VIEW V_不及格学生信息ASselect学生表.姓名,课程表.课程名,分数FROM学生表,课程表,成绩表where成绩表.分数<603 CREATE VIEW V_教师信息ASselect*FROM教师表4CREATE VIEW V_课程信息ASselect课程表.课程号,课程名,学分,教师表.姓名FROM课程表,教师表,成绩表where课程表.课程号=成绩表.课程号and成绩表.教师编号=教师表.教师编号5 select SUM(分数)总分,AVG(分数)平均分from V_学生_课程_分数where课程名='数据库应用'1 declare学生cursor scroll for select学号,性别,姓名,出生日期from学生表open学生FETCH LAST FROM学生FETCH FIRST FROM学生FETCH ABSOLUTE 4 FROM学生FETCH RELATIVE 2 FROM学生FETCH RELATIVE-2 FROM学生23七1 create proc StuScoreInfoasselect院系名称,学生表.学号,姓名,性别,课程名,分数from学生表,成绩表,课程表where学生表.学号=成绩表.学号and成绩表.课程号=课程表.课程号2 create proc Stu_Info@学号char(5)asselect*from学生表where学号like@学号3 create proc aa asinsert into学生表(学号,姓名,院系名称)values ('10098','小明','计算机学院')456 create proc dd asSelect姓名,性别,年龄=CaseWhen datediff(year,出生日期,getdate())>=50 then'老年'When datediff(year,出生日期,getdate())>=40 and datediff(year,出生日期,getdate())<50 then'中年'When datediff(year,出生日期,getdate())<40 then'青年'endfrom教师表7 create proc ee asselect学号,课程号,分数,等级=casewhen分数>=80 then'优秀'when分数<=60 then'及格'else'不及格'endfrom成绩表;1 CREATE TRIGGER TR_ScoreCheckON成绩表FOR INSERT,UPDATEASIF UPDATE(分数)PRINT'AFTER触发器开始执行……'BEGINDECLARE@ScoreValue realSELECT@ScoreValue=(SELECT分数FROM inserted)IF@ScoreValue>100 OR@ScoreValue<0PRINT'输入的分数有误,请确认输入的考试分数!'END2 CREATE TRIGGER TR_Stu_DeleteON学生表FOR DELETEASPRINT'删除触发器开始执行……'DECLARE@StuNum char(10)PRINT'把在学生表中删除的记录的学号赋值给局部变量@StuNum。
SQL学生成绩管理StuendtDB
建立数据库Create database StudentDB建立表结构的SQL定义语句create table Student (Sno char(12) primary key,Sname varchar(10) not null unique,Ssex char(2),Sbirthday datetime,Sdept char(4),Mno char(6));create table Course(Cno char(8) primary key,Cname varchar(40) not null unique,Cpon char(8),Csredit numeric(3,1),Chour smallint,Cterm smallint,Foreign key (Cpon) references Course (Cno) );create table SC(Sno char(12),Cno char(8),Grade numeric(3,1),primary key (Sno,Cno),foreign key(Sno) references Student(Sno), foreign key(Cno) references Course(Cno) );create table Major(Mno char(6) primary key,Mname varchar(40) not null unique,Sdept char(4));create table Users(id int identity primary key,username varchar(10) not null unique, userpwd varchar(200),role varchar(10) not null);建立学生成绩视图create view V_StudentCourseGradeasselect Student.*,Major.Mname,o,ame,SC.Gradefrom Student left outer join SC on SC.Sno=Student.Snoleft outer join Course on o=oleft outer join Major on Student.Mno=Major.Mno定义系统中的全局变量Public SqlConn As New ADODB.ConnectionPublic SqlRS As New ADODB.RecordsetPublic SqlCmd As New mand连接数据库Public Function DBConn() As BooleanConnstr = “Provider = SQLOLEDB.1;Data Source = .\SQLEXPRESS;User ID = sa;Password = 12345678;Iniyial Catalog = StudentDB”If SqlConn.State<>adStateOpen Then‘SqlConn.ConnectionString = ConnStr‘SqlConn.OpenSqlConn.Open ConnStrEnd IfSqlCmd.ActiveConnection = SqlConnDBConn = TureEnd Function执行SQL语句的函数ExecSQLPublic Function ExecSQL(ByVal sql As String) As ADODB.RecordsetIf SqlConn.State<>adStateOpen ThenDBConnEnd IfmandText = sqlSet ExecSQL = SqlCmd.ExecuteEnd Function登录系统按钮“确定”Private Sub cmdOK_Click()Dim sUserName As StringDim sUserPwd As StringsUserName = Yrim(txtUserName.text)sUserPwd = Trim(txtUserPwd.Text)If sUserName = “”ThenCall MagBox(“请输入用户名!”,vbOKOnly, “登录提示”)txtUserName.SetFocusExit SubEnd IfIf SqlConn.State<>adStateOpen Then DBConnSet SqlRS = ExecSQL(“select count(*) num from User where (username = ‘“ + sUserName + ”’) and (userpwd = ‘“ + sUserPwd + ”’)”)If Not SqlRS.EOF ThenIf Int(Trim(SqlRS(“num”)))>=1 ThenSqlRS.CloseSet SqlRS = ExecSQL(“select username,role from User where (username=’“ + sUserName + ”’) and (userpwd=’“ + sUserPwd + ”’)”)If Not SqlRS.EOF ThenMDIForml.SetRightForRole(Trim(SqlRS(“role”)))ElseMDIForml.SetRightForRole(“2”)End IfUnIoad MeMDIForml.ShowElseCall MsgBox(“用户名或密码错误,请重新登录!”,vbOKOnly, “登录提示”) txtUserName.SetFocusEnd IfEnd IfEnd Sub退出关闭按钮“关闭”Private Sub cmdClose_Click()Unload MeEnd Sub菜单栏中选择各个子菜单后出发的时间如下所示:Private Sub AddStudent_Click()’学生信息录入frmStudentInfo.SetOpenStyle(“I”)frmStudentInfo.ShowfrmStudentInfo.ZOrder 0End SubPrivate Sub UpdataStudent_Click()’学生信息更新frmStudentInfo.SetOpenStyle(“U”)frmStudentInfo.ShowfrmStudentInfo.ZOrder 0End SubPrivate Sub SearchStudent_Click()’学生信息查询frmStudentInfo.SetOpenStyle(“F”)frmStudentInfo.ShowfrmStudentInfo.ZOrder 0End SubPrivate Sub AddGrade_Click()’学生成绩录入frmCourseGrade.ShowfrmCourseGrade.ZOrder 0End SubPrivate Sub GradeSearch_Click()’学生成绩查询frmGradeSearch.ShowfrmGradeSearch.ZOrder 0End SubPublic Sub SetRightForRole(role As String)If role = “2” ThenUpdataStudent.Visible = FalseAddGrade.Visible = FalseGradeSummary.Visible = FalseUserManage.Visible = FalseEnd IfEnd SubPrivate Sub exitSys_Click()’退出系统Unload MeEnd Sub定义执行过程中需要的全局变量Dim strMode As String’窗口打开方式Dim strNo As String’学生学号窗口加载时执行代码,完成专业下拉列表框赋值Private Sub Form_Load()Set SqlRS = ExecSQL(“select Mname form Major order by Mno”) While Not SqlRS.EOFcbxMajor.AddItem(SqlRS(“Mname”))SqlRS.MoveNextWendSqlRS.CloseEnd Sub单击“新增”按钮时触发的事件Private Sub cmdNew_Click()’新增txtSno.Enabled = TuretxtSname.Enabled = TureMale.Enabled = TureFemale.Enabled = TuretxtBirthday.Enabled = TuretxtDept.Enabled = TurecbxMajor.Enabled = TuretxtSno.Text = “”txtSname.Text = “”Male.Value = FalseFemale.Value = FalsetxtBirthday.Text = “”txtDept.Text = “”cbxMajor.Text = “”txtSno.SetFocusEnd Sub单击“保存”按钮时触发的事件Private Sub cmdSave_Click()’保存Dim strSQL As StringDim strSex As StringDim strMno As StringIf Trim (txtSno.Text) = “” ThentxtSno.SetFocusCall MsgBox(“请输入学生学号!”,vbOKOnly, “提示”)Exit SubEnd IfIf Trim(txtSname.Text) = “” ThentxtSname.SetFocusCall MsgBox(“请输入学生姓名!”,vbOKOnly, “提示”)Exit SubEnd IfIf Male.value = Ture ThenstrSex = “男”ElseIf Female.Value = Ture ThenstrSex = “女”End IfSet SqlRS = ExecSQL(“select Mno from Major where Mname = ‘”+ Trim(cbxMajor.Text) + “’”) If Not SqlRS.EOF ThenstrMno = Trim(SqlRS(“Mno”))ElsestrMno = “”End IfIf strMode = “I” ThenSet SqlRS = ExecSQL(“select count(*) num from Student where Sno = ‘” + Trim(txtSno.Text) + “’”)If Not SqlRS.EOF ThenIf Int(Trim(SqlRS(“num”)))>= 1 ThenSqlRS.CloseCall MagBox(“该学生” + Trim(txtSno.Text) + “已经存在,请检查!”,vbOKOnly, “提示”)Exit SubEnd IfEnd IfSqlRS.ClosestrSQL = “INSERT INTO Student(Sno,Sname,Ssex,Sbirthday,Sdept,Mno)”strSQL = strSQL + “V ALUES(‘“+ Trim(txtSno.Text) + “’,’”+ Trim(txtSname.Text) + “’,’”+ strSex + strSex + “’,’”+ Trim(txtBirthday.Text) + “’,’”+ Trim(txtDept.Text) + “’,’”+ strMno + ”’)”ElseIf strMode = “U” ThenstrSQL = “UPDA TA Student SET Sno= ‘“+ Trim(txtSno.Text) + ”’,Sname = ‘“+ Trim(txtSname.Text) + ”’,”strSQL = strSQL + “Ssex = ‘“ + strSex + ”’,Sbirthday = ‘“ + Trim(txtBirthday.Text) + ”’,Sdept = ‘“ + Trim(txtDept.Text) + ”’,Mno=’“ + strMno + ”’”strSQL = strSQL + “where Sno = ‘“ + strNo + ”’”End IfExecSQL (strSQL)Call Msgbox(“保存成功!”,vbOKOnly, “提示”)If strMode = “I” Then cmdNew_clickEnd Sub为了与“学生信息的录入”窗体共用,需要对窗体在不同功能是打开后显示的功能按钮等不同,因此对本窗体中定义一个设置过程,实现代码如下:Public Sub SetOpenStyle(str As String)‘设置窗口打开方式:F- - 查询;I - - 录入;U - - 更新strMode = strcmdNew.Enabled = FalsecmdFind.Enabled = FalsecmdChang.Enabled = FalsecmdDelete.Enabled = FalsecmdSave.Enabled = FalseMale.Enabled = FalseFemale.Enabled = FalsetxtBirthday.Enabled = FalsetxtDept.Enabled = FalsecbxMajor.Enabled = FalseIf str = “F” ThencmdFind.Enabled = TureElseIf str = “I” ThencmdNew.Enabled = TurecmdSave.Enabled = TuretxtSno.Enabled = FalsetxtSname.Enabled = FalseElseIf str = “U” ThencmdFind.Enable = TureEnd IfEnd Sub单击“查询”按钮时触发的事件Private Sub cmdFind_Click()’查询strNo = Trim(txtSno.Text)If Trim(txtSno.Text) = “”And Trim(txtSname.Text) = ”” ThenCall MsgBox(“请输入学生学号或姓名!”,vbOKOnly,”提示”)Exit SubEnd IfSet SqlRS = ExecSQL(“select Student,*, Major.Mname from Student left outer join Major on Student.Mno = Major.Mno where Student.Sno = ‘” + Trim(txtSno.Text) + ”’ or Student.Sname = ‘” + Trim(txtSname.Text) + ”’”)If Not SqlRS.EOF ThentxtSno.Text = Trim(SqlRS(“Sno”))strNo = Trim(SqlRS(“Sno”))txtSname.Text = Trim(SqlRS(“Sname”))If SqlRs(“Ssex”) = “男” ThenMale.Value = TureElseIf SqlRS(“Ssex”) = “女” ThenFemale.Value = TureElseMale.Value = FalseFemale.Value = FalseEnd IftxtBirthday.Text = SqlRS(“Sbirthday”)txtDept.Text = Trim(SqlRS(“Sdept”))If SqlRS(“Mname”)<>””Then cbxMajor.Text = Trim(SqlRS(“Mname”))ElseSqlRS.CloseCall MsgBox(“没有此学生信息!”,vbOKOnly,”提示”)Exit SubEnd IfSqlRS.CloseIf strMode = “U” ThencmdChang.Enabled = TurecmdDelete.Enabled = TurecmdSave.Enabled = TureEnd IfEnd Sub单击“修改”按钮时触发的事件Private Sub cmdChang_Click()’更新If strMode = “U” ThenMale.Enabled = TureFemale.Enabled = TuretxtBirthday.Enabled = TuretxtDept.Enabled = TurecbxMajor.Enabled = TurecmdSave.Enabled = TureEnd IfEnd Sub单击“删除”按钮时出发的事件Private Sub cmdDelete_Click()’删除If vbYes = MsgBox(“是否确认删除学号:”” + strNo + ””的学生信息?”,vbYesNo,”询问”) Then SqlConn.BeginTransmandText = “delete from SC where Sno = ‘” + strNo + “’”SqlCmd.ExecutemitTranstxtSno.Text = “”txtSname.Text = “”Male.Value = FalseFemale.Value = FalsetxtBirthday.Text = “”txtDept.Text = “”cbxMajor.Text = “”cmdNew.Enabled = FalsecmdFind.Enabled = FalsecmdChang.Enabled = FalsecmdDelete.Enabled = FalsecmdSave.Enabled = FalseMale.Enabled = FalseFemale.Enabled = FalsetxtBirthday.Enabled = FalsetxtDept.Enabled = FalsecbxMajor.Enabled = FalsetxtSno.Enabled = FalseEnd IfEnd Sub窗口加载时执行代码,完成专业和课程名下拉列表框赋值Private Sub Form_Load()Set SqlRS = ExecSQL(“select Mname from Major order by Mno”)While Not SqlRS.EOFcbxMajor.AddItem (SqlRS(“Mname”))SqlRS.MoveNextWendSqlRS.CloseSet SqlRS = ExecSQL(“select Cname from Course order by Cno”)While Not SqlRS.EOFcbxCourse.AddItem(SqlRS(“Cname”))SqlRs.MoveNextWendSqlRS.CloseEnd Sub单击“查询”按钮时触发的事件Private Sub cmdFind_Click()Dim strSQL,sTmp As StringDim strSno,sSno As StringDim strSname,sSname As StringDim strMname,sMname As StringstrSno = Trim(txtSno.Text)strSname = Trim(txtSname.Text)strMname = Trim(cbxMajor.Text)strSQL = “select Sno,Sname,Mname,Cno,Cname,Grade from V_StudentCourseGrade”sSno = “”If ckbSno.Value = 1 ThensSno = “Sno = ‘” + strSno + ”’”End IfsSname = “”If ckbSname.Value = 1 ThensSname = “ Sname like ‘ % “ + strSname + ”% ’”End IfsMname = “”If ckbMajor.Value = 1ThensMname = “ Mname like ‘ %” + strMname + “%’”End IfsTmp = “”If sSno<>”” ThensTmp = sSno + “and” + sSnameIf sMname<>”” ThensTmp = sTmp + “and” + sMnameEnd IfElseIf sMname<>”” ThensTmp = sSno + “and” + sMnameElsesTmp = sSnoEnd IfEnd IfElseIf sSname<>”” ThenIf sMname<>”” ThensYmp = sSname + “and” + sMnameElsesTmp = sSnameEnd IfElsesTmp = sMnameEnd IfEnd IfIf Trim(dTmp) <>”” ThenstrSQL = strSQL + “where” + sTmpEnd IfgradeADO.ConnectionString = getConnStringgradeADO.RecordSource = strSQLgradeADO.RefreshEnd Sub单击“保存”按钮时触发的事件Private Sub cmdUpdate_Click()Dim sCno,sSQL As StringIf Trim(sNo.Text) = “” ThenCall MsgBox(“请选择学生!”,vbOKOnly,”提示”)Exit SubEnd IfIf Trim(cnxCourse.Text) = “” ThenCall MsgBox(“请选择输入课程名!”.vbOKOnly,”提示”)cbxCourse.SetFocusExit SubEnd IfIf Trim(txtGrade.Text) = “” ThenCall MagBox(“请输入该学生的课程成绩!”,vbOKOnly,”提示”)txtGrade.SetFocusExit SubEnd IfsCno = “”Set SqlRs = ExecSQL(“select Cno from Course where Cname = ‘” + Trim(cbxCourse.Text) + “’”) If Not SqlRS.EOF ThensCno = Trim(SqlRS(“Cno”))End IfSqlRS.CloseIf sCno = “” ThenCall MagBox(“不存在该课程,请重新选择!”,vbOKOnly,”提示”)cbxCourse.SetFocusExit SubEnd IfSet SqlRS = ExecSQL(“select count(*) num from SC where Sno =’” + Trim(sNo.Text) +”’ and Cno = ‘” + sCno + ”’”)If Not SqlRS.EOF ThenIf Int(Trim(SqlRS(“num”)))>= 1 Then’更新sSQL = “UPDATE SC SET GRADE = ” + Trim(txtGrade.Text)sSQL = sSQL + “ where Sno = ‘” + Trim(sNo.Text) +”’ and Cno = ‘” + sCno + ”’”Else’插入sSQL = “INSERT INTO SC(Sno,Cno,Grade)”sSQL = sSQL + “ V ALUES(‘” + Trim(sNo.Text) + ”’,’” + sCno + ”’,” + Trim(txtGrade.Text) + ”)”End IfSqlRS.CloseExecSQL(sSQL)Call MsgBox(“保存成功!”, vbOKOnly,”提示”)gradeADO.RefreshEnd IfEnd Sub单击“删除”按钮时触发的事件Private Sub cmdDelete_Click()If vbYes = MagBox(“是否确认删除学号:” + studentNo + “、课程号:’” + courseNo + ”’的学生成绩信息?”,vbYesNo,”询问”) ThenExecSQL (“delete from SC where Sno = ‘” + studentNo + ”’ and Cno + ‘” + courseNo + ”’”) gradeADO.RefreshEnd IfEnd Sub移动下方表格中的行光标时触发的事件Private Sub gradeADO_MoveComplete(ByVal adReason As ASOSB.EventReasonEnum, ByVal pError As ADODB.Error,adStatus As ADODB.EventStatusEnum,ByVal pRecordest As ADODB.Recordset)If Not pRecordset.EOF And Not pRecordset.BOF ThensNO.Text = pRecordest(“Sno”)sName.Text = “”If pRecordest(“Sname”)<>”” Then sName.Text = pRecordest(“Sname”)cbxCourse.Text = “”If pRecordest(“Cname”)<>”” Then cbxCourse.Text = pRecordest(“Cname”)txtGrade.Text = “”If pRecordest(“Grade”)<>”” Then txtGrade.Text = pRecordest(“Grade”)studentNo = pRecordesst(“Sno”)courseNo = “”If pRecordest(“Cno”)<>”” Then courseNo.Text = pRecordest(“Cno”)cmdDelete.Enabled = FalseIf studentNo<>”” And courseNO<>”” Then cmdDelete.Enabled = TureEnd IfEnd Sub窗口加载时执行代码,完成专业和课程名下拉列表框赋值Private Sub From_Load()Set SqlRS = ExecSQL(“select Mname from Major order by Mno”)While Not SqlRS.EOFcbxMajor.AddItem(SqlRS(“Mname”))SqlRs.MoveNextWendSqlRS.CloseEnd Sub单击“查询”按钮时出发的事件Private Sub cmdFind_Click()Dim strSQL,sTmp As StringDim strSno,sSno As StringDim strSname,sSname As StringDim strMname,sMname As StringstrSno = Trim(txtSno.Text)strSname = Trim(txtSname.Text)strMname = Trim(cbxMajor.Text)strSQL = “select Sno,Sname,Mname,Cno,Cname,Grade from V_StudentCourseGrade”sSno = “”If ckbSno.Value = 1 ThensSno = “Sno = ‘” + strSno + ”’”End IfsSname = “”If ckbSname.Value = 1 ThensSname = “ Sname like ‘%” + strSname + ”%’”End IfsMname = “”If ckbMajor.Value = 1 ThensMname = “Mname like’%” + strMname + ”%’”End IfsTmp = “”If sSno<>”” ThenIf sSname<>”” ThensTmp = sSno + “and” + sMnameEnd IfElseIf sMname<>”” ThensTmp = sSno + “and” + sMnameElsesTmp = sSnoEnd IfEnd IfElseIf sSname<>”” ThenIf sMname<>”” ThensTmp = sSname + “and” + sMnameElsesTmp = sSnameEnd IfElsesTmp = sMnameEnd IfEnd IfIf Trim(sTmp)<>””ThenstrSQL = strSQL + “where” + sTmpEnd IfgradeADO.ConnectionString = getConnString gradeADO.RecordSource = strSQL gradeADO.RefreshEnd Sub。
sql server学生成绩管理课设代码
sql server学生成绩管理课设代码编写一个完整的学生成绩管理系统涉及多个方面,包括数据库设计、表的创建、数据的插入、查询、更新和删除,以及前端用户界面等。
下面是一个简化的 SQL Server 数据库设计及相关操作的示例。
假设我们有两个表:一个用于存储学生信息,另一个用于存储课程成绩。
以下是表的创建语句:-- 创建学生表CREATE TABLE Students (StudentID INT PRIMARY KEY,FirstName VARCHAR(50),LastName VARCHAR(50),DateOfBirth DATE);-- 创建课程表CREATE TABLE Courses (CourseID INT PRIMARY KEY,CourseName VARCHAR(100));-- 创建成绩表CREATE TABLE Grades (GradeID INT PRIMARY KEY,StudentID INT,CourseID INT,Score INT,FOREIGN KEY (StudentID) REFERENCES Students(StudentID),FOREIGN KEY (CourseID) REFERENCES Courses(CourseID) );上述代码创建了三个表:学生表(Students)、课程表(Courses)、成绩表(Grades)。
学生表包含学生的基本信息,课程表包含课程的信息,成绩表包含学生对每门课的成绩信息。
成绩表中的 StudentID 和 CourseID 列分别与学生表和课程表中的主键相连接,确保了数据的一致性。
接下来,你可以使用 SQL 语句进行数据插入、查询、更新和删除等操作。
以下是一些基本的示例:sqlCopy code-- 插入学生数据INSERT INTO Students VALUES (1, 'John', 'Doe', '1990-01-01');INSERT INTO Students VALUES (2, 'Jane', 'Smith', '1992-05-15');-- 插入课程数据INSERT INTO Courses VALUES (101, 'Mathematics');INSERT INTO Courses VALUES (102, 'Physics');-- 插入成绩数据INSERT INTO Grades VALUES (1, 1, 90);INSERT INTO Grades VALUES (1, 2, 85);INSERT INTO Grades VALUES (2, 1, 92);INSERT INTO Grades VALUES (2, 2, 88);-- 查询所有学生的成绩SELECT Students.FirstName, stName, Courses.CourseName, Grades.ScoreFROM GradesJOIN Students ON Grades.StudentID = Students.StudentID JOIN Courses ON Grades.CourseID = Courses.CourseID;-- 更新成绩UPDATE Grades SET Score = 95 WHERE StudentID = 1 AND CourseID = 1;-- 删除学生及其成绩DELETE FROM Students WHERE StudentID = 1;DELETE FROM Grades WHERE StudentID = 1;请注意,这只是一个简单的示例,实际的学生成绩管理系统可能需要更多的功能和细节,包括身份验证、权限管理、成绩统计等。
sql 学生 分数统计 90分科目数 80的科目书
sql 学生分数统计 90分科目数 80的科目书SQL(Structured Query Language)是一种用于管理和查询关系数据库的专用编程语言。
在教育领域中,学生的分数统计和分析是一项重要的工作,可以帮助教师和学校更好地了解学生的学习情况,及时发现问题并进行个性化的教育。
让我们从简单的SQL查询开始,了解如何使用SQL进行学生分数统计的基本操作。
假设我们有一个名为“学生成绩”的表,包含学生ID、科目、成绩等字段。
现在,我们想要统计所有学生的平均分、最高分和最低分,我们可以使用以下SQL语句:1. 查询所有学生的平均分:```sqlSELECT AVG(成绩) AS 平均分 FROM 学生成绩;```2. 查询所有学生的最高分:```sqlSELECT MAX(成绩) AS 最高分 FROM 学生成绩;```3. 查询所有学生的最低分:```sqlSELECT MIN(成绩) AS 最低分 FROM 学生成绩;```通过以上简单的SQL查询,我们可以得到学生的平均分、最高分和最低分,从而对学生的整体学习情况有一个初步的了解。
但是,这仅仅是分数统计的基本操作,对于更深入的分析,我们需要更复杂的查询和统计功能。
接下来,让我们进一步探讨如何使用SQL进行学生分数统计的深入操作。
在学生分数统计中,一个重要的指标是90分和80分的科目数。
我们希望统计每个学生90分和80分以上的科目数,以了解学生的优秀科目情况。
为了实现这一目的,我们需要使用SQL的分组和聚合功能来对学生的成绩进行分组统计,并筛选出满足条件的科目数。
以下是实现这一目标的SQL语句:1. 统计每个学生90分以上的科目数:```sqlSELECT 学生ID, COUNT(科目) AS 90分以上科目数FROM 学生成绩WHERE 成绩 >= 90GROUP BY 学生ID;```2. 统计每个学生80分以上的科目数:```sqlSELECT 学生ID, COUNT(科目) AS 80分以上科目数FROM 学生成绩WHERE 成绩 >= 80GROUP BY 学生ID;```通过以上SQL查询,我们可以得到每个学生90分以上和80分以上的科目数,并结合学生的其他分数统计数据,可以进行更全面的学生学习情况分析。
mysql 学生成绩
mysql 学生成绩========MySQL 是一个流行的开源数据库管理系统,广泛应用于各种应用系统。
在学生成绩管理系统中,MySQL 是一个非常有用的工具,可以帮助我们有效地管理和分析学生成绩数据。
一、学生成绩表的创建----------首先,我们需要创建一个学生成绩表来存储学生的成绩数据。
在MySQL 中,可以使用 CREATE TABLE 语句来创建表。
下面是一个简单的示例:```sqlCREATE TABLE 学生成绩 (学号 INT PRIMARY KEY,姓名 VARCHAR(50),课程名 VARCHAR(50),成绩 DECIMAL(5,2));```这个表包含了学号、姓名、课程名和成绩四个字段,其中学号是主键。
可以根据实际需求调整字段的名称和类型。
二、成绩数据的插入---------接下来,我们可以使用 INSERT INTO 语句将学生的成绩数据插入到表中。
例如,插入一条学生 A 的成绩数据:```sqlINSERT INTO 学生成绩 (学号, 姓名, 课程名, 成绩)VALUES (1, '张三', '数学', 85.5);```可以根据实际情况插入多条数据,并确保学号、姓名、课程名和成绩的匹配。
三、成绩数据的查询和分析------------通过 MySQL,我们可以轻松地查询和分析学生成绩数据。
例如,可以使用 SELECT 语句来查询某个学生的成绩:```sqlSELECT 成绩 FROM 学生成绩 WHERE 学号 = 1;```还可以使用 GROUP BY 语句来按课程名或班级分组统计成绩,使用聚合函数如 COUNT、SUM、AVG 等来分析数据。
四、成绩数据的更新和删除-------------如果需要更新或删除学生成绩数据,可以使用 UPDATE 和DELETE 语句。
例如,更新学生 A 的成绩为 90:```sqlUPDATE 学生成绩 SET 成绩 = 90 WHERE 学号 = 1;```如果需要删除某个学生的所有成绩数据,可以使用 DELETE 语句并指定条件:```sqlDELETE FROM 学生成绩 WHERE 学号 = 1;```总结--通过 MySQL,我们可以有效地管理和分析学生成绩数据。
学生成绩查询系统SQL
--用户登陆表CREATE TABLE UserLogin(userID BIGINT,userPass V ARCHAR(20)NOT NULL,permission INT NOT NULL,--权限CONSTRAINT PK_UserLoginID PRIMARY KEY(userID),--主键)--教师信息表CREATE TABLE TeaInfo(teaID BIGINT,userName V ARCHAR(20)NOT NULL,sex CHAR(2)NOT NULL,age INT NOT NULL,phoneNum CHAR(11)NOT NULL,CONSTRAINT PK_TeaID PRIMARY KEY (teaID),--主键--教师ID依赖于登陆IDCONSTRAINT FK_TeaLoginID FOREIGN KEY(teaID)REFERENCES UserLogin(userID) ON DELETE CASCADEON UPDATE NO ACTION,--教师年龄约束CONSTRAINT CN_UserAge CHECK(age<150 and age>0),--电话唯一CONSTRAINT AK_TeaphoneNum UNIQUE (phoneNum),)--班级信息表CREATE TABLE ClassInfo(classID BIGINT,className V ARCHAR(30),deptID BIGINT,--系别CONSTRAINT PK_ClassInfoID PRIMARY KEY(classID),--主键)--学生信息表CREATE TABLE StuInfo(stuID BIGINT,classID BIGINT NOT NULL,userName V ARCHAR(20)NOT NULL,sex CHAR(2)NOT NULL,age INT NOT NULL,phoneNum CHAR(11)NOT NULL,startTime VARCHAR(10)NOT NULL,--入学时间CONSTRAINT PK_StuInfoID PRIMARY KEY(stuID),--主键--学生ID依赖于登陆IDCONSTRAINT FK_stuLoginID FOREIGN KEY(stuID)REFERENCES UserLogin(userID) ON DELETE CASCADEON UPDATE NO ACTION,--学生classID依赖于班级信息表的classIDCONSTRAINT FK_stuInClassID FOREIGN KEY(classID)REFERENCES ClassInfo(classID), --学生年龄约束CONSTRAINT CN_StuAge CHECK(age<150 and age>0),--电话唯一CONSTRAINT AK_StuphoneNum UNIQUE (phoneNum),)--课程详细信息表CREATE TABLE CourseInfo(courseID BIGINT,courseName VARCHAR(30),credits INT,period INT,--学时CONSTRAINT PK_CourseInfoID PRIMARY KEY(courseID),--主键)--课表CREATE TABLE Syllabus(classID BIGINT,courseID BIGINT,teacherID BIGINT,classTime VARCHAR(30),--上课时间venue V ARCHAR(50),--上课地点theYear INT,--学年term INT,--学期CONSTRAINT PK_Syllabus PRIMARY KEY(classID,courseID,classTime),--主键--课程ID依赖于课程详细信息表的ID,并随着课程详细信息表删除而删除CONSTRAINT FK_CourseIDSyllabus FOREIGN KEY(courseID)REFERENCES CourseInfo(courseID)ON DELETE CASCADEON UPDATE NO ACTION,--教师ID依赖于教师信息表的IDCONSTRAINT FK_TeaInfoIDSyllabus FOREIGN KEY(teacherID)REFERENCES TeaInfo(teaID),--班级ID依赖于班级信息表,并随着班级信息表删除而删除CONSTRAINT FK_ClassInfoIDSyllabus FOREIGN KEY(classID)REFERENCES ClassInfo(classID)ON DELETE CASCADEON UPDATE NO ACTION,--学期小于CONSTRAINT CN_ReportTerm CHECK(term<4),--学年不能大于当前的年份CONSTRAINT CN_ReportTheYear CHECK(theYear<=YEAR(GETDATE())),)--成绩报表CREATE TABLE Report ( userID BIGINT , courseID BIGINT , grade FLOAT ,CONSTRAINT PK_ReportID PRIMARY KEY (userID ,courseID ),--主键 --成绩报表随着用户的删除而删除CONSTRAINT FK_TeaInfoReportID FOREIGN KEY (userID ) REFERENCES TeaInfo (teaID ) ON DELETE CASCADE ON UPDATE NO ACTION , --课程依赖于课程信息表 CONSTRAINT FK_CourseReportID FOREIGN KEY (courseID ) REFERENCES CourseInfo (courseID ), --成绩约束CONSTRAINT CN_ReportGrade CHECK (grade >=0 and grade <=100), )ClassInfoclassID className deptIDCourseInfocourseID courseName credits periodReportuserID courseID gradetheYear termF K_CourseReportID StuInfostuIDclassID userName sexage phoneNum startTimeF K_stuInClassID SyllabusclassID courseID teacherID classTime venueF K_CourseIDSyllabusF K_ClassInfoIDSyllabus TeaInfoteaID userName sex age phoneNumF K_TeaInfoIDSyllabusF K_TeaInfoReportID UserLoginuserID userPass permissionF K_TeaLoginIDF K_stuLoginID--教师个人课表create view TeacherSyllabus as selectTeaInfo .teaID ,TeaInfo .userName ,CourseInfo .courseID ,CourseInfo .courseName ,Syllabus .classTim e ,Syllabus .Venue ,Syllabus .classID ,Syllabus .theYear ,Syllabus .term from Syllabusleft join CourseInfo onSyllabus.courseID=CourseInfo.courseIDleft join TeaInfo onSyllabus.teacherID=TeaInfo.teaID--学生个人课表create procedure StudentSyllabus@stuID bigintasselectStuInfo.stuID,erName,CourseInfo.courseID,CourseInfo.courseName,Syllabus.classTim e,Syllabus.venue,Syllabus.teacherID,Syllabus.classID,Syllabus.theYear,Syllabus.termfrom Syllabusleft join CourseInfo onSyllabus.courseID=CourseInfo.courseIDleft join StuInfo onSyllabus.classID=StuInfo.classIDwhere StuInfo.stuID=@stuID--学生个人成绩单create view StuReportasselectStuInfo.stuID,erName,StuInfo.classID,CourseInfo.courseID,CourseInfo.courseName,Co urseInfo.credits,Report.grade,Syllabus.theYear,Syllabus.termfrom Reportleft join StuInfo onerID=StuInfo.stuIDleft join CourseInfo onReport.courseID=CourseInfo.courseIDleft join Syllabus onSyllabus.courseID=Report.courseID--单科成绩排名create proc ReportByOrder@courseID bigint,@classID bigintasselectStuInfo.stuID,erName,CourseInfo.courseID,CourseInfo.courseName,CourseInfo.credits ,Report.gradefrom Reportleft join StuInfo onStuInfo.stuID=erIDleft join CourseInfo onCourseInfo.courseID=Report.courseIDwhere CourseInfo.courseID=@courseID and StuInfo.classID=@classIDorder by grade desc--班级排名create proc ClassReportOrder@classID bigintasselect StuInfo.stuID,erName,SUM(grade)as总分from StuInfoleft join Report onStuInfo.stuID=erIDwhere StuInfo.classID=@classIDgroup by StuInfo.stuID,erNameorder by sum(grade)desc,StuInfo.stuID。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
建表:主键:外键:约束:
create table 学生基本信息( 学号varcher(20) not null primary key clustered, 姓名varcher(20) not null, 性别tinyint(1) null, 专业varcher(20) null, 班级varcher(20) null, 电话varcher(20) not null)
create table 教师基本信息( 工号varcher(20) not null primary key clustered, 姓名varcher(20) not null, 性别tinyint(1) null, 年龄tinyint(1) null, 学院名称varcher(20) null, 电话varcher(20) not null,constraint uk_教师工号unique(工号))
create table 课程基本信息( 课程号varcher(20) not null primary key clustered, 课程名称varcher(20) not null, 学分tinyint(1) null, 学院名称varcher(20) not null,教师工号varcher(20) not null references 教师基本信息(工号))
create table 选课信息( 课程号varcher(20) not null primary key clustered references 课程基本信息(课程号), 课程名称varcher(20) not null,教师工号varcher(20) not null, 学号varcher(20) not null references 学生基本信息(学号),成绩char(5) not null),constraint fk_选课primary key(学号,课程号), constraint chk_成绩check (成绩>=0 and 成绩<=100))
规则:
create rule 打分规则_rule
as @成绩between 1 and 100
填表:
打开表返回所有行操作
视图:
use 学生成绩管理
create view 学生成绩
as select 学生基本信息.姓名,选课信息.成绩,课程基本信息.课程名称,课程基本信息.学院名称,教师基本信息.姓名,教师基本信息.电话from学生基本信息cross join课程基本信息cross join 教师基本信息cross join选课信息
where(课程基本信息.课程名称=’网络数据库’)。