数据库MySQL-----------多表连接

来源:互联网 发布:河北网络电视台 - 百度 编辑:程序博客网 时间:2024/06/01 20:38

小白笔记,大神勿喷,如果我写的不正确请给出您宝贵的建议,谢谢! 


做一下数据库的笔记

 最近在学数据库相关知识,直接懵逼,先做笔记再说


一下是数据库中的两张表,以这两张表为例,学习多表连接的相关知识

                                   

1.笛卡尔交集/交叉连接
    select * from emp cross join dept;

    将两个表进行以上的连接,结果如下



这种连接的效果很明显,就是两个表里的每一条数据都进行了一次连接


2.内连接(必须加限定条件)

等值连接
select * from emp inner join dept on emp.deptno=dept.deptno;

这是内连接的相关语句,执行这条语句后的效果如下


emp.deptno=dept.deptno是进行内连接的条件,两个表就是以的deptno为条件进行连接的

可以明显的看出和上面结果的不同,虽然列头还有相同的列,但是表中的数据已经进行了正确的相关联


3.自然连接(自动识别两张表相等的列名)
select * from emp natural join dept;  

运行结果如下


这个结果就是最后想要的表,和上面的两个有明显的区别,既没有错误的数据,也没有重复的列.系统通过这条语句进行了识别,找出了两个表中相同的列,并且以这个列作为连接的条件



4.外连接


左外:(基于左边这张表)
select * from emp left join dept on emp.deptno=dept.deptno;




右外:(基于右边这张表)
select * from emp right join dept on emp.deptno=dept.deptno;



从上面两个表的结果可以清楚的看出区别,第一个是以左边的表为基础进行的表链接,name等于Puck和Lick的人在dept表中没有数据,所以数据显示为空;而第二个是以右边的表为基础进行的表链接,餐饮部没有数据,所以显示为空

0 0