检索SQL SERVER数据库的若干问题分析

来源 :现代经济信息 | 被引量 : 0次 | 上传用户:lilyzhanglove
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:数据库检索是数据库应用的一个主要部分,数据检索的正确和高效,对于提高数据库应用的质量和效率具有重要意义。本文通过对数据库检索中常用的SQL SERVER典型语句进行分析和探讨,提出需要注意的问题和相应的解决方法,从而为数据库的设计使用者提供有益的参考。
  关键词:数据库;数据检索;SQL SERVER语句
  中图分类号:TP311 文献标识码:A 文章编号:1001-828X(2012)11-0-01
  随着计算机技术在越来越多的领域中广泛应用,数据库的应用也随之越来越多。在数据库应用中扮演着举足轻重角色的是数据库检索技术,正确使用检索数据的语句,提高检索数据的效率成为数据库设计的主要问题。下面就基于SQL SERVER数据库结合高校学生管理数据库阐述几种典型语句的使用方法。
  一、高效学生数据库简介
  高校学生数据库是数据库应用的一个典型实例,主要实现学生基本信息、课程和成绩的管理。该库中典型数据表结构及其之间关系如图1所示。
  为了方便描述检索数据库的方法,数据表作了简化,表中字段的英文表达略去,直接用中文书写。
  二、分组语句的应用
  SQL SERVER数据库使用 group by 子句进行分组,其作用是把一个数据集合按照指定的字段条件分成若干个小的数据集合,然后对每个小的数据集合进行数据统计。分组语句可以将一个或多个字段或表达式的值作为分组条件,结果集中每一组数据统计的结果占有一行。例如,要统计每个学生考试的总分,语句可以书写为select学号,SUM(分数)总分 from 成绩 group by 学号。分组的条件是根据学号这一个字段,因此每个学生在结果集中占有一行。
  若語句写为select学号,SUM(分数) 总分 from 成绩 group by 学号,课程编号,分组的条件是根据学号、课程编号这两个字段,那么分组的结果就是三个组里面再分别根据课程编号进一步分组,由于同一个学生不能重复学习同一门课程,那么每个学生选修了几门课程就又划分了几个组,因此这时成绩表中记录数就是最后的分组数。
  三、多表联接语句的应用
  在很多情况下,需要查询的数据来自SQL SERVER数据库中的多张表,这时需要对这多张数据库做联接。一般来说多表联接需要经过两个步骤,首先,分析各表之间的外键关系,即找出各表中的外键字段以及该字段作为主键的表;然后,分析需要对这些表进行何种类型的联接(内联接或者外联接);最后,书写SQL语句完成数据的检索。
  例如查询学生库中所有学生的姓名、课程名称和分数,其中,姓名在学生信息表中,课程名称在课程表中,分数在成绩表中。如图1所示,在成绩表中有两个外键,分别是学号字段和课程编号字段。学号在学生信息表中是主键,课程编号在课程表中是主键,因此成绩表和学生信息表可以联接,成绩表和课程表可以联接,经过成绩表这个桥梁表实现了这三表的联接。同时,分析该问题可以看出,需要检索的是已经有分数的学生,没有分数的学生排除在外,因而三表间做内联接即可完成。由此回答该问题的SQL语句可以书写为select 姓名, 课程名称, 分数 from 学生 t1 inner join 成绩 t2 on t1.学号=t2. 学号 inner join 课程 t3 on t2.课程编号=t3. 课程编号。
  四、子查询语句的应用
  有时候数据库检索的任务比较复杂,难以使用一个简单的查询完成,这时就需要把复杂的查询分解成一系列的逻辑步骤,这些逻辑步骤构成了子查询。子查询的定义是嵌套在 SELECT、INSERT、UPDATE、DELETE 语句或另一个子查询中的 SELECT 语句。子查询的使用主要有以下三种形式。
  1.子查询用作派生表,即子查询语句紧跟在from关键字的后面。例如SELECT max(T.人数) from ( SELECT count(*) as 人数, 学院编号 from 学生 group by 学院编号) AST。这个例子的子查询是统计每个系部各有多少个学生,把查询得到的结果集作为派生表提供给外层查询语句使用,进而统计出各系部最多的学生数。
  2.子查询用作表达式,即子查询语句放在select和from之间作数据统计。例如SELECT 学号, 分数-(SELECT AVG(分数) FROM 成绩 WHERE 课程编号=‘01’) AS 分差 FROM 成绩 WHERE 课程编号=‘01’。该语句的子查询用以统计01号课程的平均分,统计得到的分数提供给外层查询语句使用,进而计算出01号课程每位学生的分数与平均的差值,通过结果集可以快速的看出每个分数是高于平均分、低于平均分还是等于平均分。需要注意的是,这种情况下的子查询检索出的结果应当是一个单值。
  3.子查询用作条件,即子查询语句出现在where子句中,这种形式也是子查询用的最多的情形。例如SELECT 学号 FROM 成绩 WHERE WHERE 课程编号 = ‘01’ and 分数 = (SELECT max(分数) FROM 成绩 WHERE 课程编号 = ‘01’) 。由于where子句中不能直接使用聚合函数,因此该语句的子查询首先统计出01号课程的最高分,然后提供给外层的查询语句使用,这样进而检索出01号课程考最高分的学生的学号。子查询做条件时需要注意的是,如果子查询返回值是单值可以使用比较运算符做条件运算,如果是多值那么就应使用集合运算符in或exists关键字。
  综上所述,检索数据库是十分常见数据库应用,理解并合理使用检索数据库的语句可以大大提高数据库检索的正确率和效率。本文试图抛砖引玉,从而为数据库设计人员开发数据库应用提供一些思路。
  参考文献:
  [1]俞立梅,吕树红.SQL Server数据库应用技能教程[M].北京:北京大学出版社,2009.
  [2]张凌杰,张会娟.数据库基础与应用[M].北京:电子工业出版社,2011.
  [3]孔勇奇.大型数据库及其应用[M].北京:北京大学出版社,2011.
  作者简介:徐 枫(1973-),男,安徽安庆人,讲师,工作单位:浙江省杭州市浙江商业职业技术学院。
