zoukankan      html  css  js  c++  java
  • SQL语句(十四)子查询

    --1. 使用IN关键字
    
    --例1 查询系别人数不足5人的系别中学生的学号、姓名和系别
    
    --系别人数不足5人的系别  ==>选择条件
    select Sdept 
    from Student
    Group by Sdept
    Having Count(*) < 5
    
    --显示这些系别的学生信息
    Select sno, sname, sdept
    From Student
    WHERE sdept IN (
                select Sdept 
                from Student
                Group by Sdept
                Having Count(*) < 5
                )
    
    
    --2. 使用EXISTS关键字
    
    --例2 如果“MA"系别有人的成绩大于等于90
    --就把全系别的学号,姓名、班级、课程号、成绩显示出来
    
    --查询"MA"系别成绩大于90的学生信息
    select *
    from Student
    INNER JOIN SC ON Student.Sno = SC.Sno
    WHERE Student.Sdept = 'MA' and SC.Grade >= 90
    
    --结果有,则显示全班信息
    select Sdept, SC.Sno, Sname, Cno, Grade
    from Student
    INNER JOIN SC ON Student.Sno = SC.Sno
    WHERE Student.Sdept = 'MA' and 
    EXISTS (      --exists 里是一个子查询
            select *
            from Student
            INNER JOIN SC ON Student.Sno = SC.Sno
            WHERE Student.Sdept = 'MA' and SC.Grade >= 90
            )
    --(4)所有课程都被选修的学生学号
    select Sno
    From Student
    Where not EXISTS
        (
            Select *
            From Course
            where not Exists 
                (
                    Select *
                    From SC
                    where Sno = Student.Sno
                          and Cno = Course.Cno
                )
        )
    --3. 比较运算
    
    --例3 显示航天班成绩在平均成绩以上的人的
    --班级、学号、姓名、课程号和成绩
    
    --所有参加考试的人的所有课程的总平均
    
    select AVG(Grade)
    from SC
    
    --平均成绩以上的人的信息
    select S.Sdept, S.Sno, S.Sname, SC.Cno, SC.Grade
    from Student as S
    INNER JOIN SC on S.Sno = SC.Sno
    WHERE SC.Grade > ANY(     -- any, 表示集合里头的任何一个都可以
                        select AVG(Grade)
                        from SC
                        ) AND S.Sdept = 'IS'
    
    --例4 查询学生的班级数
    
    --首先, 查询学生来自哪些不同的班级
    --该查询的结果,像是统计的数据源
    SELECT distinct Sdept
    From Student
    
    --然后统计这个的个数
    --把这个结果看作类似一个表一样
    --写在FROM子句中
    Select count(*) as 班级数
    FROM (
        --查询的是哪些班级
        SELECT distinct Sdept
        From Student 
        ) AS S
  • 相关阅读:
    HDU 4611 Balls Rearrangement 数学
    Educational Codeforces Round 11 D. Number of Parallelograms 暴力
    Knockout.Js官网学习(简介)
    Entity Framework 关系约束配置
    Entity Framework Fluent API
    Entity Framework DataAnnotations
    Entity Framework 系统约定配置
    Entity Framework 自动生成CodeFirst代码
    Entity Framework CodeFirst数据迁移
    Entity Framework CodeFirst尝试
  • 原文地址:https://www.cnblogs.com/douzujun/p/6627103.html
Copyright © 2011-2022 走看看