武汉大学数据库系统概论 第八讲 高级SQL查询

上传人:沈*** 文档编号:184308757 上传时间:2023-02-01 格式:PDF 页数:56 大小:1.33MB
收藏 版权申诉 举报 下载
武汉大学数据库系统概论 第八讲 高级SQL查询_第1页
第1页 / 共56页
武汉大学数据库系统概论 第八讲 高级SQL查询_第2页
第2页 / 共56页
武汉大学数据库系统概论 第八讲 高级SQL查询_第3页
第3页 / 共56页
资源描述:

《武汉大学数据库系统概论 第八讲 高级SQL查询》由会员分享,可在线阅读,更多相关《武汉大学数据库系统概论 第八讲 高级SQL查询(56页珍藏版)》请在装配图网上搜索。

1、1第八讲第八讲高级高级SQLSQL查询查询2学完本讲后,你应该能够了解:1.高级SQL语句的语法不统一,不适用于所有的数据库系统;2.INTERSECT和EXCEPT是高级SQL提供的两个运算符,直接支持关系代数的“交”和“差”操作;3.高级SQL对FROM子句作了扩充,基本SQL的FROM子句中只包含表或视图列表,但高级SQL的FROM子句中可以包含子查询或连接表;4.准确、完整的SELECT语句的语法;5.SELECT语句的能力限制。本 讲 主 要 目 标3一一高级高级SQLSQL语法概述语法概述二二INTERSECTINTERSECT和和EXCEPTEXCEPT运算符运算符三三高级高级S

2、QLSQL中的中的FROMFROM子句子句四四SelectSelect语句的完整描述语句的完整描述五五SelectSelect语句的能力语句的能力4查 询 语 句 基 于 的 实 例查 询 语 句 基 于 的 实 例学号学号S#姓名姓名SN性别性别SE年龄年龄SA所在系所在系SD95001李勇男20CS95002刘晨女19IS95003王敏女18MA95004张立男19IS课程号课程号C#课程名课程名CN先行课先行课CP#学分学分CCC1数据库C54C2数学2C3信息系统C14C4操作系统C63C5数据结构C74C6数据处理2C7PASCAL语言C64学号学号S#课程号课程号C#成绩成绩G95

3、001C19295001C28595001C38895002C29095002C380SCSC一个学生一个学生-课程数据库课程数据库5高级高级SQLSQL语法语法概述概述6高 级高 级 S Q LS Q L 语 法 概 述语 法 概 述1.1.高级高级SQLSQL语法不统一语法不统一、不适用于所有的数不适用于所有的数据库系统据库系统2.2.大多数高级语法对某些关系查询提供了大多数高级语法对某些关系查询提供了新的解法新的解法3.3.高级高级SQLSQL提供提供“交交”和和“差差”运算运算4.4.高级高级SQLSQL对对FROMFROM子句进行了扩充子句进行了扩充7INTERSECTINTERSE

4、CT和和EXCEPTEXCEPT运算符运算符8INTERSECTINTERSECT和和EXCEPTEXCEPT运算符运算符1.1.UNIONUNION、INTERSECTINTERSECT和和EXCEPTEXCEPT的高级的高级SQLSQL子查询子查询形式形式SubquerySubquery UNIONUNION ALLALL|INTERSECTINTERSECT ALLALL|EXCEPTEXCEPT ALLALL SubquerySubquery Q Q1 1 UNIONUNION Q Q2 2表示子查询表示子查询Q Q1 1结果与结果与Q Q2 2结果的并;结果的并;Q Q1 1 INT

5、ERSECTINTERSECT Q Q2 2表示子查询表示子查询Q Q1 1结果与结果与Q Q2 2结果的交;结果的交;Q Q1 1 EXCEPTEXCEPT Q Q2 2表示子查询表示子查询Q Q1 1结果与结果与Q Q2 2结果的差;结果的差;9INTERSECTINTERSECT和和EXCEPTEXCEPT运算符运算符2.2.使用使用INTERSECTINTERSECT例例1 1 查询既选修了课程查询既选修了课程“C C1 1”又选修了课程又选修了课程“C C2 2”的学生的的学生的学号与姓名学号与姓名SELECTSELECT S S.S#,SNS#,SNFROMFROM S,SCS,S

