考试系统的基础维护--基本表的连接操作

这次有幸帮师姐进行考试系统的基础维护,说直接点就是对考试人员的管理,增删改查,最基本的还是查询学生,用来和老师所给的信息进行核对,最后再确定考试的人员,在查询的过程中就遇到了这种一种情况:

  在对English考试的人员进行核对的时候,为了方便查询,而建立的一个相关的视图,该视图所涉及到的表有:TB_Student(学生基本信息),TB_ExecutiveClass(涉及到所在的班级),TB_DepartmentName(所属专业),TB_CollegeName(所属学院),TB_English主要就是把学生基本信息以及所属的学院专业以及英语考试的相关信息来建立一个总体的信息表。对于信息的检查第一部分就是看看视图中的信息有没有和老师所给的英语信息表一一相应。

   胡乱忙碌的半天,最后依照师姐的想法,先对表进行了右外连接,以学生英语分级信息为主,来进行了查询:

相关语句例如以下:

SELECT DISTINCT

dbo.TB_Student.StudentName, dbo.TB_Student.StudentCode, dbo.TB_Student.Sex, dbo.TB_ExecutiveClass.ExecutiveClassName, dbo.TB_Department.DepartmentName,

dbo.TB_College.CollegeName, dbo.TB_Grade.GradeName, dbo.TB_english.englisfenji, dbo.TB_english.englishclass

FROM         dbo.TBR_DepCollegeLink INNER JOIN

dbo.TB_Department ON dbo.TBR_DepCollegeLink.DepartmentID = dbo.TB_Department.DepartmentID INNER JOIN

dbo.TB_College ON dbo.TBR_DepCollegeLink.CollegeID = dbo.TB_College.CollegeID INNER JOIN

dbo.TBR_ExecutiveClassDepLink ON dbo.TB_Department.DepartmentID = dbo.TBR_ExecutiveClassDepLink.DepartmentID INNER JOIN

dbo.TBR_StuExecutiveClassLink INNER JOIN

dbo.TB_ExecutiveClass ON dbo.TBR_StuExecutiveClassLink.ExecutiveClassID = dbo.TB_ExecutiveClass.ExecutiveClassID INNER JOIN

dbo.TB_Student ON dbo.TBR_StuExecutiveClassLink.StudentID = dbo.TB_Student.StudentID ON

dbo.TBR_ExecutiveClassDepLink.ExecutiveClassID = dbo.TB_ExecutiveClass.ExecutiveClassID INNER JOIN

dbo.TBR_ExecutiveClassGradeLink ON dbo.TB_ExecutiveClass.ExecutiveClassID = dbo.TBR_ExecutiveClassGradeLink.ExecutiveClassID INNER JOIN

dbo.TB_Grade ON dbo.TBR_ExecutiveClassGradeLink.GradeID = dbo.TB_Grade.GradeID RIGHT OUTER JOIN

dbo.TB_english ON dbo.TB_Student.StudentCode = dbo.TB_english.studentCode

所出现的效果例如以下:

为什么会出现这样的状况呢?其原因当然非常easy,因为T_English表中的数据是自己依照老师所给的Excel表格直接导入进去的,所以假设採用又外连接会出现其等同量的数据,但是因为某种原因,当初加入?基本信息的时候忘记了此学生,又或者转专业仅仅删除了而忘记把其加入?进去了等等,从而导致基础学生表为空,所以才出现的如图的现象。

  通过基本表的连接操作进行了简单的查询,然后再一对比,发现真的是这五条数据捣的鬼。哎!这次真的是帮了自己的大忙了

事实上右外连接仅仅是基本表中的一种连接类型,除此之外,数据表的连接类型分成:

1)内连接:是等值连接

2)外连接:看以什么信息为主,是表格A还是表格B,假设以表A信息为根据,那就使用左外连接,相反则使用右外连接。全外连接则是两个表都不加限制。

3)自然连接:连接发生在一张表内

下边通过举例来具体说明:

表TB_student和表TB_English

对于自然连接,一般使用在有公共属性的情况中,假设两个关系没有公共属性,那么自然连接则就转换成笛卡儿积来进行操作。

