资源描述:
《SQLServer2005数据库简明教程电子教案配套课件 第6章 查询技术.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章查询技术SELECT主要子句SELECT[ALL
2、DISTINCT][TOPexpression[PERCENT][WITHTIES]][INTOnew_table][FROM{}[,...n]][WHERE][GROUPBY[ALL]group_by_expression[,...n][WITH{CUBE
3、ROLLUP}][HAVING][ORDERBYorder_expression[ASC
4、DESC]][COMPU
5、TE {{AVG
6、COUNT
7、MAX
8、MIN
9、SUM}(expression)}[,...n][BYexpression[,...n]]SELECT主要子句参数说明如下:SELECT子句用于指定所选择的要查询的特定表中的列,它可以是星号(*)、表达式、列表、变量等。INTO子句用于指定所要生成的新表的名称。FROM子句用于指定要查询的表或者视图,最多可以指定16个表或者视图,用逗号相互隔开。WHERE子句用来限定查询的范围和条件。GROUPBY子句是分组查询子句。HAVING子句用于指定分组子句的条件。GROUPBY子句、HAVING子句和集合函数一
10、起可以实现对每个组生成一行和一个汇总值。ORDERBY子句可以根据一个列或者多个列来排序查询结果,在该子句中,既可以使用列名,也可以使用相对列号。ASC表示升序排列,DESC表示降序排列。COMPUTE子句使用集合函数在查询的结果集中生成汇总行。COMPUTEBY子句用于增加各列汇总行。6.1基本SELECT语句6.1.1投影查询6.1.2条件查询6.1.1投影查询最基本的SELECT语句仅有两个部分:要返回的列,和这些列源于的表。也就是说查询均为不使用WHERE子句的无条件查询,也称作投影查询。例6-1查询全体学生的学号、姓名和年龄。程序清单如下:
11、SELECTSNO,SN,AGEFROMS例6-2查询学生的全部信息。程序清单如下:SELECT*FROMS注意:用‘*’表示表的全部列名,而不必逐一列出。6.1.1投影查询例6-3查询选修了课程的学生号。程序清单如下:SELECTDISTINCTSNOFROMSC注意:应用DISTINCT消除查询结果以某列为依据的重复行。上例中,sc表中相同学号(SNO)的纪录只保留第一行,余下的具有相同学号的记录将从查询结果中清除。也就是每个同学保留一条选课纪录。另外,利用投影查询可控制列名的顺序,并可通过指定别名改变查询结果的列标题的名字,如下例。例6-4查询
12、全体学生的姓名、学号和年龄。程序清单如下:SELECTSNNAME,SNO,AGEFROMS注意:NAME为SN的别名,这里我们改变了列的显示顺序。6.1.2条件查询当要在表中找出满足某些条件的行时,则需使用WHERE子句指定查询条件。WHERE子句中,条件通常通过三部分来描述:列名;比较运算符;列名、常数。条件查询又可分为以下几方面内容:1、比较大小和确定范围;2、部分匹配查询;3、空值查询;4、查询的排序6.1.2条件查询1、比较大小和确定范围例6-5查询选修课程号为‘C1’的学生的学号和成绩。程序清单如下:SELECTSNO,SCOREFROM
13、SCWHERECNO=’C1’例6-6查询成绩高于85分的学生的学号、课程号和成绩。程序清单如下:SELECTSNO,CNO,SCOREFROMSCWHERESCORE>856.1.2条件查询1、比较大小和确定范围当WHERE子句需要指定一个以上的查询条件时,则需要使用逻辑运算符AND、OR和NOT将其连结成复合的逻辑表达式。其优先级由高到低为:NOT、AND、OR,用户可以使用括号改变优先级。例6-7查询选修C1或C2且分数大于等于85分学生的的学号、课程号和成绩。程序清单如下:SELECTSNO,CNO,SCOREFROMSCWHERE(CNO=
14、’C1’ORCNO=’C2’)ANDSCORE>=85SQL语句中也有一个特殊的BETWEEN运算符,用于检查某个值是否在两个值之间(包括等于两端的值)。例6-8查询工资在1000至1500之间的教师的教师号、姓名及职称。程序清单如下:SELECTTNO,TN,PROFFROMTWHERESALBETWEEN1000AND1500上面SQL语句等价于以下语句:SELECTTNO,TN,PROFFROMTWHERESAL>=1000ANDSAL<=15006.1.2条件查询1、比较大小和确定范围注意:在SELECT语句中可利用“IN”操作来查询属性值属
15、于指定集合的元组。利用“NOTIN”可以查询指定集合外的元组。如下面两个例子。例6-10查询选修C1或C2的