MySql嵌套查询+关联查询+多表查询+对应案例+mybatis动态sql 超详细

本文详细介绍了MyBatis中的多表查询(INNERJOIN, LEFTJOIN, RIGHTJOIN, UNION)及其应用,包括分页、排序、聚合函数、分组查询、嵌套查询、LIKE与LOCATE模糊搜索,以及动态SQL中的autoMapping、resultMap和常见SQL操作。此外,还涵盖了MySQL的基础语法,如数据插入、去重、运算、字符串处理、时间转换和树状结构查询技巧。

最近学习MyBatis框架 用到多表查询比较多,以前学的不是很好,今特意回来补上。呜呜呜。

有对MySql数据库的初步使用不是很了解的朋友们,可以切换到这里噢~~
https://blog.csdn.net/haobo__/article/details/110356744

文章目录

先看我的数据库表 (直接看目录找需要的)

总共
4张表
在这里插入图片描述

  1. 老师职位表 tb_position
    在这里插入图片描述
  2. 学生表(为了好辨认效果) tb_student
    在这里插入图片描述
  3. 老师表 (id 班级 老师名字 职位对应表) tb_teacher
    在这里插入图片描述
  4. 老师与学生的关系对应表,毕竟有多种关系 多对多 tb_stu_teach
    在这里插入图片描述

1. INNER JOIN 内连接

-- 把两张表中 某列 相同值的给查询出来
select stu.t_stu_name,tea.t_no,tea.t_name
from  tb_teacher tea 
INNER JOIN tb_student stu 
on stu.id = tea.id;

在这里插入图片描述

2 .LEFT JOIN 左查询

-- 左查询  
-- 以左边的表的数据为基准, 去匹配右边的表的数据,如果匹配到就显示,匹配不到就显示为null;
SELECT STU.T_STU_NAME,TEA.T_NAME
FROM tb_student STU
LEFT JOIN tb_teacher TEA
ON STU.id = TEA.id;

在这里插入图片描述

3. RIGHT JOIN 右查询

-- 右查询  
-- 以右边的表的数据为基准,去匹配左边的表的数据,如果匹配到就显示,匹配不到就显示为null;
SELECT STU.T_STU_NAME,TEA.T_NAME
FROM tb_teacher TEA   --所谓的左边
RIGHT JOIN  tb_student STU  --所谓的右边
ON STU.id = TEA.id;

在这里插入图片描述

4. UNION 全外连接

-- 把两张表的字段都查出来,没有对应的值就显示null,
-- 注意:mysql是没有全外连接的(mysql中没有full outer join关键字),想要达到全外连接的效果,可以使用union关键字连接左外连接和右外连接; 
(两个select 除了关键字不一样  其他都得一样,可以试试把查出来的值换一个 试试 哈哈哈)
SELECT STU.T_STU_NAME,TEA.T_NAME
FROM tb_student STU
LEFT JOIN tb_teacher TEA
ON STU.id = TEA.id
UNION
SELECT STU.T_STU_NAME,TEA.T_NAME
FROM tb_student STU
RIGHT JOIN  tb_teacher TEA
ON STU.id = TEA.id;

为了看出不同 在教师表中添加了一行数据
在这里插入图片描述

5. LIMIT 分页查询

-- INDEX =(当前页码-1)*个数
 -- 下标从 INDEX 开始  查询  X 条  我这里  index是0,x是3 
SELECT * 
FROM tb_student
LIMIT 0,3;

在这里插入图片描述

6. ORDER BY 排序查询

默认为 升序 可以用关键字 DESC(降序) ASC(升序)

SELECT * 
FROM tb_teacher
ORDER BY position_id 
DESC;  -- 降序

在这里插入图片描述

SELECT * 
FROM tb_teacher
ORDER BY position_id 
ASC;  -- 升序

在这里插入图片描述

7. 聚合函数

在查询数据时 可以将一列数据进行纵向的计算
在这里插入图片描述
用法 : 聚合函数查询的语法 SELECT 聚合函数(列名) FROM 表名

-- 计算教师id平局值
SELECT AVG(ID) 
FROM tb_teacher; 

在这里插入图片描述
在这里插入图片描述

8.分组查询

按照特定条件把数据进行分组,把每一组当做一个整体,分别对某一组数据进行计算。
分组查询语法,字段列表只能是分组列、或者聚合函数

标准语句 SELECT 字段列表 FROM 表名 where 分组前条件 GROUP BY 分组列名 HAVING 分组后条件

  1. 对所有数据分组查询
<
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值