迪卡儿积:

SELECT     dbo.TB_English.studentCode, dbo.TB_English.englisfenji, dbo.TB_Student.StudentCodes, dbo.TB_Student.StudentName
FROM         dbo.TB_English CROSS JOIN
                      dbo.TB_Student

显示效果:

内连接:

SELECT     dbo.TB_English.studentCode, dbo.TB_English.englisfenji, dbo.TB_Student.StudentCodes, dbo.TB_Student.StudentName
FROM         dbo.TB_English <span style="color:#ff0000;">INNER JOIN</span>
                      dbo.TB_Student ON dbo.TB_English.studentCode = dbo.TB_Student.StudentCodes

左外连接:

SELECT     dbo.TB_English.studentCode, dbo.TB_English.englisfenji, dbo.TB_Student.StudentCodes, dbo.TB_Student.StudentName
FROM         dbo.TB_English<span style="color:#ff0000;"> LEFT OUTER JOIN</span>
                      dbo.TB_Student ON dbo.TB_English.studentCode = dbo.TB_Student.StudentCodes

右外连接:

SELECT     dbo.TB_English.studentCode, dbo.TB_English.englisfenji, dbo.TB_Student.StudentCodes, dbo.TB_Student.StudentName
FROM         dbo.TB_English <span style="color:#ff0000;">RIGHT OUTER JOIN</span>
                      dbo.TB_Student ON dbo.TB_English.studentCode = dbo.TB_Student.StudentCodes

全外连接:

SELECT     dbo.TB_English.studentCode, dbo.TB_English.englisfenji, dbo.TB_Student.StudentCodes, dbo.TB_Student.StudentName
FROM         dbo.TB_English <span style="color:#ff0000;">FULL OUTER JOIN</span>
                      dbo.TB_Student ON dbo.TB_English.studentCode = dbo.TB_Student.StudentCodes

总结:

   这次对于基础信息的操作让自己对于SQL查询等等熟悉了很多,对于实践检验知识的熟练程度,真的是一点都不假啊!尽管仅仅是一些小小的知识点,可是通过这次基础信息维护,让自己更加明确了这些基础性的学习一定要扎实啊!这些知识看似简单,可是假设不了解,真的会使自己的查询效率大大减少啊!

时间: 2024-10-11 12:00:19

考试系统的基础维护--基本表的连接操作的相关文章

表的连接操作(学习笔记)

在数据库中对于数据表的连接操作一共提供了两种: 内连接:也称等值连接在where中消除笛卡尔积的条件就是采用了内连接方式进行的 外连接: 内连接中只能显示等值满足的条件,不满足的条件则无法显示,如果希望显示特定表中的全部数据就要用要外连接 外连接分3种    在Oracle中使用(+)表示连接 左外连接(左连接) 左关系属性=右关系属性(+) 表示左外连接 右外连接(右连接) 左关系属性(+)=右关系属性 表示右外连接 全外连接(全连接) 示例一 (内连接) 将emp和dept表联合查询 SEL

SQL Tuning 基础概述06 - 表的连接方式:Nested Loops Join,Merge Sort Join &amp; Hash Join

nested loops join 嵌套循环 merge sort join 排序合并 hash join 哈希连接 nested loops join(嵌套循环)   驱动表返回几条结果集,被驱动表访问多少次,有驱动顺序,无须排序,无任何限制. 驱动表限制条件有索引,被驱动表连接条件有索引. hints:use_nl() merge sort join(排序合并)   驱动表和被驱动表都是最多访问1次,无驱动顺序,需要排序(SORT_AREA_SIZE),连接条件是<>或like导致无法使用

SQL应用与开发:(五)多个数据表的连接

数据库中的各个表中存储着不同的数据,用户往往需要用多个表中的数据来组合.提炼出所需要的信息.如果一个查询需要对多个表进行操作,就称为连接查询.连接查询的结果集或结果表称为表之间的连接.查询实际上是通过各个表之间共同列的关联性来查询数据的,它是关系型数据库查询最主要的特征. 实现连接的结果是在向数据库增添新类型的数据方面没有限制,具有很大的灵活性.通常总是通过连接创建一个新表,以包含不同表中的数据.如果新表有合适的域,就可以将它连接到现有的表. 1.简单连接操作 最简单的连接方式是在SELECT语

