目录
2.3.3 查询每个班级下的学生总数,并且按照学生总数升序在(降序)排列
3.1 左外连接(left outer join,outer可以省略)
3.2.4 如果删掉外键之后再插入一条数据(第八条)然后右连接的查询结果?
1、交叉连接(笛卡尔积)
三条查询语句 :前两条是单表查询,然后就是交叉查询
注:第一个是单表,后面是交叉表(显得有点冗余)
2、内连接
2.1 显示内连接(inner join)
注:,如图所示这个INNER是可以不用写的,查询结果也是也一样的
2.2 隐示内连接
2.3 内连接的练习
2.3.1 查询第一或者二学期中所有的学生
注:虽然输入中文也可以查询,但不推荐,因为这个名称有可能会发生变化
2.3.2 查询第一和第二期所有的学生
注:这个是错误的查询写法,先and,在or,那么就会这样
而显得数据冗余了
=========================================================================
注:加个括号一起统计,就不会先查and,在查or了 。(第一个是隐示,第二个是显示)
2.3.3 查询每个班级下的学生总数,并且按照学生总数升序在(降序)排列
注:这是点击美化sql之后的格式
2.3.4 查询班级总人数>2的班级,并且人数降序排列
注:先分组(group),在筛选(having)
3、外连接
3.1 左外连接(left outer join,outer可以省略)
3.1.1 左外连接练习
3.1.2 所需表(学生表和班级表)
3.1.3 查询结果与内连接对比
1.
2.
3.
注:查询结果1是左外连接,2是内连接 ,3.以左表为主的话,应该有四个学期,但是学生表只有第一和第二,所有返回kong
3.2 右外连接
3.2.1 右外连接练习
3.2.2 所需数据
注:需要多家一条数据并且class_id为空(第七条)
3.2.3 查询结果
注:为null,是因为没有找到对于的id,如果想查没有班级的学生,就在后面加个
and class-id = null即可
3.2.4 如果删掉外键之后再插入一条数据(第八条)然后右连接的查询结果?
注:查询结果以右边为主,所有可以看到class_id,但是坐标的内容为null,那么如果再次使用内连接,还是一样没有匹配就不显示
3.3 全外连接(union)
注:mysql是无法实现全外连接,但是可以通过union进行
3.3.1 运行结果