接着上篇MyBatis--动态SQL,单表操作都已经完成了,日常开发中难免会涉及到大量的多表查询,MyBatis也提供了一系列标签处理表与表之间的关系一、一对一关联查询resultMap标签为处理关联关系的父标签,后续关联关系定义都是在该标签下进行的实现查询员工信息和部门信息定义实体类:@Data@AllArgsConstructor@NoArgsConstructorpublicclassEmpimplementsSerializable{/***员工编号*/privateIntegerempno;/***姓名*/privateStringename;/***职位*/privateStrin
目录1.多表查询的分类1.1角度一来讲:分为“等值连接”和“非等值连接”;1.2角度二来讲:分为“自连接”和“非自连接”;1.3角度三来讲:分为“内连接”和“外连接”;2.等值连接与非等值连接2.1等值连接2.2非等值连接3.自连接与非自连接3.1自连接3.2非自连接4.内连接与外连接4.1内连接4.2外连接的分类4.2.1左外连接4.2.2右外连接4.2.3全外连接(也叫满外连接)1.多表查询的分类关于数据库的多表查询,我们可以从三个方面对其进行划分,分类方式不分主次,只是它们的分类方式不同。1.1角度一来讲:分为“等值连接”和“非等值连接”;1.2角度二来讲:分为“自连接”和“非自连接”;
多表查询、事务、以及提升查询效率最有手段的索引 一.多表查询1.1多表查询---概述1.1.1数据准备将资料中准备好的多表查询数据准备的SQL脚本导入数据库中。部门表:员工表:1.1.2介绍多表查询:指从多张表中查询数据,就是从多张表当中进行查询单表查询的SQL语句:select字段列表from表名;那么要执行多表查询,只需要使用逗号分隔多张表即可,如:select字段列表from表1,表2;查询用户表和部门表中的数据:--多表查询:直接在from之后跟上多张表就可以了,多张表之间使用逗号分隔select*fromtb_dept,tb_emp,;可以看到,在多表查询的结果当中,每个员工都展示了
🍁博客主页:👉@不会压弯的小飞侠✨欢迎关注:👉点赞👍收藏⭐留言✒✨系列专栏:👉MySQL数据库专栏✨欢迎加入社区:👉不会压弯的小飞侠✨人生格言:知足上进,不负野心。🔥欢迎大佬指正,一起学习!一起加油!目录🍁多表关系🍁一对多🍁多对多🍁一对一🍁概述🍁数据准备🍁笛卡尔积🍁内连接🍁隐式内连接🍁显式内连接🍁外连接🍁左外连接🍁右外连接🍁自连接🍁联合查询🍁子查询🍁分类🍁标量子查询🍁列子查询🍁行子查询🍁表子查询🍁多表关系项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系。基本上分为三种:一对多(多对一)多对多一对
文章目录1.笛卡尔积1.1避免笛卡尔积1.2笛卡尔积(或交叉连接)的理解1.3案例分析与问题解决笛卡尔积的错误会在下面条件下产生:2.多表查询分类讲解2.1多表联查分类方式1:2.2多表联查分类方式2:2.3多表联查分类方式3:多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。比如:员工表和部门表,这两个表依靠“部门编号”进行关联。1.笛卡尔积1.1避免笛卡尔积#案例:查询员工的姓名及其部门名称SELECTlast_name,department_na
1|*1*****方式一语法:insertinto表名(字段名,...)values(值,...);特点:1、要求值的类型和字段的类型要一致或兼容2、字段的个数和顺序不一定与原始表中的字段个数和顺序一致但必须保证值和字段一一对应3、假如表中有可以为null的字段,注意可以通过以下两种方式插入null值①字段和值都省略②字段写上,值使用null4、字段和值的个数必须一致5、字段名可以省略,默认所有列1|*2*****方式二语法:insertinto表名set字段=值,字段=值,...;1|*3*****两种方式的区别:1.方式一支持一次插入多行,语法如下:insertinto表名(字段名,..)
目录1.查询选修“高等数学”课程的成绩不为空的学生学号、姓名和成绩
join7种JOIN的实现:中图:内连接SELECTemployee_id,department_nameFROMemployeeseJOINdepartmentsdONe.department_id=d.department_id;左上图:左外连接SELECTemployee_id,department_nameFROMemployeeseLEFTJOINdepartmentsdONe.department_id=d.department_id;右上图:右外连接SELECTemployee_id,department_nameFROMemployeeseRIGHTJOINdepartment
今天在SqlServer关联更新表的时候发现update和leftjoin连用时,不能像下图一样按照逻辑直白的写,百度发现大部分提供的方法也都是这样。updatestudentsleftjoinclasscond.index_id=c.idsetd.number=0,d.age=0WHEREc.type='all'但是在update跟from连用后再加上leftjoin执行就可以了。UPDATE dbo.Table2SET dbo.Table2.ColB=dbo.Table2.ColB+dbo.Table1.ColBFROM dbo.Table2left JOIN dbo.Table1ON d
若一个查询同时涉及两个或两个以上的表,则称之为连接查询(在FROM子句中体现)。参与连接的表可有多个,但连接操作在两个表之间进行,即两两连接。连接查询包括:内连接等值连接:用“=”比较被连接列的列值非等值连接:用“>、>=、”号进行比较运算自连接:特殊的内连接,一张表看成两张表,自己连接自己,必须给表取别名外连接左外右外前外交叉连接 1内连接执行连接操作的过程:先取表1中的第1个元组,然后从头开始扫描表2,逐一查找满足连接条件的元组;找到后就将表1中的第1个元组与该元组拼接起来,形成结果表中的一个元组。表2全部查找完毕后,再取表1中的第2个元组,然后再从头开始扫描表2,…重复这个过程,直