6、CWHEREWHERE S S.S#S#=SCSC.S#S#ANDAND C#C#=C C1 1INTERSECTINTERSECTSELECTSELECT S S.S#,SNS#,SNFROMFROM S,SCS,SCWHEREWHERE S S.S#S#=SCSC.S#S#ANDAND C#C#=C C2 210INTERSECTINTERSECT和和EXCEPTEXCEPT运算符运算符3.3.使用使用EXCEPTEXCEPT例例2 2 查询没选修“95001”所选修的任何课程的学生的学号。SELECT S#FROM SEXCEPTSELECT SC1.S#FROM SC SC1,SC S

7、C2WHERE SC1.C#=SC2.C#AND SC2.S#=95001;11INTERSECTINTERSECT和和EXCEPTEXCEPT运算符运算符例例1 1和例和例2 2的的结果中有重结果中有重复行吗?复行吗?UNION UNION ALLALL产生产生的结果中的结果中有重复行有重复行12INTERSECTINTERSECT和和EXCEPTEXCEPT运算符运算符4.4.UNIONUNION ALLALL的使用的使用Q Q:=Q Q1 1 UNIONUNION ALLALL Q Q2 2假定元组假定元组X X在在Q Q1 1结果中出现结果中出现M M次次,在在Q Q2 2结果中出现结

8、果中出现N N次次UNIONUNION不使用不使用ALLALL时时,若若M M或或N N不为不为0 0,则则Q Q中中X X出现的次数出现的次数=1 1,否则否则=0 0UNIONUNION使用使用ALLALL时时,Q Q中中X X出现的次数出现的次数=M+NM+N假定假定Q Q1 1的查询结果为的查询结果为a,a,a,b,b,c,d,a,a,a,b,b,c,d,Q Q2 2的查询结果为的查询结果为a,a,b,b,b,c,ea,a,b,b,b,c,e则则 Q Q1 1 UNIONUNION ALLALL Q Q2 2 的结果为的结果为a,a,a,a,a,b,b,b,b,b,c,c,d,ea,a

9、,a,a,a,b,b,b,b,b,c,c,d,eQ Q1 1 UNIONUNION Q Q2 2 的结果为的结果为a,b,c,d,ea,b,c,d,e13INTERSECTINTERSECT和和EXCEPTEXCEPT运算符运算符5.5.INTERSECTINTERSECT ALLALL的使用的使用Q Q:=Q Q1 1 INTERSECTINTERSECT ALLALL Q Q2 2假定假定X X在在Q Q1 1结果中出现结果中出现M M次次,在在Q Q2 2结果中出现结果中出现N N次次INTERSECTINTERSECT不使用不使用ALLALL时时,若若M M或或N N为为0 0,则则Q

10、 Q中中X X出现的次数出现的次数=0 0,否则否则=1 1INTERSECTINTERSECT使用使用ALLALL时时,Q Q中中X X出现的次数出现的次数=MIN=MIN(M M,N N);假定假定Q Q1 1的查询结果为的查询结果为a,a,a,b,b,c,d,a,a,a,b,b,c,d,Q Q2 2的查询结果为的查询结果为a,a,b,b,b,c,ea,a,b,b,b,c,e则则 Q1 INTERSECT ALL Q2 Q1 INTERSECT ALL Q2 的结果为的结果为a,a,b,b,ca,a,b,b,cQ1 INTERSECT Q2 Q1 INTERSECT Q2 的结果为的结果为

11、a,b,ca,b,c14INTERSECTINTERSECT和和EXCEPTEXCEPT运算符运算符6.6.EXCEPTEXCEPT ALLALL的使用的使用Q Q:=Q Q1 1 EXCEPTEXCEPT ALLALL Q Q2 2假定假定X X在在Q Q1 1结果中出现结果中出现M M次次,在在Q Q2 2结果中出现结果中出现N N次次EXCEPTEXCEPT不使用不使用ALLALL时时,若若M M不为不为0 0且且N N为为0 0,则则Q Q中中X X出现的次数出现的次数=1 1,否则否则=0 0EXCEPTEXCEPT使用使用ALLALL时时,Q Q中中X X出现的次数出现的次数=M

