数据库查询技术ppt.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据库查询技术ppt.ppt》由会员分享,可在线阅读,更多相关《数据库查询技术ppt.ppt(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4 4章章 查询技术查询技术SELECT 主要子句SELECTALL|DISTINCTTOPexpressionPERCENTWITHTIESINTOnew_tableFROM,.nWHEREGROUPBYALLgroup_by_expression,.nWITHCUBE|ROLLUPHAVINGORDERBYorder_expressionASC|DESCCOMPUTEAVG|COUNT|MAX|MIN|SUM(expression),.nBYexpression,.nSELECT 主要子句参数说明如下:vSELECT子句用于指定所选择的要查询的特定表中的列,它可以是星号(*)、表达式、
2、列表、变量等。vINTO子句用于指定所要生成的新表的名称。vFROM子句用于指定要查询的表或者视图,最多可以指定14个表或者视图,用逗号相互隔开。vWHERE子句用来限定查询的范围和条件。vGROUPBY子句是分组查询子句。vHAVING子句用于指定分组子句的条件。vGROUPBY子句、HAVING子句和集合函数一起可以实现对每个组生成一行和一个汇总值。vORDERBY子句可以根据一个列或者多个列来排序查询结果,在该子句中,既可以使用列名,也可以使用相对列号。vASC表示升序排列,DESC表示降序排列。vCOMPUTE子句使用集合函数在查询的结果集中生成汇总行。vCOMPUTEBY子句用于增加
3、各列汇总行。4.1 基本SELECT语句4.1.1投影查询4.1.2条件查询4.1.1 投影查询v最基本的SELECT语句仅有两个部分:要返回的列,和这些列源于的表。也就是说查询均为不使用WHERE子句的无条件查询,也称作投影查询。v例4-1查询全体学生的学号、姓名和年龄。程序清单如下:SELECTSNO,SN,AGEFROMSv例4-2查询学生的全部信息。程序清单如下:SELECT*FROMSv注意:用*表示表的全部列名,而不必逐一列出。4.1.1 投影查询v例4-3查询选修了课程的学生号。程序清单如下:SELECTDISTINCTSNOFROMSC注意:应用DISTINCT消除查询结果以某
4、列为依据的重复行。上例中,sc表中相同学号(SNO)的纪录只保留第一行,余下的具有相同学号的记录将从查询结果中清除。也就是每个同学保留一条选课纪录。v另外,利用投影查询可控制列名的顺序,并可通过指定别名改变查询结果的列标题的名字,如下例。v例4-4查询全体学生的姓名、学号和年龄。程序清单如下:SELECTSNNAME,SNO,AGEFROMSv注意:NAME为SN的别名,这里我们改变了列的显示顺序。4.1.2 条件查询v当要在表中找出满足某些条件的行时,则需使用WHERE子句指定查询条件。WHERE子句中,条件通常通过三部分来描述:列名;比较运算符;列名、常数。v条件查询又可分为以下几方面内容
5、:1、比较大小和确定范围;2、部分匹配查询;3、空值查询;4、查询的排序4.1.2 条件查询1、比较大小和确定范围v例4-5查询选修课程号为C1的学生的学号和成绩。程序清单如下:SELECTSNO,SCOREFROMSCWHERECNO=C1v例4-4查询成绩高于85分的学生的学号、课程号和成绩。程序清单如下:SELECTSNO,CNO,SCOREFROMSCWHERESCORE854.1.2 条件查询1、比较大小和确定范围v当WHERE子句需要指定一个以上的查询条件时,则需要使用逻辑运算符AND、OR和NOT将其连结成复合的逻辑表达式。其优先级由高到低为:NOT、AND、OR,用户可以使用括
6、号改变优先级。v例4-7查询选修C1或C2且分数大于等于85分学生的的学号、课程号和成绩。程序清单如下:SELECTSNO,CNO,SCOREFROMSCWHERE(CNO=C1ORCNO=C2)ANDSCORE=85SQL语句中也有一个特殊的BETWEEN运算符,用于检查某个值是否在两个值之间(包括等于两端的值)。v例4-8查询工资在1000至1500之间的教师的教师号、姓名及职称。程序清单如下:SELECTTNO,TN,PROFFROMTWHERESALBETWEEN1000AND1500v上面SQL语句等价于以下语句:SELECTTNO,TN,PROFFROMTWHERESAL=1000
7、ANDSAL=15004.1.2 条件查询1、比较大小和确定范围v注意:在SELECT语句中可利用“IN”操作来查询属性值属于指定集合的元组。利用“NOTIN”可以查询指定集合外的元组。如下面两个例子。v例4-10查询选修C1或C2的学生的学号、课程号和成绩。程序清单如下:SELECTSNO,CNO,SCOREFROMSCWHERECNOIN(C1,C2)v此语句也可以使用逻辑运算符“OR”实现。相应的程序清单如下:SELECTSNO,CNO,SCOREFROMSCWHERECNO=C1ORCNO=C24.1.2 条件查询2、部分匹配查询v当不知道完全精确的値时,用户还可以使用LIKE或NOT
8、LIKE进行部分匹配查询(也称模糊查询)。LIKE运算使我们可以使用通配符来执行基本的模式匹配。v使用LIKE运算符的一般格式为:LIKE字符串常量的字符可以包含如表4-2所示的通配符。通配符 说明_表示任意单个字符%表示任意长度的字符串 与特定范围(例如,a-f)或特定集(例如,abcdef)中的任意单字符匹配。与特定范围(例如,a-f)或特定集(例如,abcdef)之外的任意单字符匹配。表4-2通配符及说明 4.1.2 条件查询2、部分匹配查询v例4-12查询所有姓张的教师的教师号和姓名。程序清单如下:SELECTTNO,TNFROMTWHERETNLIKE张%v例4-13查询姓名中第二个
9、汉字是“力”的教师号和姓名。程序清单如下:SELECTTNO,TNFROMTWHERETNLIKE_力%4.1.2 条件查询3、空值查询v某个字段没有值称之为具有空值(NULL)。通常没有为一个列输入值时,该列的值就是空值。空值不同于零和空格,它不占任何存储空间。例如,某些学生选课后没有参加考试,有选课记录,但没有考试成绩,考试成绩为空值,这与参加考试,成绩为零分的不同。v例4-15查询没有考试成绩的学生的学号和相应的课程号。程序清单如下:SELECTSNO,CNOFROMSCWHERESCOREISNULLv注意:这里的空值条件为ISNULL,不能写成SCORE=NULL。4.1.2 条件查
10、询4查询的排序v当需要对查询结果排序时,应该在SELECT语句中使用ORDERBY子句。ORDERBY子句包括了一个或多个用于指定排序顺序的列名,排序方式可以指定,DESC为降序,ASC为升序,缺省时为升序。ORDERBY子句必须出现在其他子句之后。vORDERBY子句支持使用多列。可以使用以逗号分隔的多个列作为排序依据:查询结果将先按指定的第一列进行排序,然后再按指定的下一列进行排序。v例4-14查询选修C1的学生学号和成绩,并按成绩降序排列。程序清单如下:SELECTSNO,SCOREFROMSCWHERECNO=C1ORDERBYSCOREDESC4.2 分组查询4.2.1聚合函数和GR
11、OUPBY子句4.2.2GROUPBY和WHERE子句、HAVING子句4.2.1 聚合函数和GROUP BY子句GROUPBY子句可以将查询结果按属性列或属性列组合在行的方向上进行分组,每组在属性列或属性列组合上具有相同的聚合值。如果聚合函数没有使用GROUPBY子句,则只为SELECT语句报告一个聚合值。常用的聚合函数,如表4-3所示。函数名称MINMAXSUMAVGCOUNTCOUNT(*)功能求一列中的最小值求一列中的最大值按列计算值的总和按列计算平均值按列值计个数返回表中的所用行数表4-3常用的聚合函数 4.2.1 聚合函数和GROUP BY子句v例4-18通过查询求学号为S1学生的
12、总分和平均分。程序清单如下:SELECTSUM(SCORE)ASTotalScore,AVG(SCORE)ASAveScoreFROMSCWHERESNO=S1v注意:函数SUM和AVG只能对数值型字段进行计算。v例4-19通过查询求选修C1号课程的最高分、最低分及之间相差的分数程序清单如下:SELECTMAX(SCORE)ASMaxScore,MIN(SCORE)ASMinScore,MAX(SCORE)-MIN(SCORE)ASDiffFROMSCWHERE(CNO=C1)4.2.1 聚合函数和GROUP BY子句v例4-20通过查询求管理系学生的总数。程序清单如下:SELECTCOUNT
13、(SNO)FROMSWHEREDEPT=管理v例4-21通过查询求学校中共有多少个系。程序清单如下:SELECTCOUNT(DISTINCTDEPT)ASDeptNumFROMSv注意:加入关键字DISTINCT后表示消去重复行,可计算字段“DEPT“不同值的数目。COUNT函数对空值不计算,但对零进行计算。v例4-22统计有成绩的学生的人数。程序清单如下:SELECTCOUNT(SCORE)FROMSCv注意:上例中成绩为零的同学计算在内,没有成绩(即为空值)的不计算。4.2.1 聚合函数和GROUP BY子句v例4-23利用特殊函数COUNT(*)求工商管理学院学生的总数程序清单如下:SE
14、LECTCOUNT(*)FROMSWHEREDEPT=工商v注意:上例中,COUNT(*)用来统计元组的个数。此函数不消除重复行,也不允许使用DISTINCT关键字。v在分组查询中,只要表达式中不包括聚合函数,就可以按该表达式分组。如下例所示。v例4-24查询每位学生的学号及其选课的门数。程序清单如下:SELECTSNO,COUNT(*)ASC_NUMFROMSCGROUPBYSNOvGROUPBY子句按CNO的值分组,所有具有相同CNO的元组为一组,对每一组使用函数COUNT进行计算,统计出各位学生选课的门数。v例4-25统计各年度出生的雇员人数程序清单如下。Useadventurework
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 查询 技术 ppt
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内