上层系统之基础数据维护(1)

才疏学浅,勤奋一点.--无感 一个制造企业的数据建模大到企业集团的信息管理,小可以追溯到生产车间的每一个数据地址.普通的MES系统主要针对工厂车间级别的数据建模与维护,一个MES系统的基础数据建模大概可以分为以下几个部分: MES系统最难的不是代码,而是逻辑.一个好的系统解决方案必然要逻辑清晰,操作便捷,能够适应管理人员和操作人员的使用习惯,满足客户的功能要求. 基础数据之间配置牵挂,公司下是工厂,工厂下有车间,车间下有不同的产线,之后又有工位,设备,停止器,地址等信息,每一个实体在整个系统中就

oracle表和对象基础维护笔记

一 oracle表和对象基础维护笔记 1.1 常见概念 1.2 创建表 1.3 表常见字段 1.4 增加或删除字段 1.5 更新字段 1.6 重命名表 1.7 改变表存储表空间和存储参数 1.8 删除表 1.9 表注释 1.10 分区表的管理 1.11 常用数据字典 二 约束 2.1 非空约束 2.2 主键约束 2.3 唯一性约束 2.4 外键约束 2.5 约束管理 三 索引 3.2 创建索引 3.3 改变索引存储参数 3.4 重建索引 3.5 索引碎片整理 3.6 删除索引 3.7 数据字典

在线考试系统视频教程和源码

购买视频教程QQ:1416759661  淘宝网担保交易 安全便捷 视频教程是高清完整版 放心购买 安心学习 旺旺: QQ: 点击购买 夜鹰教程的忠实粉丝们,经过几周的努力,夜鹰教程网在线考试系统视频教程终于录制完毕了,本套教程重点讲解了在线考试系统的数据库设计和程序开发,主要实现的功能包括的试题的新增和维护,题库的管理,考试主体信息的管理和维护,用户的管理和维护,体型全面覆盖了单选题.多选题.判断题.填空题.主观题(例如:作文),,考试的同时还有倒计时功能.此考试系统实现了主观题人工阅卷,非主

教务考试系统的总结

教务考试系统的总结 教务考试过去不久,也经历了好几次,经过许许多多的师哥师姐以及同学们的努力建 立.调试.测试.监考,还经过头脑风暴的交流以及总结,下面做一些文字的小结,在 以后我们自己做系统是自己能做到更好:                                                            一.考试系统本身: 1.界面 (1)英语听力界面进度条看不见,应该可以设成一直在题目上端的,有利于大家看到时 间,合理安排. 2.考试过程出现问题: (1)好的系统应该是

细节&amp;&amp;态度(考试系统导人员收获)

管理学院的统计学考试进行了三个晚上,在大家齐心协力的努力下,圆满结束了~!第一天晚上的时候,出现了两个转专业的学生出错,由于自己的疏忽大意,之前并没有给这两个学生修改信息,导致考试的过程中差点乱了阵脚!经过米老师的关爱之后自己真的恍然大悟,受益匪浅,为什么什么问题到了老师那都会变得那么简单? 其实每个问题都很简单,每个复杂的问题也是由若干个简单的小问题构成的,至于难不难关键就在于思考者的思维了!既然每个问题都很简单,那么又为何要把他们混为一谈变得那么复杂呢?这点真的很值得自己深刻反思一下! 知道

[JAVA考试系统]项目总结

 ITOO项目共分为两个方向:JAVA..NET. 而考试系统又是JAVA方向中,业务逻辑最为复杂的一个. 在被'考试系统'坑了'100天'以后,我仍然期盼能得到一个相对完美的结局. 项目开发周期: 11.10-01.27:参与ITOO1.0考试系统开发 01.28-02.16:担任ITOO2.0考试系统组长 第一次迭代 主要以:需求确定.原型设计.实体设计,为主.项目的开发只是涉及到单表的CRUD. (一)需求和原型的设计   立足于去年.NET的考试系统.这样的做法有利有弊: 1.利