12、M-N,N,若若M M-N N为负数为负数,则看作则看作0 0假定假定Q Q1 1的查询结果为的查询结果为a,a,a,b,b,c,d,a,a,a,b,b,c,d,Q Q2 2的查询结果为的查询结果为a,a,b,b,b,c,ea,a,b,b,b,c,e则则 Q Q1 1 EXCEPTEXCEPT ALLALL Q Q2 2 的结果为的结果为a,da,dQ Q1 1 EXCEPTEXCEPT Q Q2 2 的结果为的结果为dd15高级高级SQLSQL中的中的FROMFROM子句子句16高级高级SQLSQL中的中的FROMFROM子句子句1.1.基本基本SQLSQL的的FROMFROM语法形式语法形

13、式FROMFROM tableref,tablereftableref:=tablename AScorr_name17高级高级SQLSQL中的中的FROMFROM子句子句2.2.高级高级SQLSQL中的中的FROMFROM子句语法形式子句语法形式FROMFROM tableref,tablereftableref:=tablename AScorr_name(colname,colname)|(subquery)AScorr_name(colname,colname)|tableref1INNER|LEFT|RIGHT|FULLOUTER JOIN tableref2ON search_co

14、ndition|USING(colname,colname)简单形式子查询作为表使用连接表18高级高级SQLSQL中的中的FROMFROM子句子句3.3.简单形式简单形式 用带括号的列名序列为从一个表(FROM子句中的表)中检索到的所有列重新命名tableref:=tablename AScorr_name(colname,colname)例例5 5 查询年龄大于查询年龄大于1919岁的学生学号和姓名岁的学生学号和姓名SELECT Student_number,Student_name SELECT Student_number,Student_name FROM S AS S1 FROM S

15、 AS S1(Student_number,Student_nameStudent_number,Student_name)WHERE SA 19WHERE SA 19;19高级高级SQLSQL中的中的FROMFROM子句子句4.4.子查询当作表使用子查询当作表使用 将子查询放在将子查询放在FROMFROM子句中子句中,使得一个子查询或使得一个子查询或SELECTSELECT语句可以自由地检索另一个子查询的结果语句可以自由地检索另一个子查询的结果例例6 6 查询至少有查询至少有3030人选修的课程的信息人选修的课程的信息SELECTSELECT C C.C#,CN,CP#,CCC#,CN,CP

16、#,CCFROMFROM(SELECTSELECT C#C#FROMFROMSCSCGROUPGROUP BYBY C#C#HAVINGHAVING COUNT(S#)=COUNT(S#)=3030)X X,C CWHEREWHERE X X.C#C#=C C.C#C#;20高级高级SQLSQL中的中的FROMFROM子句子句4.4.子查询当作表使用子查询当作表使用例例7 7 查询学生的最高成绩的平均值查询学生的最高成绩的平均值SELECTSELECT AVGAVG(t t.x x)FROMFROM(SELECTSELECT S#S#,MAXMAX(G G)ASAS x xFROMFROMSC

17、SCGROUPGROUP BYBY S#S#)t t;21高级高级SQLSQL中的中的FROMFROM子句子句5.5.特殊的连接结果当作表使用特殊的连接结果当作表使用用ON search_condition形式指定所要参加连接的列之间应该满足的条件用USING子句指定两表中参加连接的列名集合例例8 8 查询选修过课程的学生学号查询选修过课程的学生学号、姓名姓名、课程号及成绩课程号及成绩用用ONON search_conditionsearch_conditionSELECTSELECT S S.S#,SN,C#,GS#,SN,C#,GFROMFROM S S JOINJOIN SCSC ONO

18、N S S.S#S#=SCSC.S#S#;用用USINGUSING子句子句SELECTSELECT S S.S#,SN,C#,GS#,SN,C#,GFROMFROM S S JOINJOIN SCSC USINGUSING(S#S#);22高级高级SQLSQL中的中的FROMFROM子句子句6.6.JOINJOIN的语法形式的语法形式tablereftableref1 1 INNERINNER|LEFT|RIGHT|FULLOUTER|LEFT|RIGHT|FULLOUTER JOINJOIN tablereftableref2 2LEFT|RIGHT|FULLOUTERJOINLEFT|RI

