数据库原理及应用(何玉洁)第二版第4章.ppt
根据要查询的列数据以及数据的选例.去掉上例中的重复列。 SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade,XKLBFROMStudentJOINSCONStudent.Sno=SC.Sno根据要查询的列数据以及数据的选择条件所涉及的列,可以决定要对哪些表进行连接操作。例.查询计算机系学生的修课情况,要求列出学生的名字、所修课的课程号和成绩。SELECTSname,Cno,GradeFROMStudentJOINSCONStudent.Sno=SC.SnoWHERESdept=计算机系可以为表提供别名,其格式为:源表名[AS]表别名例如:使用别名时上例可写为:SELECTSname,Cno,GradeFROMStudentSJOINSCONS.Sno=SC.SnoWHERESdept=计算机系注意:当为表指定了别名时,在查询语句中的其他地方,所有用到表名的地方都要使用别名,而不能再使用原表名。自连接是一种特殊的内连接,它是指相互连接的表在物理上为同一张表,但可以在逻辑上分为两张表。使用自连接时必须为两个表取别名。例.查询与刘晨在同一个系学习的学生的姓名和所在的系。SELECTS2.Sname,S2.SdeptFROMStudentS1JOINStudentS2ONS1.Sdept=S2.Sdept WHERES1.Sname=刘晨ANDS2.Sname!=刘晨’结果为:SnameSdept李勇计算机系王敏计算机系01外连接是只限制一张表中的数据必须满足连接条件,而另一张表中数据可以不满足连接条件。03FROM表1LEFT|RIGHT[OUTER]04JOIN表2ON连接条件02ANSI方式的外连接的语法格式为:外连接例.查询学生的修课情况,包括选修了课程的学生和没有修课的学生。SELECTStudent.Sno,Sname,Cno,GradeFROMStudentLEFTOUTERJOINSCONStudent.Sno=SC.SnoSnoSnameCnoGrade9512101李勇c01909512101李勇c02869512101李勇c06NULL9512102刘晨c02789512102刘晨c04669512103王敏NULLNULL9512101张立NULLNULL9512102吴宾c01829512102吴宾c02759512102吴宾c04929512102吴宾c05509521103张海c02689521103张海c06NULL9531101钱小平c01809531101钱小平c05959531102王大力c058501在SQL语言中,一个SELECT-FROM-WHERE语02句称为一个查询块。03如果一个SELECT语句是嵌套在一个SELECT、04INSERT、UPDATE或DELETE语句中,则称之为子查05询或内层查询;而包含子查询的语句则称为主查06询或外层查询。子查询要写在圆括号中。07子查询语句通常情况下一般是用在外层查询08的WHERE子句或HAVING子句中,与比较运算符或09逻辑运算符一起构成查询条件。四、子查询使用子查询进行基于集合的测试使用子查询进行基于集合的测试时,通过运算符IN或NOTIN,将一个表达式的值与子查询返回的结果集进行比较。形式为:WHERE表达式[NOT]IN(子查询)实现步骤:先执行子查询在子查询的结果基础上再执行外层查询SELECTSno,Sname,SdeptFROMStudent WHERESdeptIN (SELECTSdeptFROMStudentWHERESname=刘晨)例.查询与“刘晨”在同一个系学习的学生。分析:确定“刘晨”所在系在子查询结果上查找所有在此系学习的学生用多表连接实现:例.查询选修了“数据库基础”课程的学生的学号、姓名。