欢迎来到天天文库
浏览记录
ID:39846573
大小:526.00 KB
页数:82页
时间:2019-07-13
《软件技术基础数据库技术》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三章关系数据库语言SQL(续)概述SQL的数据定义SQL的数据操纵SQL的视图定义SQL的数据控制嵌入式SQL联接查询(1of8)联接查询:涉及至少两个表的查询。SQL中没有专门的JOIN命令,而是通过SELECT语句中的WHERE子句来达到联接运算的目的,因此更加灵活、简便。联接查询(2of8)联接条件的一般格式为:[〈表名1〉.]〈列名1〉〈比较运算符〉[〈表名2〉.]〈列名2〉其中:比较运算符主要有:=、>、<、>=、<=和!=;联接谓词中的列名称为联接字段。联接条件中,联接字段类型必须是可
2、比的,但联接字段不一定是同名的。例1:(简单的联接查询)求选修C2课程的学生学号、姓名和成绩。SELECTStudent.Sno,Sname,GradeFROMStudent,SCWHEREStudent.Sno=SC.SnoANDSC.Cno=´C2´;联接条件或称联接谓词联接字段表名前缀(字段名唯一时可省略)Example--联接查询(3of8)例2:(多表联接)求学生学号、姓名、选修课程名、成绩。Example--联接查询(4of8)SC:SnoCnoGradeStudent:SnoSname
3、SsexSdeptSageCourse:CnoCnameCpnoCcreditC1G1C2HC12C3IC13C4JC22C5KC42S1C1AS1C2AS1C3AS1C5BS2C1BS2C2CS2C4CS3C2BS3C3CS3C4BS4C3BS4C5DS5C2CS5C3BS5C5BS6C4AS6C5AS1A1CS20S2B1CS21S3C0MA19S4D0CI19S5E1MA20S6F0CS22直观的查找过程SELECTStudent.Sno,Sname,Cname,GradeFROMStuden
4、t,Course,SCWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.Cno;例2续:(多表联接)求学生学号、姓名、选修课程名、成绩。Example--联接查询(5of8)C:CnoCnameCpnoCcreditC1G1C2HC12C3IC13C4JC22C5KC42Example--联接查询(6of8)例3:(单表或自身联接)求每一门课的间接先行课。SELECTFIRST.Cno,SECOND.CpnoFROMCourseFIRST,CourseSECONDWHE
5、REFIRST.Cpno=SECOND.Cno;SQL语句为:直观的查找过程C:CnoCnameCpnoCcreditC1G1C2HC12C3IC13C4JC22C5KC42FIRSTSECOND查询结果为:CnoCpnoC4C1C5C2别名引入Example--联接查询(7of8)例4:(外部连接)查询每个学生及其选修课程的情况包括没有选修课程的学生SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeFROMStudent,SCWHEREStudent
6、.Sno=SC.Sno(*);左外部连接:外连接符(*)出现在连接条件的左边右外部连接:外连接符(*)出现在连接条件的右边外部连接中不匹配的分量用NULL表示S1A1CS20S2B1CS21S3C0MA19Student:SnoSnameSsexSdeptSageS1C1AS1C2AS2C1BSC:SnoCnoGrade右外连接结果S1A1CS20C1AS1A1CS20C2AS2B1CS21C1BS3C0MA19Student.SnoSnameSsexSdeptSageCnoGradeExample
7、--联接查询(8of8)嵌套查询(子查询)概述带有IN谓词的子查询带有比较运算符的子查询带有ANY或ALL谓词的子查询带有EXISTS谓词的子查询嵌套查询(子查询)嵌套查询(子查询)嵌套查询由内向外处理SQL允许多层嵌套嵌套查询中最常用的谓词是IN嵌套查询层次分明、容易理解SELECTSno,SnameFROMStudentWHERESnoIN(SELECTSnoFROMSCWHERECnoIN(SELECTCnoFROMCourseWHERECname=´J´));将一个查询块嵌套在另一个查询块的
8、WHERE子句或HAVING短语的条件中的查询称为嵌套查询子查询父查询限制:子查询不能使用ORDERBY子句嵌套查询的分类不相关子查询:子查询的查询条件不依赖于父查询由里向外逐层处理。即每个子查询在上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件。相关子查询:子查询的查询条件依赖于父查询首先取外层查询中表的第一个元组,根据它与内层查询相关的属性值处理内层查询,若WHERE子句返回值为真,则取此元组放入结果表;然后再取外层表的下一个元组;重复这一过程,直至
此文档下载收益归作者所有