其他文献
作为一门实践性远较理论性更为突出的专业,酒店管理专业原有的实践教学方式突出地表现出粗放性和没有系统性,已不能满足社会对酒店管理人才的需求.这样一来,对我们教学工作者
目的:探讨全程导乐陪伴式分娩在初产妇护理中的应用效果.方法:选择在我院分娩的90例初产妇作为研究对象,按照护理方式的不同分为两组,观察组与对照组,每组各45例,观察组给予
摘要:本文分析了我国实施阶梯电价的基本情况,实施后的积极影响及面临的挑战,在此基础上探讨了未来的改进趋势。  关键词:阶梯电价;影响;改进趋势  中图分类号:TM715 文献标识码:A 文章编号:1001-828X(2012)11-0-01  实施阶梯电价就是要鼓励居民尽量减少电力消费,是促进节能减排,提高居民能源节约意识的重要手段,也是国际上普遍采取的措施。目前我国绝大多数省份都在国家发改委公布
2011年,我国全社会用电量平稳较快增长;发电装机容量继续增加,结构调整加快,装备技术水平进一步提高,节能减排取得新进展.抓好电力行业的节能减排工作,对于全国的节能减排具
摘 要:兰山区工业经济、商贸物流、城镇化建设等社会经济各项事业取得快速发展,在发展过程中涉及土地问题的群众来访总量呈现上升趋势,群众来信总量和12336违法举报线索总量呈现下降趋势的特点。本文对信访工作进行分析。  关键词:国土资源;信访工作;创新  一、主要做法  (一)认真落实信访“一岗双责”。高度重视信访工作,主要领导对国土资源重大信访亲自接待并及时调度、重要来信亲自阅批,带头落实“一岗双责
1983年4月~1997年5月,我们3所医院收治的绝经后妇女良性囊性畸胎瘤病人误诊17例,现报告如下。临床资料 17例病人,年龄52~56岁。17例中11例因无症状盆腔包块入院,5例因其他妇科疾病手术时偶然发现。术前静脉
生命中常常会有一些看似不起眼的东西如流水一般悄然逝去,却会在不经意间深深触动你的心弦,引起你生命的悸动。  我就曾经被一株柔弱而坚韧的藤蔓所打动。  在我老家的附近有一座老房子,已经很破旧了。其实,与其说是一间房子,还不如说是一圈斑驳的墙,支撑着一面漏洞百出、随时可能坍塌的屋顶。没有人知道这间房子的主人是谁,甚至没有人了解这间房子的历史——即便是村子里最老的老人,打他们记事时起,这间破房子似乎就已
期刊
目的:探讨早期主动性护理干预对重症监护室大手术后患者肌力的影响.方法:选取2015年3月-2017年8月期间本院ICU收治的92例大手术后患者作为研究对象,按不同护理方案平分为研究
摘 要:随着通讯行业的发展,通信建设监理企业也得到了长足的发展,但是我们在看到成绩的时候,也不能忽视不足。本文从监理企业发展的问题出发,进而提出了针对性的完善措施。  关键词:通信建设;监理企业;发展  一、军队行政消耗性经费管理现状分析  (一)思想认识不到位。近年来,随着生活水平的提高和消费观念的改变,艰苦奋斗的优良作风正逐渐被淡忘,这些问题表现在经济上就是行政消耗性费用始终居高不下,呈逐年增
随着市场经济体制的建立和不断完善,企业改革的不断深化,社会经济成分、组织形式、资源配置和利益关系及分配方式日益多元化,企业员工的身份、思想观念、生活方式以及文化需