前言:本节内容主要讲解表的内连和外连以及索引的一部分。 注意: 索引是很重要的知识点。务必学习!!本节将会主要谈一谈什么是索引,如何理解索引。 以及怎么理解MySQL与磁盘的关系。 下面友友们开始学习吧!
ps:本节内容友友们只要想学习mysql都可以观看哦!!
目录
内连接
内连接实际就是利用where子句对两种表形成的结果进行筛选。 连接是在from中。 以前学习的笛卡尔积实际上就是今天的内连接。 笛卡尔积和where判断,就叫做内连接。
下面来看一个内连接的案例:
找出SMITH的部门名称和部门编号
select ename, dname from emp inner join dept on emp.deptno = dept.deptno where ename = 'SMITH';
外连接
左连接
除了内连接, 就是外连接, 我们想让左侧的表, 完全显示。 右侧的表如果配不上, 就去掉。 左外连接的语法和内连接的语法一摸一样, 只不过是把left替换了inner。
现在做一下示例:
查询所有学生的成绩, 如果这个学生没有成绩, 也要将学生的个人信息显示出来:
create table stu(id int, name varchar(30));
insert into stu values(1, 'jack'), (2, 'kity'), (4, 'nono');
create table exam(id int, grade int);
insert into exam values(1, 56), (2, 76), (11, 8);
现在我们进行左连接查询。 我们上面的表中学生有三个。 同时成绩也有三个。 但是三个成绩的最后一个成绩的学号并不是上面三个学生里面的任何一个人。那么, 我们左连接查询:
select * from stu left join exam on stu.id = exam.id;
我们会发现, 即便我们的nono没有对应的成绩, 在第二张表中没有他, 他也被打印出来了。所以, 我们就能发现, 左连接就是,这个stu.id = exam.id的条件, 更偏向于stu表。
右连接
其实左连接和右连接是一样的。 所以, 我们就可以做这个案例:
对stu表和exam表进行联合查询, 把所有的成绩都显示出来, 即使这个成绩没有学生与它对应, 也要显示出来。
select * from stu right join exam on stu.id = exam.id;
其实和左连接差不多的。
以上就是内外链接的所有内容。 其实对于内连接来说, 就是判断条件时, 两张表是公平的。 对于左连接来说, 判断条件时, 偏向左表;对于右连接来说, 判断条件时, 偏向右表。
——————以上就是本节全部内容哦, 如果对友友们有帮助的话可以关注博主, 方便学习更多知识哦!!!