视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
考试系统的基础维护--基本表的连接操作
2020-11-09 15:02:29 责编:小采
文档


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

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

在对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

所出现的效果如下:

为什么会出现这种状况呢?其原因当然很简单,由于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 INNER JOIN
 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 LEFT OUTER JOIN
 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 RIGHT OUTER JOIN
 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 FULL OUTER JOIN
 dbo.TB_Student ON dbo.TB_English.studentCode = dbo.TB_Student.StudentCodes

总结:

这次对于基础信息的操作让自己对于SQL查询等等熟悉了许多,对于实践检验知识的熟练程度,真的是一点都不假啊!虽然只是一些小小的知识点,但是通过这次基础信息维护,让自己更加明白了这些基础性的学习一定要扎实啊!这些知识看似简单,但是如果不了解,真的会使自己的查询效率大大降低啊!

下载本文
显示全文
专题