用好SQL Server命令必需的“三熟”.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用好SQL Server命令必需的“三熟” 发布时间:2010.04.26 09:24 ???? 来源:赛迪网???? 作者:赵玉勇 【赛迪网-IT技术报道】SQL Server使用过程中,最难应用的是命令,虽然命令不多,但命令格式多种多样,真要用好一条命令有效地解决一个问题确并不容易,只要做到下面的“三熟”,任何数据库处理任务其实都显得不那么难了。何谓三熟呢?下面通过一个数据库的实例来说明一下什么是三熟。 一熟:熟悉表及其要素 所谓一熟,指熟悉要操作的数据库及其表。所谓知己知彼,百战不殆,同样,在练习数据库命令时要熟悉自己要操作的对象,即各种表,这个表的名字,表的各列及列的名字,列对应的数据类型,只有将这些内容都熟悉了,才可能保证后面用到命令时与真实的情况对应,使抽象的命令变得动态生动起来。 示例表格共有三张,共同组成学生成绩数据库couser,三张表分别是Student学生表、S_Course选课表和Course课程表,这三张表的表结构分别见表1-1、表1-2和表1-3。 对于上面的三张表,以第一张为例,首先要弄明白其名称,也就是在数据库查询命令中要查的名称是student,这是在命令中很重要的一个选项,只有找到表名,才可能谈后面对表的操作,在命名上,要分清中文英文。另外,它由七列组成,每一列有不同的数据类型,这些也是后面对它查询等动做操作时必须注意的,还有一点值得注意,在这张表的列中,其名称我们用的是汉字,这在命令中要找第一列时,只要找到“学号”就可以了。 例如:查询计算机系的女生的学号与姓名。 要做这个查询动做,首先需要熟悉这张表的名字是student;另外,还需要弄明白其最后组成表的列数及其名称,即2列,也即学号与姓名;还有最后一点,如何表达女生,这还需进一步理解这个表的“性别”列,因为男为1,女则用0表示,所以女生自然而然的就有了,即:性别=0。查询命令也就有了: Select 学号,姓名 From student Where 性别=0 上面的命令非常简单,因为只涉及一张表与一个简单的条件,但多张表的熟悉也是在一张表基础之上的,所以用好SQL Server的命令,首先一点是熟悉表,对各张表的要素烂熟于胸,这是对它们操作的基础,也是用好命令的基础。 二熟:熟悉任务要求 只对表与其要素熟悉还不够,还要进一步明确相应处理任务或问题的要求,只有对要求熟悉,才能有的放矢。首要问题找到一个主要表,也就是包含最终要输出的列的表,但往往一张表在有些问题处理中不够,把握如下原则:如果一表可解决那最好,如果一表不能够解决,还要通过表间相同的列找到辅助表,这些要求有的在任务中明确提出了,有的则是暗含在条件中。在熟悉上面表的过程中,还要将要求一个个理顺,保证在命令中将各个项目灵活地运用上。 示例:将计算机系,全体学生的成绩设置为60分。 此例中,首先要明确要操作的主要表一定是和“成绩”相关的,三个表中只有选课表s_course中有“成绩”一项,所以这个表就是主表,主要的任务就在这里面,但这样只将原题中的一个要求去除了,还有计算机系如何表达的问题,因为主表即s_course中压根就没有系的问题,所以只能再找到一个辅助表,即学生表student,这里面有“所在系”,如何将“所在系”同“成绩”建立联系,也即两个表之间的联系,在两个表中都有的列是“学号”,所以“学号”就是突破口。现在,任务中的所有要求都理顺了,现在只要在命令中将上面的要求都体现出来就可以了,命令如下: update s_course set 成绩=60 where 学号 in ( select 学号 from student where 所在系=计算机) 当然,除了涉及两个表,有时可能会更多,也就是涉及多个表,例如下面的示例。 示例: 查询“陈晨”所选修的全部课程名称。 这个任务中,最终选择的是“课程名称”,所以主表是course,但course中是没有学生姓名的,所以没法查学生陈晨,怎么办呢,只有找有“姓名”的,即student,但这个表却不能直接与course建立联系,所以第二步首先需要一个中转的表s_course来完成信息的中转,使任务中最终找到姓名一项,这里只有通过“课程号”来建立s_course与course联系,最通过s_course与student中共有的学号建立联系,通过这两次中转,终于可以完成这项“伟大”的任务了。命令如下: select 课程名称 from course where 课程号in ( select 课程号 from s_course where 学号in (select 学号 from student where 姓名=陈晨) ) 三熟:熟悉命令格式 最后还有一项必须熟悉,

文档评论(0)

803322fw + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档