资源描述:
《SQL高级查询语句.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第七讲SQL高级查询语句鲁宁学时:2节1教学内容7.1特殊查询语句7.2联接查询7.2.1Where联接7.2.2JOIN联接7.2.3自联接7.3嵌套查询7.4查询结果输出7.5数据定义语言2教学目标及重点难点教学目标掌握特殊查询语句的使用方法掌握联接查询的使用方法掌握嵌套查询中IN关键字的使用方法了解数据表创表语句掌握视图的创建和使用方法能灵活应用SQL语句解决实际问题重点难点联接查询、子查询的理解及应用创表语句灵活使用37.1.1空值查询空值判断查询条件常用来搜索某一字段值为空值的记录,可以使用ISNULL
2、或ISNOTNULL关键字来指定这种查询条件。注:NULL值表示字段的数据值未知或不可用,它并不表示零(数字值或二进制值)、零长度的字符串或空白(字符值)。Select*FromClassInfoWhereClassDescisnullSelect*FromClassInfoWhereClassDescisNotnull47.1.2集合的并运算(Union)UNION运算符将两个或多个SELECT语句的结果组合成一个结果集。使用UNION组合的结果集都必须满足下列条件:具有相同的结构字段数目相同结果集中相应字段的
3、数据类型必须兼容UNION运算符的指定格式如下:SELECT语句UNION[ALL]SELECT语句5UNION示例--Union联接多个结果集Select*FromStudScoreInfoWhereStudScore>=60AndStudScore<=70UnionAllSelect*FromStudScoreInfoWhereStudScore>=90AndStudScore<=100--与上语句等价的语句Select*FromStudScoreInfoWhereStudScore>=90AndStudSc
4、ore<=100orStudScore>=60AndStudScore<=706学生各分数段等级人数Select'优秀',Count(*)FromStudScoreInfo;WhereStudNo='99070470'AndStudScore>=90;UnionAll;Select'良好',Count(*)FromStudScoreInfo;WhereStudNo='99070470'AndStudScore>=80AndStudScore<90;UnionAll;Select'及格',Count(*)FromS
5、tudScoreInfo;WhereStudNo='99070470'AndStudScore>=70AndStudScore<80;UnionAll;Select'不及格',Count(*)FromStudScoreInfo;WhereStudNo='99070470'AndStudScore<6077.2联接查询当一个查询同时涉及两个以上的表时,称为联接查询。联接查询是通过各个表之间共同属性列的关联来查询数据,数据表之间的联系是通过表的字段值来体现的联接操作的目的就是通过加在联接字段上的条件将多个表联接起来,
6、以便从多个表中查询数据。联接查询是关系数据库中最主要的查询,包括等值与非等值联接查询、自身联接查询、外联接查询等。表的联接方法有两种:方法1:表之间满足一定条件的行进行联接,此时FROM子句中指明进行联接的表名,WHERE子句指明联接的列名及其联接条件。方法2:利用关键字JOIN进行联接。87.2.1Where联接SelectStudInfo.StudNo,StudInfo.StudName,StudInfo.ClassID,ClassInfo.ClassNameFromStudInfo,ClassInfoWhe
7、reStudInfo.ClassID=ClassInfo.ClassIDAndStudInfo.StudNoin('99070470','99070401')StudInfo.StudNoin('99070470','99070401')为查询条件,而“StudInfo.ClassID=ClassInfo.ClassID为联接条件,“ClassID”为联接字段。联接条件的一般格式为:[<表名1>.]<列名1><比较运算符>[<表名2>.]<列名2>其中,比较运算符主要有:=、>、<、>=、<=、!=。引用两个表中
8、的列名相同的字段时必须用表名前缀限制字段来自于哪个表9Where联接SelectS.Studno,S.StudName,C.ClassName,SI.CourseID,SI.StudScoreFromStudInfoS,ClassInfoC,StudScoreInfoSIWhereS.Studno=SI.StudNoAndC.ClassID=S.ClassIDAndS.S