zoukankan      html  css  js  c++  java
  • 连接查询和分组查询

    连接查询和分组查询

     

    一、分组查询

    --分组查询地区对应的人数

    --分组查询原理:根据特定列进行分组,找列的相同值
      
    SELECT COUNT(1) AS '人数',Address AS '地区' FROM Student WHERE Address LIKE '北京%' GROUP BY Address

    --查询科目的平均分
    --WHERE -->GROUP BY -->ORDER BY
      SELECT AVG(StudentResult) AS '平均分',Subject.SubjectName FROM Subject,Result WHERE Subject.SubjectId=Result.SubjectId
      GROUP BY Subject.SubjectName 
      ORDER BY AVG(StudentResult) ASC

    --查询每学期的男女同学人数
    --根据多列进行分组
      SELECT COUNT(1) AS '人数',GradeId,Sex FROM Student GROUP BY GradeId,Sex ORDER BY COUNT(1) 

    --查询科目的平均分大于70
    --HAVING和WHERE有什么不同
      --where是针对表中原有的记录进行条件筛选
      --group by是针对where条件筛选后的记录进行分组
      --having是针对group by分组后的记录进行条件筛选

      SELECT AVG(StudentResult) AS '平均分',Subject.SubjectName FROM Subject,Result WHERE Subject.SubjectId=Result.SubjectId
      GROUP BY Subject.SubjectName HAVING AVG(StudentResult)>=70
      ORDER BY AVG(StudentResult)

    二、连接查询
    --1.内连接
      SELECT S.StudentName,G.GradeName FROM Student AS S INNER JOIN Grade AS G ON S.GradeId=G.GradeId
    --查询学生姓名对应科目和考试分数
    --当使用内连接进行多表联查时,直接空格继续JINNER JOIN 
      SELECT S.StudentName,SU.SubjectName,R.StudentResult FROM Result AS R INNER JOIN Subject AS SU ON (R.SubjectId=SU.SubjectId)
      INNER JOIN Student AS S ON (S.StudentNo=R.StudentNo)
    --查询学生成绩大于等于65分的记录
    --使用连接查询为了指定表与表之间的关系,如果想添加条件那么在指定完关系后加WHERE
      SELECT S.StudentName,SU.SubjectName,R.StudentResult FROM Result AS R INNER JOIN Subject AS SU ON (R.SubjectId=SU.SubjectId)
      INNER JOIN Student AS S ON (S.StudentNo=R.StudentNo) WHERE R.StudentResult>=65

    --2.外连接
    --2.1左外链接
      SELECT S.StudentName,R.StudentResult,R.SubjectId FROM Result AS R LEFT JOIN Student AS S ON (S.StudentNo=R.StudentNo)
      SELECT S.StudentName,G.GradeName FROM Grade AS G LEFT JOIN Student AS S ON(S.GradeId=G.GradeId)
      SELECT R.*,S.SubjectName FROM Subject AS S LEFT JOIN Result AS R ON(R.SubjectId=S.SubjectId)
    --2.2右外连接
      SELECT S.StudentName,R.StudentResult,R.SubjectId FROM Result AS R RIGHT JOIN Student AS S ON (S.StudentNo=R.StudentNo)
      SELECT S.StudentName,G.GradeName FROM Student AS S RIGHT JOIN Grade AS G ON(S.GradeId=G.GradeId)
      SELECT R.*,S.SubjectName FROM Result AS R RIGHT JOIN Subject AS S ON(R.SubjectId=S.SubjectId)
    --内连接和外连接的区别:内连接表与表之间的次序没有分别,指定表与表之间的关系,外链接表顺序有区别,会投影出NULL记录

  • 相关阅读:
    《ASP.NET Core跨平台开发从入门到实战》Web API自定义格式化protobuf
    .NET Core中文分词组件jieba.NET Core
    .NET Core 2.0及.NET Standard 2.0
    Visual Studio 2017 通过SSH 调试Linux 上.NET Core
    Visual Studio 2017 ASP.NET Core开发
    Visual Studio 2017正式版离线安装及介绍
    在.NET Core 上运行的 WordPress
    IT人员如何开好站立会议
    puppeteer(二)操作实例——新Web自动化工具更轻巧更简单
    puppeteer(一)环境搭建——新Web自动化工具(同selenium)
  • 原文地址:https://www.cnblogs.com/liu13-B/p/10150766.html
Copyright © 2011-2022 走看看