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

    一.使用group by 进行分组查询

    语法:

    Select 列名

    From  表名

    Group by 列名

    1.查询男女学生的人数格式多少

    分析:

    首先按照性别进行分组:group by SSex

    其次对每个组进行总数的统计,用到聚合函数count()。

    完整的T-SQL语句如下:

    Select count(*) AS 人数,SSex from Students

    Group by SSex

    2.查询每个科目的平均分,并且按照由低到高的顺序排列显示

     Select CourseID,avg(Score) AS 课程平均成绩

    From Score

    Group by CourseID

    Order by avg(Score) DESC

    二.多列分组查询

    Select count(*) AS 人数,SGrade AS 年级, SSex AS 性别

    From Students

    Group by SGrade,SSex

    Order by SGrade

    二.使用having 子句进行分组筛选

    1.查询年纪总人数超过15的年级

    Select count(*) AS 人数,SGrade AS 年级

    From Students

    Group by SGrade

    Having count(*)>15

    2.查询平均分及格的课程信息

    Select CourseID AS 课程编号,avg(Score) AS 课程平均成绩

    From students

    Group by GourseID

    Having avg(score)>=60

    Having ,where,order by 和group by句子可以在同一个select语句中哟起使用,使用顺序如下

    Where→group by → having →order by

    3.查询每门课程及格总人数和及格学生的平均分

    Select count(*) AS 人数,avg(Score) AS 平均分, CrouseID AS 课程

    From SCore

    Where Score>=60

    Group by CrouseID

    1.查询每门课程及格人数和及格平均分在80分以上的记录

    Select count(*) AS 人数,avg(Score) AS 平均分,CrouseID AS 课程

    From Score

    Where Score>=60

    Group by CrouseID

    Having avg(Score)>80

    Order by CrouseID

    四.多表连接查询

    1.多表连接查询的分类

    多表连接查询实际上是通过各个表之间共同列的关联性来查询数据的,他是关系数据库查询最主要的特征。

    常用的连接:内链接,外连接

    A.内链接

    内链接是最典型,最常用的连接查询,它根据表中共同的列来进行匹配,特别是两个表存在主外建关系时通常会使用到内链接查询

    B.外连接

    外连接是至少返回一个表中的所有记录,根据匹配条件有选择性地返回另一张表的记录。外连接可以是左外连接,有外链接

    2.内链接查询

    内链接查询通常会使用向“=”或“<>”等比较运算符来判断两列数据值是否相等

    内链接使用inner join 、、、on关键字或where子句来进行表之间的关联。内链接查询可以通过两种方式实现

    1.where子句中指定连接条件

       例如:查询学生姓名和成绩的T-SQL如下

    Select Student、Sname,Score、CourseID,Score、Score

    From Student,Score

    Where Students.Scode=Score.StudentID

    2.from子句中使用insert join 、、、on

    上面查询也可一通过这种方式来实现

    Select s.Sname,c.courseID ,c.Score

    From Students AS s

    Inner join Score AS c on(s.Score=c.StudentID)

    在上面的内链接查询中:

    A:insner join 用来连接两个表

    B:inner 可以省略

    C:on用来设置条件

    D:AS指定表的“别名”,如果查询的别名在用到两个或多个表中不重复,则对这一列的引用不必用表名来限定

    五、外连接查询

    与内部连接相对的方式称为外部链接。在外部联接中参与联

    接的表有主从之分,以主表的每行数据匹配从表的数据列,江都和联接条件的数据直接返回到结果集中;对那些不符合连接条件的列,将被填上NULL值(空值)后在返回到结果集中

    1.左外连接查询

    左外连接的结果集包括left join 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行

    左外连接使用left join 、、、on 或 left outer join 、、、on 关键字来进行表之间的关联

    例如 :要统计所有学生的考试情况,要求显示所参加考试学生的每次考试分数,没有参加考试的学生也要显示出来。这时候,以学生信息表为主表(有时也叫做左表),学生成绩表为从表的做外连接查询如下:

    Select s.sname,c.CourseID,c.Score

    From Students AS S

    Left outer join Score AS C on S.Scode=C.studentID

    2.右外联接查询

    右外联接查询与左外联接查询类似,只不过要包含右表中所有匹配的行

    右外联接使用right join 、、、on或right outer join 、、、ou 关键字来进行之间的关联

    例如:在某数据库中,存在书=书籍表Titles 和出版商表

    Publishers之间的右外联接将包含所有的出版商,在Titles 中没有书名的(很久没出书了)也会被列出

    Select  Titles.Titles_Id,Titles.Titles,Publishers.Pub_name

    From Titles

    Right outer join Publishers on Titles.Pub_id=Publishers.Pub_id

  • 相关阅读:
    centos7 安装jdk 1.8
    CentOS查看Java进程并部署jar包
    Mybatis传多个参数(三种解决方案)
    mybatis使用注解往postgresql数据库表insert数据[主键自增]的写法
    在Linux上安装tomcat和JDK
    Linux下部署springboot项目的步骤及过程
    maven安装第三方jar包到本地仓库
    Android 开源动画框架:NineOldAndroids
    Android多国语言的value文件夹命名方式
    C++编程经验-返回局部变量的讨论(转)
  • 原文地址:https://www.cnblogs.com/kami-char/p/7744984.html
Copyright © 2011-2022 走看看