1. 用SELECT--SQL命令完成以下查询。假设有关系:student(学号,姓名,系别);course(课程号,课程名,任课教师编号,课时);grade(学号,课程号,成绩)
①查询平均成绩在75分以上(包括75分)的课程,按课程号升序列出课程号、课程名、平均成绩
②列出课教师编号及其所任课程的课时总数
2. 用SELECT--SQL命令完成以下查询,并将查询结果输出指定的临时表。假设在学生成绩数据库中存在student(学号,姓名,出生日期,专业,奖学金)、grade(学号,课程号,成绩)两张表
①查询student表中“计算机”和“金融”专业所有学生的学号、姓名、性别及专业信息,要求将查询结果保存到名为query1.dbf表中
②查询student表中姓“王”或姓名中带有“伟”字的学生信息,要求将查询结果保存到名为query2.dbf表中
3. 用命令方式建立以下视图。(各表结构同上)①根据student表,查询各专业的学生人数、平均奖学金、最高奖学金,要求查询结果使用标题名称,视图名取为V1
②根据student和grade,查询有不及格成绩记录的学生的学号、姓名和年龄,视图名取为V2
③根据student和grade,查询“工商管理”专业所有学生的学生情况,包括学生学号、姓名、课程号、成绩信息。假如某个学生在grade表中没有其对应的记录,也要显示出该学生的信息。提示:用LEFT JOIN子句进行内部左联接,视图名取为V3
4.编一程序,输出半径在1到10之间、面积超过100的圆的半径及面积。

解决方案 »

  1.   

    1.select  course.课程名,grade.课程号,avg(成绩) from course,grade where (avg(成绩)>=75 and course.课程号=grade.课程号) order by grade.课程号 asc
    2.insert into query1 select 学号,姓名,专业,性别 from student where 专业='计算机' or 专业='金融'insert into query2 select * form student,grade where student.学号=grade.学号 and ( student.姓名 like '王%' or student.姓名 like '%伟%' )
    这是我自己写的,也不知道有没有错,希望朋友们来帮我一下,可以吗??
      

  2.   

    1.
    ①查询平均成绩在75分以上(包括75分)的课程
    select  a.课程名,a.课程号,avg(b.成绩) 平均成绩
    from course a left join grade b
    on a.课程号 = b.课程号
    group by a.课程名,a.课程号
    order by a.课程名,a.课程号
    having  avg(b.成绩) > 75
      

  3.   

    4.编一程序,输出半径在1到10之间、面积超过100的圆的半径及面积。
    ??
    就是整数的话。  ---要不然谁没办法 VAR I:Integer;
      S:Real;
    begin
      RichEdit1.Lines.Clear;
      for I :=1  to 10 do
      begin
         S:=3.1415926*I*I;
        IF S>100 THEN
          RichEdit1.Lines.Add(IntToStr(I)+'----'+ FloatToStr(S))
      end;
    end;
      

  4.   

    ①查询平均成绩在75分以上(包括75分)的课程
    select  a.课程名,a.课程号,avg(b.成绩) 平均成绩
    from course a ,grade b
    where a.课程号 = b.课程号
    group by a.课程名,a.课程号
    order by a.课程号
    having  avg(b.成绩) >= 75
      

  5.   

    4.
    CREATE PROCEDURE [dbo].[listrs]  @interval numeric(8,4),@min numeric(8,4),@max numeric(8,4) AS
    begin
    declare @pi numeric(8,4),@r numeric(8,4)
    set @pi=3.1415926create table #temptb([r] numeric(8,4) not null)set @r=@min
    while @r<=@max
    begin
    insert into #temptb(r) values (@r)
    set @r=@r+@interval
    endselect r,@pi*r*r as s from #temptb
    where @pi*r*r>100drop table #temptb
    end
    GO--第一个参数是间隔,第二个是最小值,第三个是最大值
    --执行语句如下
    exec listrs 1,1,10/*结果如下:
    r s
    6.0000 113.097600000000
    7.0000 153.938400000000
    8.0000 201.062400000000
    9.0000 254.469600000000
    10.0000 314.160000000000
    */
      

  6.   

    1.
    ①查询平均成绩在75分以上(包括75分)的课程
    select  course.课程名,grade.课程号,avg(成绩) from course,grade where 
    course.课程号=grade.课程号
    group by a.课程名,a.课程号
    having avg(成绩)>=75 
    order by grade.课程号 asc
    ②列出课教师编号及其所任课程的课时总数
    你要的是这样格式:
    select 任课教师编号 ,sum(课时) as 课时总数 from course group by 任课教师编号
    还是样样呢:
    select 任课教师编号,课程名,(select sum(课时) from course b where a.任课教师编号=b.任课教师编号 group by b.任课教师编号) as 课时总数 from course a order by a.任课教师编号
      

  7.   

    2.
    ①查询student表中“计算机”和“金融”专业所有学生的学号、姓名、性别及专业信息
    student(学号,姓名,出生日期,专业,奖学金),性別那里來????
    select 学号,姓名,专业 from student where 专业 in ('计算机'和'金融')
    ②查询student表中姓“王”或姓名中带有“伟”字的学生信息
    select  * from student where 姓名 like '王%' or 姓名  like '%伟%'
      

  8.   

    3.
    ①根据student表,查询各专业的学生人数、平均奖学金、最高奖学金,要求查询结果使用标题名称,视图名取为V1
    student(学号,姓名,出生日期,专业,奖学金)
    create view v1 as
    select 专业,count(学号)as 专业人数,avg(奖学金) as 平均奖学金 max(奖学金) as 最高奖学金
    group by 专业根据student和grade,查询有不及格成绩记录的学生的学号、姓名和年
    龄,视图名取为V2
    grade(学号,课程号,成绩)
    create view v2 as
     select a.学号,b.姓名 from grade a ,student b where a.学号=b.学号 and a.成绩<60
    ③根据
    student和grade,查询“工商管理”专业所有学生的学
    生情况,包括学生学号、姓名、课程号、成绩信息
    create view v3 as
     select a.学号,a.姓名,b.课程号,b.成绩 from student left join grade 
      on( a.学号=b.学号) where a.专业='工商管理'