19、GHT|FULLOUTERJOIN功能:功能:FULLFULLOUTEROUTER JOINJOIN外连接外连接LEFTLEFTOUTEROUTER JOINJOIN左外连接左外连接RIGHTRIGHT OUTEROUTER JOINJOIN右外连接右外连接23高级高级SQLSQL中的中的FROMFROM子句子句6.6.JOINJOIN的语法形式的语法形式FULLFULLOUTEROUTER JOINJOIN外连接外连接实现关系代数R OSSELECT*SELECT*FROM R FULL OUTER JOIN S USING FROM R FULL OUTER JOIN S USING(B

20、B,C C);ABCa1b1c1a1b2c3a2b1c2BCDb1c1d1b1c1d3b2c2d2b1c2d4RSABCDa1b1c1d1a1b1c1d3a1b2c3b2c2d2a2b1c2d4R OS24高级高级SQLSQL中的中的FROMFROM子句子句6.6.JOINJOIN的语法形式的语法形式LEFTLEFTOUTEROUTER JOINJOIN左外连接左外连接实现关系代数R LOSSELECT*SELECT*FROM R LEFT OUTER JOIN S USING FROM R LEFT OUTER JOIN S USING(B B,C C);ABCa1b1c1a1b2c3a2b

21、1c2BCDb1c1d1b1c1d3b2c2d2b1c2d4RSABCDa1b1c1d1a1b1c1d3a1b2c3a2b1c2d4R LOS25高级高级SQLSQL中的中的FROMFROM子句子句6.6.JOINJOIN的语法形式的语法形式RIGHTRIGHTOUTEROUTER JOINJOIN右外连接右外连接实现关系代数R ROSSELECT*SELECT*FROM R RIGHT OUTER JOIN S USING FROM R RIGHT OUTER JOIN S USING(B B,C C);ABCa1b1c1a1b2c3a2b1c2BCDb1c1d1b1c1d3b2c2d2b1

22、c2d4RSABCDa1b1c1d1a1b1c1d3b2c2d2a2b1c2d4R ROS26SelectSelect语句的语句的完整描述完整描述27SelectSelect语句的完整描述语句的完整描述1.1.基本基本SQLSQL子查询和子查询和SELECTSELECT语句的通用形式语句的通用形式subquery:=SELECT ALL|DISTINCT*|exprAS c_alias,expr ASc_alias FROM tableref,tablerefWHERE search_conditionGROUP BY colname,colnameHAVING search_conditio

23、n|subquery UNION ALL subquerySELECTstatement:=subqueryORDERBYresult_columnASC|DESC,result_column ASC|DESC28SelectSelect语句的完整描述语句的完整描述2.2.求解求解SELECTSELECT语句的概念性步骤语句的概念性步骤首先,对FROM子句中所有的表做笛卡儿积接着,删除不满足WHERE子句的行根据GROUP BY子句对剩余的行进行分组删除不满足HAVING子句的组求出SELECT子句列表中的表达式的值若关键词DISTINCT存在,则删除重复的行求解子查询的UNION、INTER

24、SECT和EXCEPT最后,若有ORDER BY子句存在,则对所有选出来的行进行排序29SelectSelect语句的完整描述语句的完整描述3.3.ORDERORDER BYBY子句子句限定:ORDER BY子句不能出现在子查询形式中功能:将最后的结果行根据出现在选择列表中的一个或多个结果列排序。当选择列表所指定的结果列多于一个时,结果行首先根据排在最前面的结果列来排序,仅当根据最先的j个结果列排序所得的行序相同时,才需要考虑位于第j+1个位置上的结果列。SQL允许在ORDER BY子句中用列号来指定空值的排序:视产品而定30SelectSelect语句的完整描述语句的完整描述4.4.标识符标

