1. 首页
  2. 文档大全

第4章-多表查询

上传者:2****5 2022-06-29 22:37:32上传 PPT文件 635KB
第4章-多表查询_第1页 第4章-多表查询_第2页 第4章-多表查询_第3页

《第4章-多表查询》由会员分享,可在线阅读,更多相关《第4章-多表查询(32页珍藏版)》请在文档大全上搜索。

1、WHERE子句子句对记录排序对记录排序GROUP BY子句子句HAVING子句子句COMPUTE与与COMPUTE BYStuIDStuNameDepName0001Mary计算机系0002Tom数学系0003Mike英语系有有Student表及表及Department表如下:表如下:Department(DepID,DepName)Student(StuID,StuName,StuAge,StuSex,StuCity,StuScore,DepID)第四章第四章表的管理表的管理连接查询和子查询连接查询和子查询连接查询连接查询子查询子查询 在很多情况下,需要从多个表中提取数据,组在很多情况下,需

2、要从多个表中提取数据,组合成一个结果集。如果一个查询需要对多个表进行合成一个结果集。如果一个查询需要对多个表进行操作,则将此查询称为连接查询。操作,则将此查询称为连接查询。 连接查询包括内连接、外连接和交叉连接。连接查询包括内连接、外连接和交叉连接。(INNER,OUTER,CROSS) SELECT 列名列名 ,nFROM 表表1 CROSS|INNER|LEFT | RIGHTOUTER JOIN 表表2 ON 表表1.连接字段连接字段 = 表表2.连接字段连接字段WHERE search_condition 内连接常使用等号连接每个表共有列的值来匹内连接常使用等号连接每个表共有列的值来匹

3、配两个表中的行。只有每个表中都存在相匹配列配两个表中的行。只有每个表中都存在相匹配列值的记录才出现在结果集中。在内连接中,所有值的记录才出现在结果集中。在内连接中,所有表是表是平等平等的,没有前后之分。的,没有前后之分。sales114323151553711421003buyersAdam BarrSean ChaiEva CoretsErin OMelia1234查询结果查询结果Adam BarrAdam BarrErin OMeliaEva Corets11431553711Erin OMelia41003SELECT buyer_name, sales.buyer_id, qty FR

4、OM buyers INNER JOIN sales ON buyers.buyer_id = sales.buyer_id语法:语法:SELECT 列名列名 ,nFROM 表表1 INNER JOIN 表表2 ON 表表1.连接字段连接字段 = 表表2.连接字段连接字段WHERE search_condition示例:有示例:有Student表及表及Department表如下表如下Department(DepID,DepName)Student(StuID,StuName,StuAge,StuSex,StuCity,StuScore,DepID)要显示计算机系学生的要显示计算机系学生的Stu

5、ID,StuName,DepID,DepName字段。字段。解决方案:解决方案:SELECT StuID,StuName,Department.DepID,DepNameFROM Student JOIN DepartmentON Student.DepID = Department.DepIDWHERE DepName = 计算机系计算机系示例:有关系模式如下示例:有关系模式如下Student(StuID,StuName,StuAge,depID)Course(CourseID,CourseName)SC(StuID,CourseID,Grade)显示成绩显示成绩90分以上的学生姓名,课程分

6、以上的学生姓名,课程名及成绩。名及成绩。解决方案:解决方案:SELECT StuName,CourseName,GradeFROM Student JOIN SC ON Student.StuID = SC.StuIDJOIN Course ON Course.CourseID = SC.CourseIDWHERE Grade=90语法:语法:SELECT 列名列表列名列表 FROM A JOIN B ON 连接条件连接条件1JOIN C ON 连接条件连接条件2WHERE search_condition示例:有关系模式如下示例:有关系模式如下Department(DepID,DepName

7、)Student(StuID,StuName,StuAge,DepID)Course(CourseID,CourseName)SC(StuID,CourseID,Score)解决方案:解决方案:SELECT SC.StuID,StuName,DepName,CourseName,GradeFROM Student JOIN SC ON Student.StuID = SC.StuIDJOIN Course ON Course.CourseID = SC.CourseIDJOIN Department ON Department.DepID = Student.DepID查询学生的学号、姓名、所

8、在系的名称、课程名及该课程的考试成绩。查询学生的学号、姓名、所在系的名称、课程名及该课程的考试成绩。 与内连接相对,参与外连接的表有主次之分。以主表的每与内连接相对,参与外连接的表有主次之分。以主表的每一行数据去匹配从表中的数据列,符合连接条件的数据将直一行数据去匹配从表中的数据列,符合连接条件的数据将直接返回到结果集中,对那些不符合连接条件的列,将被填上接返回到结果集中,对那些不符合连接条件的列,将被填上NULL值后再返回到结果集中。值后再返回到结果集中。 外连接可以分为左向外连接、右向外连接和完整外部连接外连接可以分为左向外连接、右向外连接和完整外部连接3种情况。种情况。(LEFT OUT

9、ER JOIN , RIGHT OUTER JOIN, FULL JOIN)。语法:语法:SELECT 列名列名 ,nFROM 表表1 LEFT|RIGHTOUTER JOIN 表表2 ON 表表1.连接字段连接字段 = 表表2.连接字段连接字段WHERE search_condition 左向外连接以连接(左向外连接以连接(JOIN)子句左侧的表为主表,主表)子句左侧的表为主表,主表中所有记录都将出现在结果集中。如果主表中的记录在右表中所有记录都将出现在结果集中。如果主表中的记录在右表中没有匹配的数据,则结果集中右表的列值为中没有匹配的数据,则结果集中右表的列值为NULL。sales1143

10、23151553711421003buyersAdam BarrJane LeeEva CoretsErin OMelia1234查询结果查询结果Adam BarrAdam BarrErin OMeliaEva Corets11431553711Erin OMelia41003Jane LeeNULLNULLSELECT buyer_name, sales.buyer_id, qty FROM buyers LEFT OUTER JOIN sales ON buyers.buyer_id = sales.buyer_id右向外连接以连接(右向外连接以连接(JOIN)子句右侧的表为主表,主)子句

11、右侧的表为主表,主表中所有记录都将出现在结果集中。如果主表中的记录表中所有记录都将出现在结果集中。如果主表中的记录在左表中没有匹配的数据,则结果集中左表的列值为在左表中没有匹配的数据,则结果集中左表的列值为NULL。示例:示例:SELECT DepName,StuID,StuNameFROM Student RIGHT OUTER JOIN DepartmentON Student.DepID = Department.DepID解决方案:以系表为主表匹配学生表,当有学生属于相应的解决方案:以系表为主表匹配学生表,当有学生属于相应的系时,则显示该系的系名,学生学号及学生姓名,如果某个系时,则显


文档来源:https://www.renrendoc.com/paper/212652468.html

文档标签:

下载地址