sql连接、嵌套和集合查询_第1页
sql连接、嵌套和集合查询_第2页
sql连接、嵌套和集合查询_第3页
sql连接、嵌套和集合查询_第4页
sql连接、嵌套和集合查询_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

sql连接、嵌套和集合查询一、连接查询1不同表之间的连接查询例1.37查询各学生及其选修课程的情况。此查询涉及Students和Reports两个表的连接操作。 因为这两个表之间的关联是通过公共属性Sno进行的,所以操作命令如下SELECTStudents.*,Reports.*从students,ReportsWHEREStudents.Sno=Reports.Sno;说明:在上述等值连接中,删除目标列中重复的属性列后,就会成为自然连接,该命令是SELECTStudents.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade从students,ReportsWHEREStudents.Sno=Reports.Sno;例1.38调查每个学生的学号(Sno )、名称(Sname )、选定的课程名称(Cname )和成绩(Grade )。此查询包含三个表的连接操作,完成该查询的SQL语句如下SELECTStudents.Sno、Sname、Cname、Grade从students,报告,Courseswhe students.SnO= o=o;2自连接例1.39问询问各课的间接先修课(也就是先修课的先修课)。在Courses表关系中,只有各课的直接修完信息,没有修完的修完信息。 要获得这个信息,首先要对一节课找到其第一节课,然后按下这节课的课程号码,寻找其第一节课。 这需要将Courses表连接到自己。 为了便于连接运算,这里将Courses表的两个个别名称分别设为a、b。 完成查询的SQL语句如下SELECTA.Cno,A.Cname,B.Pre_CnoFROMCoursesA,CoursesBwhyer.pre_cno=o;3外部连接例1.40将例1.37中的等价连接变更为左连接。 SQLServer2000中此左连接操作的命令格式如下SELECTStudents.Sno、Sname、Ssex、Sdept、Cno、Grade从studentsLEFTJOINReportsONStudents.Sno=Reports.Sno;说明:以上的左连接操作,也可以替换为以下的右连接操作,其结果完全相同。SELECTStudents.Sno、Sname、Ssex、Sdept、Cno、Grade从报告。RIGHTJOINStudentsONReports.Sno=Students.Sno;二、嵌套查询1带谓词IN的嵌套查询例1 .调查选择了号码“C02”课程的学生名(Sname )和所属系(Sdept )。选择名称,Sdept从studentswheelsrenoin(选择否)从报告。WHERECno=C02;调查与“李伟”同一个学部学习的学生的学生号码(Sno )、名字(Sname )和学部名称(Sdept )。这个查询构建了嵌套查询的实现。 SQL语句如下SELECTSno、Sname、Sdept从studentswheelresdeptin(选择深度)从studentswheel resname=李伟;说明:此示例中的查询也可以通过SQL语句进行以下自连接:SELECTA.Sno,A.Sname,A.SdeptFROMStudentsA,StudentsBwheele.sdept=b.sdept andb.sname=李伟;例1.43调查了选择课程名称“数据结构”的学生的学生号码(Sno )和名称(Sname )。此查询包含三个属性:学名、名称和课程名称(Cname )。 听讲编号和名字没有Students表,听讲名称没有Courses表,Students和Courses表之间没有共同的属性,因此必须通过Reports表建立联系。 因此,本查询实际上涉及三种关系的连接操作。SELECTSno,Sname从studentswheelsrenoin(选择否)从报告。wheelrecnoin(选择cno从coursesWHERECname=数据结构;说明:此查询也可以在连接查询中实现SELECTS.Sno,SnameFROMStudentsS,ReportsR,CoursesCwheels.SnO=r.SnO o= ame=数据结构2具有比较运算符的嵌套查询示例1.44将示例1.42更改为具有比较运算符的嵌套查询。 因为一个学生只能在一个学部学习,所以子查询的结果是值,可以使用=代替IN。 SQL语句如下所示SELECTSno、Sname、Sdept从studentswheresdeept=(选择深度)从studentswheel resname=李伟;3具有谓词ANY或ALL的嵌套查询例1.45调查不超过自动化系的全部学生的年龄的学生名(Sname )和年龄(Sage )。 查询命令是选择名称,Sage从studentsWHERESdept的自动化and sage=all (选择sage )从studentsWHERESdept=自动化说明:也可以使用集函数实现此查询。 SQL语句如下选择名称,Sage从studentsWHERESdept的自动化and sage=(选择min (sage )从studentsWHERESdept=自动化4带谓词EXISTS的嵌套查询例1 .查询选择了46号“C01”课程的学生名(Sname )和所属系(Sdept )全部。此查询的SQL语句如下选择名称,Sdept从studentsWHEREEXISTS(选择*从报告。where SnO=students.snoandcno=c01;示例1.47将示例1.42更改为带谓词EXISTS的查询,其SQL语句如下SELECTSno、Sname、SdeptFROMStudentsAWHEREEXISTS(选择*FROMStudentsBwhen reb.sdept=a.sdept andb.sname=李伟例1.48查询选择所有课程的学生名(Sname )和所属系。因为没有全称量词,可以把主题的意思变成等价的存在量词的形式。 查询这样的学生,没有课程是他不选择的。 SQL语句如下选择名称,Sdept从studentsWHERENOTEXISTS(选择*从coursesWHERENOTEXISTS(select * fromreportsswheresno=students.SnOANDCno=Courses.Cno );三、集合查询例1.49调查计算机科学系的学生和年龄在20岁以下的学生的信息。选择*从studentsWHERESdept=计算机UNION公式选择*从studentsWHERESage=20;例1 .调查50数学系学生,年龄在20岁以下的学生的交往。 这实

温馨提示

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

评论

0/150

提交评论