目录
1、交叉连接(笛卡尔积)
2、内连接
2.1 显示内连接(inner join)
2.2 隐示内连接
2.3 内连接的练习
2.3.1 查询第一或者二学期中所有的学生
2.3.2 查询第一和第二期所有的学生
2.3.3 查询每个班级下的学生总数,并且按照学生总数升序在(降序)排列
2.3.4 查询班级总人数>2的班级,并且人数降序排列
3、外连接
3.1 左外连接(left outer join,outer可以省略)
3.1.1 左外连接练习
3.1.2 所需表(学生表和班级表)
编辑
3.1.3 查询结果与内连接对比
编辑
3.2 右外连接
编辑 3.2.1 右外连接练习
编辑 3.2.2 所需数据
编辑
3.2.3 查询结果
3.2.4 如果删掉外键之后再插入一条数据(第八条)然后右连接的查询结果?
3.3 全外连接(union)
3.3.1 运行结果
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 运行结果