zoukankan      html  css  js  c++  java
  • SQL语句(十九)——存储过程(练习)

    select * From Student
    select * From Course
    select * from SC
    
    --INSERT INTO SC (Sno, Cno, Grade)
    --VALUES ('1513032087', '7', 99);
    
    --(1)找出至少选修X课和Y课的学生学号(P1)
    -- 执行P1,输出X=数据库,Y=数据结构
    GO
    Create Proc SelectLessonToSno @X varchar(40), @Y varchar(40)
    AS
    begin
    select SC.Sno
    from SC, Course
    where SC.Cno = Course.Cno
    and SC.Cno in (Select SC.Cno
                   From SC, Course
                   Where SC.Cno = Course.Cno and 
                    Cname in (@X, @Y)
                   )
    END
    
    EXEC SelectLessonToSno @X =  '数据库', @Y =  '数据结构'
    
    --(2)找出至少选修X老师讲的一门课的学生姓名(P2)
    --执行P2,X=程老师
    GO
    Create Proc TnameToSname @Tname varchar(40)
    AS
    BEGIN
    Select distinct Sname
    From Student,Course,SC
    where Student.Sno = SC.Sno and 
        Course.Cno = SC.Cno and 
        SC.Sno in (select Sno
                   from SC, Course
                   where SC.Cno = Course.Cno and
                        Course.Tname = @Tname
                   )
    END
    EXEC TnameToSname @Tname = '程老师'
            
    
    
    --(3)查询X号课程得最高分的学生的学号(P3)
    --执行P3,X=数据库对应的课程号
    GO
    Create Proc maxofCno @X varchar(10)
    AS
    BEGIN
    select Sno
    From SC
    Where SC.Cno = @X and Grade = 
                          (select MAX(Grade)
                           From SC
                           Group by Cno
                           Having Cno = @X
                           )
    END
    EXEC maxofCno @X = '5'
    
    
    --(4)X课程得最高分的学生的姓名、性别、所在系(P4)
    --执行P4,X=数据库
    GO
    Create Proc LessonToStudentInfo @X varchar(40)
    AS
    BEGIN
    Select Sname, Ssex, Sdept
    From Student, SC, Course
    Where Student.Sno = SC.Sno and SC.Cno = Course.Cno and
        Course.Cname = @X and Grade = 
                            (
                            Select MAX(Grade)
                            from SC, Course
                            where SC.Cno = Course.Cno and
                                Course.Cname = @X
                            )
    END
    EXEC LessonToStudentInfo @X = '数据库'
    
    --(5)取出没有选修X课程的学生姓名和年龄(P5)
    --执行P5,X=数据库
    GO
    Create Proc SelectNoLessonToStudentInfo @X varchar(40)
    AS
    BEGIN
    Select Sname, Sage
    From Student, SC, Course
    where Student.Sno = SC.Sno and 
          Course.Cno = SC.Cno and  
          SC.Sno not in (
                      Select Sno 
                      from SC, Course
                      where SC.Cno = Course.Cno and Course.Cname = @X
                      )
    END
    EXEC SelectNoLessonToStudentInfo @X = '数据库'
    
    
    --(6)求选修课程名为X的学生的平均年龄(P6)
    --执行P6,X=数据库
    GO
    Create Proc LessonToStudentAge @X varchar(40) = '数据库' --默认值
    AS
    BEGIN
    Select AVG(Sage)
    From Student, Course, SC
    Where Student.Sno = SC.Sno and 
          Course.Cno = SC.Cno and
          Course.Cname = @X
    END
    EXEC LessonToStudentAge @X = '数据库'
    
    
    --(7)求X老师讲的每门课的学生平均成绩(P7)
    --执行P7,X=程老师
    GO
    Create Proc LessonToAvage @X varchar(40)
    AS
    BEGIN
    Select SC.Cno, AVG(Grade) AS 平均分
    From Course, SC
    Where Course.Cno = SC.Cno and
          Course.Tname = @X
    Group by SC.Cno
    END
    Exec LessonToAvage @X = '程老师'
  • 相关阅读:
    [Real World Haskell翻译]第24章 并发和多核编程 第一部分并发编程
    [Real World Haskell翻译]第22章 扩展示例:Web客户端编程
    [Real World Haskell翻译]第27章 网络通信和系统日志 Sockets and Syslog
    druid 解密
    git clone 所有远程分支到本地
    十、Delphi 把Json转成Delphi实体类
    XML External Entity attack/XXE攻击
    大家好!
    XXE攻防——XML外部实体注入
    ubuntu安装Go环境
  • 原文地址:https://www.cnblogs.com/douzujun/p/6723193.html
Copyright © 2011-2022 走看看