`

练习——学生班级

阅读更多


create table t_class(
c_id int primary key,
c_name varchar(10)
);

insert into t_class values(1,'一班');
insert into t_class values(2,'二班');
insert into t_class values(3,'三班');

alter table 学生表 add  c_id int;

--流程
select *,0 as 人数 from t_class;

select *,
(
   select count(*) from 学生表 s
   where s.c_id=c.c_id
) as 人数
from t_class c;

--循环:c.c_id为1,2,3,分别代入子查询,子查询再执行

--理解:
执行外部查询
select * from t_class
c_id    c_name
1 一班
select count(*) from 学生表 s  where s.c_id=1
2 二班
select count(*) from 学生表 s  where s.c_id=2
3 三班
select count(*) from 学生表 s  where s.c_id=3

效率:非常低,应该尽量避免(使用表连接)
但是知识点(相关子查询)是非常重要的!
子查询不能单独运行:
   select count(*) from 学生表 s
   where s.c_id=c.c_id

非相关子查询是可以的:
select max(score) from t_score


语法:

 

查询哪些班上没有人

select *
from t_class c
where not exists(
  select * from 学生表 s where s.c_id=c.c_id
)

唯一一个where后面不需要指明字段的
子查询中select的值没有限制

select *
from t_class c
where not exists(
  select 'x' from 学生表 s where s.c_id=c.c_id
)
语法:
from 表1
where [not] exists
( select * from 表2 where 表2.id=表1.id)

流程同上:先执行外部查询,外部查询返回的每一行,子查询分别执行一次
select * from t_class c
返回:
1 一班
select * from 学生表 s where s.c_id=1
有2行数据返回 → 证明存在 →不满足 not exists→不显示
(只需要返回其中一条即可证明→由exists的核心算法决定)
2 二班
select * from 学生表 s where s.c_id=2
分析同上。

3 三班
select * from 学生表 s where s.c_id=3
无数据返回→证明 不存在→满足not exists→显示

思考:为什么子查询返回的数据不需要限制?
并不在乎返回的是什么数据,而在乎有没有数据返回
select * from 学生表 s where s.c_id=2
效果等价于
select 1,'x' from 学生表 s where s.c_id=2

查询不存在时,有一个简单的方法:not in
select * from t_class c
where c_id not in (select distinct c_id from 学生表)

如果子查询返回多行数据,必须用in,如果返回一行,才能用=,>,!=等

select * from t_class c
where c_id = (select distinct c_id from 学生表)
错误:子查询返回的值多于一个
逻辑:用=只能等于一个值,现在有多个值,所以不能用=,应该用in

 

 

分享到:
评论

相关推荐

    工作高效管理——班级工作之“四化”.docx

    2. 作业检查高效:给每位学生的作业、练习册、学习与评价等都按照学号编号,检查时只需按学号记录,便于管理。 3. 班级活动有条不紊:无论是点名还是组织活动,都可以通过名册进行,使管理工作更加有序。 4. 褒奖...

    苏教版二年级数学——练习二(1).docx

    《苏教版二年级数学——练习二(1)》正是围绕着1-5的乘法口诀的学习和应用,设计了一系列富有层次性的教学活动和练习,旨在帮助学生牢固掌握乘法口诀,并能够在实际计算中灵活运用。 本练习的第一部分是巩固乘法...

    VB毕业设计——VB学生档案毕业设计(源代码+系统).zip

    这个VB学生档案管理系统对于学习者来说,不仅是一次实际操作的练习,更是一个理解面向对象编程、数据库操作和用户界面设计的综合案例。通过分析和理解源代码,可以深化对VB编程语言的理解,为后续的软件开发打下坚实...

    2综合性学习——小学生学习课件

    - 安排口语交际练习,如辩论赛、情景模拟等,锻炼学生的口头表达能力。 ##### 4. 编写班史 - **目标**:通过编写班级历史,加强学生对集体的认同感,培养团队协作精神。 - **实施方法**: - 成立编委会,负责组织...

    3平均数——小学生学习课件

    - 例2:某班级学生的平均年龄是10岁,这意味着班级中每个学生的年龄都是10岁吗? - **解答**:不是。平均年龄反映了班级学生的总体年龄水平,但并不意味着每个学生的年龄都是10岁。 5. **课堂小结与作业** - **...

    3分类与整理——小学生学习课件

    - 还包括一项发散思维的练习,让学生对自己班级的情况进行调查统计。 通过以上内容的讲解和实践操作,小学生能够在轻松愉快的氛围中学到分类与整理的基本概念及其应用,从而提升其逻辑思维能力和数据分析能力。

    2数学广角——集合-压缩——学生学习课件

    3. **培养习惯与意识**:通过这类练习,不仅可以让学生掌握解决问题的方法,还能够培养他们观察、思考的习惯,以及对多种解题方法的认识。 以上就是从给定文件《2数学广角——集合-压缩》中提取出来的知识点。通过...

    2数据收集整理——学生学习课件

    ### 数据收集整理——学生学习课件 #### 一、知识点概览 本课件主要讲述了数据收集和整理的基本概念及应用方法,适用于小学二年级的学生。通过对数据收集、记录、整理以及简单数据分析的过程进行讲解,帮助学生...

    3数学广角——集合——小学生学习课件

    1. **案例1:**班级参加跳绳、踢毽比赛的学生名单。参加跳绳的学生有9人,参加踢毽的学生有8人,其中有3人既参加了跳绳,也参加了踢毽。那么,参加这两项活动的学生总数是多少? - **解答**:9 + 8 - 3 = 14(人)...

    学习小组作业——SQL单表简单练习2

    在本资源"学习小组作业——SQL单表简单练习2"中,主要涵盖了SQL语言的基础知识,特别是关于单表查询的技巧。SQL(Structured Query Language),即结构化查询语言,是用于管理和处理关系数据库的标准语言。这里我们...

    3要下雨了——小学生学习课件

    - **收集并分享**: 让学生收集身边其他小动物在天气变化时的特殊行为,并在班级内进行分享。 - **示例**: - **蛇**:白天蛇出洞可能是雨天的预兆。 - **鸡**:夏天下雨前,鸡因为窝内湿热而不愿回到窝里。 - **...

    3相貌各异的我们——小学生学习课件

    ### 相貌各异的我们——小学生学习课件 #### 知识点解析: ##### 引言部分: 在《相貌各异的我们》这份小学生学习课件中,首先通过一个简单的互动游戏来激发孩子们的好奇心:“猜猜老师描述的是班级中的哪位同学?...

    2有朋自远方来——学生学习课件

    ### 2有朋自远方来——学生学习课件 #### 知识点解析 ##### 导学目标 - **鼓励学生主动与人交流、明白交友之道**:这项目标强调了人际交往的重要性,并且希望通过教育让学生理解如何建立健康的友谊关系。在现代...

    2口算除法——学生学习课件

    ### 2口算除法——学生学习课件 #### 学习目标 - 掌握口算一位数去除以几十几、几百几十以及几千几百的除法运算。 - 通过学习,激发对数学的兴趣,积累成功体验。 #### 导入新课 - 通过简单的例子引入本次课程的...

    1数字编码-压缩——学生学习课件

    ### 数字编码与压缩——学生学习课件知识点详解 #### 一、数字编码的基本概念 数字编码是指将信息转换成数字形式的过程,这种形式便于计算机处理、存储或传输。编码可以应用于各种场景,如邮政编码、身份证号码、...

Global site tag (gtag.js) - Google Analytics