说明
这个只是本人自己学习时做的笔记,比较基础,希望大佬不喜勿喷。
有需要的小伙伴可以参考一下,只是很基础的笔记。谢谢大家!
基础的介绍
语法代码:
---------------------------------------------------------------
-- 连接查询
将多张表连接到一起进行查询(会导致记录数行和字段数列发生改变)
-- 连接查询的意义
在关系型数据库设计过程中,实体(表)与实体之间是存在很多联系的。
在关系型数据库表的设计过程中,遵循着关系来设计:一对一,一对多
和多对多,通常在实际操作的过程中,需要利用这层关系来保证数据的完整性。
-- 连接查询分类
-- 交叉连接
--将两张表的数据与另外一张表彼此交叉,笛卡尔积。
语法:表1 cross join 表2
select * from my_student coress join my_student;
-- 内连接
--匹配上数据就保留,否则放弃
语法:表1 inner join 表2 on 匹配条件|也可以使用where但是不建议,
where是在查询出来数据后再比较,降低效率
select * from my_student inner join my_class on class=class;
select * from my_student as s inner join my_class as c on s.class=c.class;
select * from my_class inner join my_student on my_class.class = my_student.class;
--应用 通常使用在有精确要求的地方使用。
-- 外连接:左外连接和右外连接
按照某一张表作为主表(表中所有记录在最后都会保留),根据条件去连接另外一张表,从而
得到目标数据
左连接:left join 左表是主表
右连接:right join 右表是主表
原理
1.确定连接主表:左连接就是left join左边的表为主表,right join右边的表为主表。
2.拿主表的每一条记录,去匹配另外一张表(从表)的每一条记录
3.如果满足匹配条件:保留:不满足即不保留
4.如果主表记录在从表中一条都没有匹配成功,也要保留该记录:从表对应的字段取null
基本语法:
左连接:主表 left join 从表 on 连接条件
右连接:从表 right join 主表 on 连接条件
左连接对应的主表数据在左边,有链接对应的主
表数据在右边。
select * from my_student s left join my_class c on s.class=c.class;
select * from my_student s right join my_class c on s.class=c.class;
自然连接
--using 关键字
是在连接查询中用来代替对应的on关键字的,进行条件匹配。
原理:
1.在连接查询时,使用on的地方用using代替
2.使用using的前提是对应的两张表连接的字段是同名的(类似自然连接自动匹配)
3.如果使用using关键字,那么对应的同名字段,最终在结果中只会保留一个。
基本语法:表1【inner,left,right】join 表2 using(同名字段列表);//连接字段
select * from my_student left join my_class using(class);