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 = '程老师'
  • 相关阅读:
    tensorflow2.0 GPU和CPU 时间对比
    第一次使用FileZilla Server
    PremiumSoft Navicat 15 for Oracle中文破解版安装教程
    Unmapped Spring configuration files found. Please configure Spring facet or use 'Create Default Context' to add one including all unmapped files.
    ng : 无法加载文件 D: odejs ode_global g.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
    angular
    Github上优秀的go项目
    win10---file explore 中remove quick access folder
    react--useEffect使用
    linux---cat 和 grep 的妙用
  • 原文地址:https://www.cnblogs.com/douzujun/p/6723193.html
Copyright © 2011-2022 走看看