MySQL学习笔记(三)——多表查询
2018-03-20 16:02
375 查看
今天在学习Mybatis一对一,一对多,多对多查询的时候突然发现自己已经把多表查询忘光了,然后看了一下博客,发现自己竟然没有做这一部分的笔记,简直了,所以,就先把这一部分补上,同时增强一下记忆。
合并的两个结果集中,列的类型和列数相同
2、创建两张表,并插入数据
3、进行合并结果集
内连接
外链接
左外链接
右外链接
全外链接(mysql不支持)
自然连接
2、内连接:
MySQL版本:
标准版本:
内查询会将所有不符合条件的记录去除。
3、外连接:
左外连接:
左表记录无论是否满足条件都会查询出来,而右表只有满足条件才能查询出来,左表不满足条件的记录,会在右表示为
右外连接:
右表记录无论是否满足条件都会查询出来,而左表只有满足条件才能查询出来,右表不满足条件的记录,会在左表中表示为
4、全外连接:
我们可以通过
4、自然连接:
自然连接可以使内连接也可以是外连接,语法就是在sql语句中的
在
在
多表查询
一、合并结果集
1、合并结果集的要求:合并的两个结果集中,列的类型和列数相同
union,去除重复行
union all,不去除重复行
2、创建两张表,并插入数据
3、进行合并结果集
SELECT * FROM ab UNION ALL SELECT * FROM cd;
SELECT * FROM ab UNION SELECT * FROM cd;
二、连接查询
1、连接查询的分类:内连接
外链接
左外链接
右外链接
全外链接(mysql不支持)
自然连接
2、内连接:
MySQL版本:
select * from 表1 别名1,表2 别名2 where 别名1.列名=别名2.列名
标准版本:
select * from 表1 别名1 inner join 表2 别名2 on 别名1.列名=别名2.列名
内查询会将所有不符合条件的记录去除。
3、外连接:
左外连接:
select * from 表1 别名1 left outer join 表2 别名2 on 别名1.列名=别名2.列名
左表记录无论是否满足条件都会查询出来,而右表只有满足条件才能查询出来,左表不满足条件的记录,会在右表示为
null
右外连接:
select * from 表1 别名1 right outer join 表2 别名2 on 别名1.列名=别名2.列名
右表记录无论是否满足条件都会查询出来,而左表只有满足条件才能查询出来,右表不满足条件的记录,会在左表中表示为
null
4、全外连接:
我们可以通过
union关键字来实现全外连接:
select * from 表1 别名1 left outer join 表2 别名2 on 别名1.列名=别名2.列名 union select * from 表1 别名1 right outer join 表2 别名2 on 别名1.列名=别名2.列名
4、自然连接:
自然连接可以使内连接也可以是外连接,语法就是在sql语句中的
right outer、
left outer前加
natural,和将
inner换为
natural,且去掉条件。用的不多。
三、子查询
子查询出现的位置select from 子查询 where 子查询
在
where后的子查询,就是将子查询的结果作为判断条件,比如我们想查询一个公司中工资最高的人的详细信息我们就可以用到子查询
select * from emp where salary=(select max(salary) from emp);
在
from后的子查询,是将子查询的结果作为一个表进行二次查询
相关文章推荐
- MySQL学习笔记——对查询结果进行排序
- MySql官方手册学习笔记2 MySql的模糊查询和正则表达式
- Mysql 数据库学习笔记01查询
- MySQL学习笔记9:连接查询
- MySQL学习笔记之七 查询、修改和删除
- Entity Framework with MySQL 学习笔记一(查询)
- MySQL学习笔记(10)之select查询语句
- Mysql学习笔记(九)索引查询优化
- 41.笔记 MySQL学习——IN和NOT IN子查询
- MySQL学习笔记7:基本查询
- MySQL学习笔记5:子查询与连接
- MySQL学习笔记--查询的详细解析
- MYSQL学习笔记(六)之子查询
- MySQL学习笔记-子查询和连接
- MySQL学习笔记-子查询和连接
- MySQL中的基本查询语句学习笔记
- 43.笔记 MySQL学习——EXISTS 和 NOT EXISTS子查询
- mysql学习笔记之八(单表数据记录查询)
- 13.笔记 MySQL学习——多表查询
- [入门]MySQL学习笔记三数据查询筛选显示