25、识符一般的SQL标识符是大小写无关的一个标识符必须以一个字母打头,之后则可以包含字母、数字或下划线31SelectSelect语句的完整描述语句的完整描述5.5.表达式表达式expr:=numexpr|strvexpr|datexpr|数值表达式和串值表达式是出现频率最高的表达式数值表达式和串值表达式是基本SQL的一部分数值表达式 是一个由常数、表属性、算术运算符、内部算术函数以及集合函数所组成的算术表达式。串值表达式 是一个由常数、表属性、串接运算符、内部串值函数以及集合函数所组成的串值表达式。32SelectSelect语句的完整描述语句的完整描述5.5.表达式表达式数值表达式的递归定义数

26、值表达式例子1.Val:常量或变量6,7.00,:GRADE2.列名G 3.限定符.列名SC.G4.数值表达式 算术表达式数值表达式7.00+SC.G5.(数值表达式)()6.数值函数(数值表达式)sqrt(7.00+SC.G),char_length(str)7.集合函数(数值表达式)sum(SC.G)8.(返回单个值的子查询)(select max(G)from SC)9.cast 表达式cast(substring(S#from 5 for 2)as integer)10.case表达式case when G=60 then G else 0 end33SelectSelect语句的完整

27、描述语句的完整描述5.5.表达式表达式串值表达式的递归定义串值表达式例子1.Val:常量或变量Boston,TipTop,:SN2.列名S#,SN3.限定符.列名S.S#,S.SN4.串值表达式 串接运算符串值表达式00|S.S#5.(串值表达式)(00|S.S#)6.串值函数(串值表达式)substring(00|S.S#)from 1 for 4)7.集合函数(串值表达式)max(S.S#)8.(返回单个值的子查询)(select max(S.S#)from SC)9.cast 表达式cast(G as char(4)10.case表达式case when G 60 then G else

28、 0 end34SelectSelect语句的完整描述语句的完整描述6.6.函数函数数学函数串处理函数35SelectSelect语句的完整描述语句的完整描述7.7.谓词谓词基本SQL标准包含七种谓词:谓词形式比较谓词expr1 expr2|(subquery)BETWEEN谓词expr1 NOT BETWEEN expr2 and expr3量化谓词expr1 ALL|ANY|(subquery)IN谓词expr1 NOT IN (subquery)EXISTS谓词NOT EXISTS (subquery)IS NULL谓词colname IS NOT NULLLIKE谓词colname N

29、OT LIKE val ESCAPE val 36SelectSelect语句的完整描述语句的完整描述8.8.搜索条件搜索条件搜索条件的递归定义:搜索条件谓词(搜索条件)NOT 搜索条件搜索条件AND 搜索条件搜索条件 OR 搜索条件37SelectSelect语句的完整描述语句的完整描述9.9.关于谓词的讨论关于谓词的讨论比较谓词:expr1 expr2|(Sunquery)如果在比较谓词的任何一边(左边或右边)出现了空值,那么就会导致UNKNOWN的结果。例9 查询年龄不小于19以及小于19的学生信息SELECT*FROM SWHERE SA=19 OR SA=19 OR SA19;学号学

30、号S#姓名姓名SN性别性别SE年龄年龄SA所在系所在系SD95001李勇男20CS95002刘晨女IS95003王敏女18MA95004张立男19ISSSELECT*FROM S;查询结果不同学号学号S#姓名姓名SN性别性别SE年龄年龄SA所在系所在系SD95001李勇男20CS95003王敏女18MA95004张立男19IS39SelectSelect语句的完整描述语句的完整描述9.9.关于谓词的讨论关于谓词的讨论谓词的值:TRUE(T)、FALSE(F)、UNKNOWN(U)在WHERE子句中进行测试的特定行(或在HAVING子句中的组)可能使谓词等于UNKNOWN,这基本上意味着在测试该

31、行的时候产生了空值或空的子查询结果。UNKNOWN值在逻辑运算中的表现:ANDTFUTTFUFFFFUUFUNOTTFFTUUORTFUTTTTFTFUUTUU40SelectSelect语句的完整描述语句的完整描述9.9.关于谓词的讨论关于谓词的讨论IS NULL谓词colname IS NOT NULL例10 查询缺少成绩的学生的学号和相应的课程号。SELECTS#,C#FROMSCWHEREGISNULL;41SelectSelect语句的完整描述语句的完整描述9.9.关于谓词的讨论关于谓词的讨论BETWEEN谓词expr1 NOT BETWEEN expr2 AND expr3例11

32、查询选修课程“C1”的成绩大于等于60分但小于等于100分的学生的学号。SELECTS#FROMSCWHEREG BETWEEN 60 AND 100ANDC#=C1;42SelectSelect语句的完整描述语句的完整描述9.9.关于谓词的讨论关于谓词的讨论LIKE谓词colname NOT LIKE val ESCAPE val 包含通配符在内的所有可用在模式串val中的特殊字符:模式串中的字符模式串中的字符含义含义下划线(_)任意单个字符的通配符百分号(%)包含零个或多个字符的任意序列的通配符转义字符用在需要按字面含义引用的字符之前所有其它字符代表它们自己val代表模式串,通常由一般字符

33、和特殊字符组成并且被引号包围着43SelectSelect语句的完整描述语句的完整描述9.9.关于谓词的讨论关于谓词的讨论LIKE谓词colname NOT LIKE val ESCAPE val 例例1212 查询名字的第二个字是查询名字的第二个字是“红红”的学生信息的学生信息SELECTSELECT*FROMFROMS SWHEREWHERE SNSN LIKELIKE _ _ _ _ 红红%;44SelectSelect语句的完整描述语句的完整描述9.9.关于谓词的讨论关于谓词的讨论LIKE谓词colname NOT LIKE val ESCAPE val 例例1313 查询学号的第二个

34、字符不是查询学号的第二个字符不是“%”的学生信息的学生信息SELECTSELECT*FROMFROMS SWHEREWHERE S#S#NOTNOT LIKELIKE _ _%ESCAPEESCAPE ;使用ESCAPE子句为每个SELECT语句定义不同的转义符。当模式包含一个转义符时,紧随其后的字符按它的字面含义来使用45SelectSelect语句的语句的能力能力46SelectSelect 语语 句句 的的 能能 力力1.1.过程性语言与非过程性语言过程性语言与非过程性语言过程性语言过程性语言(proceduralprocedural languagelanguage)用该语言编写的程序

35、应写明完成某项任务用该语言编写的程序应写明完成某项任务的的有序指令序列有序指令序列非过程性语言非过程性语言(nonnon-proceduralprocedural languagelanguage)用该语言编写的程序直接用该语言编写的程序直接描述了所期望的描述了所期望的结果结果。怎么做怎么做做什么做什么47SelectSelect 语语 句句 的的 能能 力力1.1.过程性语言与非过程性语言过程性语言与非过程性语言非过程性语言非过程性语言(nonnon-proceduralprocedural languagelanguage)包含了两个方面:包含了两个方面:必须指明要做什么必须指明要做什么,

36、而不必说明怎么做而不必说明怎么做程序的各语句之间不存在需要程序员来考虑的程序的各语句之间不存在需要程序员来考虑的隐含顺序隐含顺序48SelectSelect 语语 句句 的的 能能 力力2.2.非过程性语言便于处理即席查询非过程性语言便于处理即席查询即席查询即席查询(adad hochoc queryquery)源于紧急的需求并且不可能用预先编好的程序来解决的查询实际应用环境下实际应用环境下,既存在例行查询既存在例行查询,也存在也存在即席查询即席查询非过程性语言既可以通过预先编制应用程序非过程性语言既可以通过预先编制应用程序满足用户的例行查询要求满足用户的例行查询要求,也便于用户临时也便于用户

37、临时处理即席查询要求处理即席查询要求49SelectSelect 语语 句句 的的 能能 力力3.3.SELECTSELECT语句的非过程性语句的非过程性例14 求选修了C2号课程的学生姓名。用SQL表达:SELECTS.SNFROMS,SCWHERES.S#=SC.S#AND SC.C#=C2;可以用多种等价的关系代数表达式表达:Q1:=(SSC)where S.S#=SC.S#and SC.C#=C2)SNQ2:=(S SC)where SC.C#=C2)SNQ3:=(S (SC where SC.C#=C2)SNSELECTSELECT语语句的非过句的非过程化程度程化程度比关系代比关系代

38、数高数高50SelectSelect 语语 句句 的的 能能 力力4.4.图灵能力图灵能力图灵能力图灵能力(TuringTuring powerpower)能执行有限长度的简单过程性程序的机能执行有限长度的简单过程性程序的机器可以执行任何算法的计算过程器可以执行任何算法的计算过程没有一种非过程性语言可能具备图灵能力没有一种非过程性语言可能具备图灵能力可通过将数据库语言与过程性语言结合可通过将数据库语言与过程性语言结合,来来提供图灵能力提供图灵能力 嵌入式数据库语言嵌入式数据库语言51SelectSelect 语语 句句 的的 能能 力力5.5.基本基本SELECTSELECT语句的有限能力语句

39、的有限能力缺少某些集合函数并不允许集合函数嵌套缺少某些集合函数并不允许集合函数嵌套例例1515 求学生成绩表中成绩的求学生成绩表中成绩的中值中值(medianmedian)例例1616 求每个学生总学分的平均学分求每个学生总学分的平均学分SELECTSELECT AVGAVG(SELECTSELECT SUMSUM(CCCC)FROMFROM SCSC,C CWHEREWHERE SCSC.C#C#=C C.C#C#GROUPGROUP BYBY S#S#);基本基本SQLSQL不允许子查询不允许子查询出现在集合出现在集合函数的内部函数的内部52SelectSelect 语语 句句 的的 能能

40、 力力5.5.基本基本SELECTSELECT语句的有限能力语句的有限能力基本基本SQLSQL不能创建的报表不能创建的报表例例1717 求学生的平均成绩求学生的平均成绩,并按照平均成绩低于并按照平均成绩低于6060分分、6060-7979、8080-100100分类统计学生人数分类统计学生人数不可能由基本不可能由基本SQLSQL语句产生语句产生可以用高级可以用高级SQLSQL功能实现:功能实现:CASTCAST表达式表达式+FROM+FROM包含子查询包含子查询可以由过程性编程语言产生可以由过程性编程语言产生53SelectSelect 语语 句句 的的 能能 力力5.5.基本基本SELECT

41、SELECT语句的有限能力语句的有限能力不能实现传递闭包不能实现传递闭包(transitivetransitive closureclosure)例例1818 求课程求课程“C C3 3”的所有必须先修的课程的所有必须先修的课程课程号课程号C#课程名课程名CN先行课先行课CP#学分学分CCC1数据库C54C2数学2C3信息系统C14C4操作系统C63C5数据结构C74C6数据处理2C7PASCAL语言C64CC3 C3 C1 C1 C5 C5 C7 C7 C6C6武汉大学国际软件学院武汉大学国际软件学院54SelectSelect 语语 句句 的的 能能 力力5.5.基本基本SELECTSEL

42、ECT语句的有限能力语句的有限能力布尔条件的有限能力布尔条件的有限能力GerardGerard SaltonSalton 文本检索领域的创始人文本检索领域的创始人之一列举大量的例子说明:布尔条件不能提之一列举大量的例子说明:布尔条件不能提供解决某些重大问题的能力供解决某些重大问题的能力例例1919 查询平均成绩排名前查询平均成绩排名前2020位的学生的学号位的学生的学号55学完本讲后,你应该能够了解:1.高级SQL语句的语法不统一,不适用于所有的数据库系统;2.INTERSECT和EXCEPT是高级SQL提供的两个运算符,直接支持关系代数的“交”和“差”操作;3.高级SQL对FROM子句作了扩充,基本SQL的FROM子句中只包含表或视图列表,但高级SQL的FROM子句中可以包含子查询或连接表;4.准确、完整的SELECT语句的语法;5.SELECT语句的能力限制。本 讲 主 要 目 标56问问题题讨讨论论1.1.你所使用的关系数据库管理系统的你所使用的关系数据库管理系统的哪些哪些SQLSQL语句属于高级语句属于高级SQLSQL语句语句?

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!