最近学习MyBatis框架 用到多表查询比较多,以前学的不是很好,今特意回来补上。呜呜呜。
有对MySql数据库的初步使用不是很了解的朋友们,可以切换到这里噢~~
https://blog.csdn.net/haobo__/article/details/110356744
文章目录
-
-
- 先看我的数据库表 (直接看目录找需要的)
- 1. INNER JOIN 内连接
- 2 .LEFT JOIN 左查询
- 3. RIGHT JOIN 右查询
- 4. UNION 全外连接
- 5. LIMIT 分页查询
- 6. ORDER BY 排序查询
- 7. 聚合函数
- 8.分组查询
- 9.嵌套查询
- 10 LIKE模糊查询 LOCATE()模糊搜索
- 11.mybatis的动态查询
- 12、mysql的常用语法
-
- 插入一条数据
- 插入多条数据
- 插入查询结果)(把查询的结果插入到对应的表中)
- 去重查询
- 查询的时候 直接使用四则运算
- 查询的时候 重命名 (as 可以省略不写)
- 使用concat连接字符串得到自定义格式的查询结果
- 使用order by对查询的结果进行排序,asc升序,desc降序
- 使用group by对数据进行分组
- 组合使用 count 是统计查询出的条数
- 使用group_concat()实现显示没个分组中的字段
- 如果要在分组查询中加入条件,则必须使用having而不是where
- 如果使用条件分组的同时还要排序,则order by必须位于having后边
- concat连接字符串
- concat_ws使用分隔符连接字符串
- length和char_length来获取字符串的长度
- 11.时间与时间戳的转换
- 14 树状结构一次查询(不推荐使用)
- FIND_IN_SET和Match+Against区别和使用
- 获取随机数
-
先看我的数据库表 (直接看目录找需要的)
总共
4张表

- 老师职位表 tb_position

- 学生表(为了好辨认效果) tb_student

- 老师表 (id 班级 老师名字 职位对应表) tb_teacher

- 老师与学生的关系对应表,毕竟有多种关系 多对多 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 分组后条件
- 对所有数据分组查询
<

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

267

被折叠的 条评论
为什么被折叠?



