SQLserver2008高级查询语句应用实例

--1、查询学生表,课程表,输出每个学生的姓名和对应的选课课名,及成绩。
--SELECT 姓名,课程名称,成绩
--FROM 学生表 ,选课成绩表 ,课程表 
--WHERE 选课成绩表 .学生编号=学生表 .学生编号 AND 课程表 .课程编号=选课成绩表 .课程编号
--2、查询每门课对应的任课教师的教师姓名。
--select 课程名称,姓名
--from 教师表,课程表
--where 教师表.教师编号=课程表 .任课教师
--3   查询“C语言”的平均分数。
--SELECT AVG(成绩) AS C语言平均分
--from 选课成绩表 ,课程表 
--WHERE 选课成绩表 .课程编号=课程表 .课程编号 AND 课程表.课程名称 ='C语言'
--4   查询成绩在80分以上的学生的学生编号,姓名,课程名称,成绩。
--SELECT 学生表.学生编号 ,姓名,课程名称,成绩 
--from 学生表 ,选课成绩表 ,课程表 
--WHERE 选课成绩表 .课程编号=课程表 .课程编号 AND 学生表 .学生编号=选课成绩表 .学生编号 AND 成绩>=80
--5   查询姓李的老师所讲授的课程。
--SELECT 课程名称 AS 李老师所受课程
--FROM 教师表 ,课程表 
--WHERE 课程表 .任课教师=教师表 .教师编号 AND 教师表 .姓名 LIKE '李%'
--6   查询男同学所选修的课的平均成绩。
--SELECT 课程表 .课程名称,AVG(成绩) AS 男同学
--FROM 课程表 ,选课成绩表 ,学生表  
--WHERE 选课成绩表 .课程编号=课程表 .课程编号 AND 学生表 .学生编号=选课成绩表 .学生编号 AND 学生表 .性别='男'
--GROUP BY 课程表 .课程名称
--7. 查询年龄大于18岁,小于20岁的学生所选修的课程名称。
--SELECT 学生表.学生编号,学生表 .姓名,课程表 .课程名称
--FROM 课程表 ,选课成绩表 ,学生表 
--WHERE 选课成绩表 .课程编号=课程表 .课程编号 AND 学生表 .学生编号=选课成绩表 .学生编号 AND 学生表.年龄>18 AND 学生表 .年龄<20
--8   查询计算机系并且是副教授职称的老师所教授的课的名称。
--SELECT 教师表 .姓名,教师表 .职称,课程表 .课程名称
--FROM 教师表 ,课程表 
--WHERE 课程表 .任课教师=教师表 .教师编号 AND 教师表 .系别='计算机系' AND 教师表 .职称='副教授'






-- 下面题用子查询做。
--1. 查询与张爽老师在同一个系工作的老师。
--SELECT 教师表.姓名 AS 与张爽老师同系老师
--FROM 教师表 
--WHERE 系别 in (SELECT 系别 FROM 教师表 WHERE 姓名='张爽') AND 姓名!='张爽'
--2、查询选修了数据结构课程的学生的学号和姓名。
--SELECT 学生表.学生编号,学生表.姓名
--from 学生表 
--where 学生编号 in
--(
--select 学生编号 
--from 选课成绩表 
--where 课程编号   in
--(
--select 课程编号 
--from 课程表 
--where 课程名称 ='数据结构'
--)
--)




--第二种方法:
--SELECT 学生表.学生编号,学生表.姓名
--FROM 学生表,选课成绩表,课程表
--WHERE 学生表.学生编号=选课成绩表 .学生编号 AND 课程表 .课程编号=选课成绩表 .课程编号 AND 课程表 .课程名称='数据结构'
--3. 查询选修了Java语言课程的学生姓名。
--  SELECT 学生表.姓名 
--FROM 学生表 
--WHERE 姓名 in( SELECT DISTINCT 学生表 .姓名 
 --                FROM 学生表 ,选课成绩表 ,课程表  
 --                 WHERE 学生表 .学生编号=选课成绩表 .学生编号 AND 课程表.课程编号=选课成绩表 .课程编号 AND 课程表 .课程名称='Java语言' 
  --                 )
                   
                   
--第二种方法:
--SELECT 学生表.姓名 AS 选修Java语言
--FROM 学生表 ,选课成绩表 ,课程表 
--WHERE 学生表 .学生编号=选课成绩表 .学生编号 AND 课程表 .课程编号=选课成绩表 .课程编号 AND 课程表 .课程名称='Java语言'
--4.查询江西学生的平均成绩。
--SELECT 课程表 .课程名称,AVG(成绩) 平均分
--FROM 学生表 ,选课成绩表 ,课程表 
--WHERE 学生表 .学生编号=选课成绩表 .学生编号 AND 课程表 .课程编号=选课成绩表 .课程编号 AND 学生表 .籍贯 LIKE '江西%'
--GROUP BY 课程表 .课程名称
--5.查询选修了103号课程,且成绩高于该课程平均分数的学生信息。
--SELECT 学生表 .*
--FROM 学生表  ,选课成绩表 
--WHERE 学生表.学生编号 =选课成绩表 .学生编号 AND 选课成绩表.课程编号='103' AND 选课成绩表.成绩>(SELECT AVG(成绩) FROM 选课成绩表  WHERE 选课成绩表 .课程编号='103'
--6.查询没有选修Java语言的学生姓名。
  --SELECT 学生表.姓名 
--FROM 学生表 
--WHERE 姓名 NOT in( SELECT DISTINCT 学生表 .姓名 
                 --   FROM 学生表 ,选课成绩表 ,课程表  
              --      WHERE 学生表 .学生编号=选课成绩表 .学生编号 AND 课程表.课程编号=选课成绩表 .课程编号 AND 课程表 .课程名称='Java语言' 
   --                 )
--7. 查询比江西省所有学生年龄都小的其他省的学生的学号和姓名。
--SELECT 学生编号,姓名
--FROM 学生表 
--WHERE 学生表.籍贯 NOT LIKE '江西%' AND 学生表.年龄<( SELECT MIN(年龄)
 --                                                        FROM 学生表
  --                                                       WHERE 学生表.籍贯 LIKE '江西%'
       --                                              )
--8.查询选修了107号课程的学生的学号和姓名。
--select 学生表.学生编号,学生表.姓名 
--from 学生表 
--where 学生编号  in
--(select 学生编号 
--from 选课成绩表 
--where 课程编号 ='107'
--)
--第二种方法
--SELECT 学生表.学生编号,学生表.姓名 
--FROM 学生表,选课成绩表 
--WHERE 学生表.学生编号=选课成绩表 .学生编号 AND 选课成绩表 .课程编号='107' 
--9、查询没有选修Java语言的学生姓名。
 -- SELECT 学生表.姓名 
--FROM 学生表 
--WHERE 姓名 NOT in( SELECT DISTINCT 学生表 .姓名 
--                   FROM 学生表 ,选课成绩表 ,课程表  
 --                 WHERE 学生表 .学生编号=选课成绩表 .学生编号 AND 课程表.课程编号=选课成绩表 .课程编号 AND 课程表 .课程名称='Java语言' 
  --                 )


--10. 查询每个学生超过他选修课程平均成绩的学号和课程号。
--SELECT x.学生编号, t.课程编号
--FROM 学生表  x,选课成绩表  t
--WHERE   x.学生编号=t.学生编号 
 --       AND t.成绩>( SELECT AVG(成绩)
   --                    FROM 选课成绩表 
 --                      WHERE 选课成绩表 .学生编号=t.学生编号
    --                  )

























  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值