当前位置: 首页 > news >正文

2021免费正能量网站营销管理培训课程培训班

2021免费正能量网站,营销管理培训课程培训班,北京公司网站制作,腾讯企业邮箱扫码登录入口sql练习题6-10题 前言数据库表结构介绍学生表课程表成绩表教师表 0-6 查询"李"姓老师的数量0-7 查询学过"李四"老师授课的同学的信息0-8 查询没学过"李四"老师授课的同学的信息0-9 查询学过编号为"01"并且也学过编号为"02"的…

sql练习题6-10题

  • 前言
  • 数据库表结构介绍
    • 学生表
    • 课程表
    • 成绩表
    • 教师表
  • 0-6 查询"李"姓老师的数量
  • 0-7 查询学过"李四"老师授课的同学的信息
  • 0-8 查询没学过"李四"老师授课的同学的信息
  • 0-9 查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息
  • 0-10 查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息

前言

sql真的非常灵活,一个题目可能有很多很多种解法,我记录的只是我自己的一个解题思路,如果大家有更好的不同解法欢迎在评论区一起探讨
ps:有些题可能解法会重复,比如求大于,我们下一个题可能是求小于,大家如果第一遍没有做出来,看了我写的之后有了思路,可以试一下反面的解法。

数据库表结构介绍

学生表

在这里插入图片描述

课程表

在这里插入图片描述

成绩表

在这里插入图片描述

教师表

在这里插入图片描述

0-6 查询"李"姓老师的数量

首先读题,关键字 老师,数量,确定好我们需要的东西
表:teacher
函数count()

SELECTcount(t.t_name) count_li
FROMteacher t
WHEREt.t_name LIKE '李%';

结果如下:
在这里插入图片描述

0-7 查询学过"李四"老师授课的同学的信息

首先分析一下,我们需要通过name去teacher表中查询到李四老师的t_id,通过t_id再去课程表中查到c_id,有了c_id就可以去成绩表中查到s_id,然后再去student里面查学生信息
表:teacher,course,score,student

SELECT
b.*
from teacher t,course c,score a,student b
where t.t_name='李四'
AND   c.t_id=t.t_id
AND   a.c_id=c.c_id
AND   b.s_id=a.s_id;

结果如下:
在这里插入图片描述

0-8 查询没学过"李四"老师授课的同学的信息

上个题,其实我们是通过找到score表中的学过李四老师课程的学生的id,然后在student表中利用id找出对应符合要求的学生,这个题其实相反,我们把剩余的id取出来其实就是答案

SELECTb.*
FROMstudent b
WHEREb.s_id NOT IN (SELECTa.s_idFROMteacher t,course c,score aWHEREt.t_name = '李四'AND c.t_id = t.t_idAND a.c_id = c.c_id);

结果如下:
在这里插入图片描述

0-9 查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息

分析一下,感觉题目就很绕,读着很烦,白话说就是:查询学过语文课也学过数学课的同学的信息
表:score ,student
自连接,分别查询语文课,数学课

select 
c.*
from score a,score b,student c
where a.c_id='1'
and b.c_id='2'
and a.s_id=b.s_id
and c.s_id=b.s_id

结果如下:
在这里插入图片描述

0-10 查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息

查询学过语文课但是没有学过数学课的同学的信息
将表的长数据,转换为宽数据
通过下面的方式,得到结果可以直观的看出来有01课程成绩但是没有02课程成绩

select 
a.s_id,
max(CASE when a.c_id='1' then a.s_score else null END) sco1 ,
max(CASE when a.c_id='2' then a.s_score else null END) sco2
from score a
GROUP BY a.s_id;

结果如下:
在这里插入图片描述

再用内连接将两张表连起来

select 
s.*
from 
(select
a.s_id,
max(CASE when a.c_id='1' then a.s_score else null END) sco1 ,
max(CASE when a.c_id='2' then a.s_score else null END) sco2
from score a
GROUP BY a.s_id) t,student s
where t.s_id=s.s_id
and t.sco1 is not NULL
and t.sco2 is   null;

结果如下:
在这里插入图片描述

ps:这里我数据库中的数据有错误,表中6号吴兰,02课程应该是没有成绩的,我当时设置错了,但是思路以及步骤都是正确的
如果有同学用的我提供的表来练习这个题目的话,把题目中的01课程和02课程换一个位置就可以了,这样按照解题思路求出来的是7号,因为他只有课程02,没有课程01

http://www.dinnco.com/news/70485.html

相关文章:

  • dede wap网站模板下载网站搜索优化
  • 电子鲜花php网站怎么做宁波免费seo在线优化
  • 4g网络架构湖南专业seo优化
  • 做五金批发的适合在哪些网站电商网站建设教程
  • 做旅游网站平台合作入驻seo推广公司招商
  • 百度网站权重百度百家号官网
  • 福州网站建设网站设计网站推广微博推广费用一般多少
  • 北京网页设计公司招聘宁波最好的seo外包
  • 湘西网站建设吧互联网广告
  • 360搜索入口搜索引擎优化的基础是什么
  • 营销推广包括几个方面seo试用软件
  • 什么企业需要网站建设软文技巧
  • 企业做网站这些问题必须要注意国内广告联盟平台
  • 如何在电脑上建立网站百度快照怎么做
  • 湖南网站建设推荐近期国内新闻热点事件
  • 做签证网站百度网盘app官网下载
  • 中国建设网 中国建设网网络优化工程师是干什么的
  • 网站维护的具体问题营销策划案的模板
  • 如何为网站做面包屑导航个人永久免费自助建站
  • phpcms网站备份网络营销收获与体会
  • 个人备案可以做盈利网站吗网站注册流程和费用
  • 杭州专业做网站公司外包公司
  • 湖南it网站建设mxtia怎么去营销自己的产品
  • wordpress 添加广告插件吗网站搜索引擎优化的方法
  • 网站管理入口南京seo网站管理
  • 可以先做网站后备案吗怎么在百度上推广
  • div使用太多影响网站收录上海全国关键词排名优化
  • 做网站找哪个seo哪家强
  • 保险公司网站建设方案竞价推广和seo的区别
  • 餐饮网站建设教程电脑网络优化软件