分销系统商城定制开发,西安seo培训学校,用响应式做旧书网站,网站开发怎么确定价格MySQL表的内外连接 一.内连接二.外连接1. 左外连接2. 右外连接 三.案例 表的连接分为内连和外连。
一.内连接
内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选#xff0c;我们前面学习的查询都是内连接#xff0c;也是在开发过程中使用的最多的连接查询。而使… MySQL表的内外连接 一.内连接二.外连接1. 左外连接2. 右外连接 三.案例 表的连接分为内连和外连。
一.内连接
内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选我们前面学习的查询都是内连接也是在开发过程中使用的最多的连接查询。而使用where进行笛卡尔积筛选的时候后面必须跟着一个过滤条件将不合理的数据筛选掉并且这时候再跟着其他条件就需要and其他条件所以这种方式的内连接虽然可以但是容易将内连接的条件与其他约束条件混淆不容易区分。
于是为了能够特殊标注其是内连接就采用了如下语句
select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;案例显示SMITH的名字和部门名称
这时我们可以用多表查询并笛卡尔积方式连接并进行筛选 采用内连接的方式 采用内连接的方式就可以很好的将内连接的条件与其他条件进行区分。
二.外连接
外连接分为左外连接和右外连接
1. 左外连接
如果联合查询左侧的表完全显示我们就说是左外连接。即有可能出现这样的情况学生表里有四个人但成绩表中只有三个成绩这种情况还是常见的因为存在着部分学生没有考试的情况但是此时我们仍想将已知的信息显示出来那么在连接时就会出现空值的情况。
即将学生表放在左侧成绩表放在右侧此时左侧的表完全显示右侧的表由于缺少对应的一条信息其内部的值为空。语法与内连接的区别就是将inner替换成了left。
select 字段名 from 表名1 left join 表名2 on 连接条件案例
-- 建两张表
create table stu (id int, name varchar(30)); -- 学生表
insert into stu values(1,jack),(2,tom),(3,kity),(4,nono);
create table exam (id int, grade int); -- 成绩表
insert into exam values(1, 56),(2,76),(11, 8);由于其中一个id无法匹配所以该学生没有对应的成绩。如果将stu与exam的位置反过来则会显示exam的全部信息然后将stu能匹配上的属于与exam进行匹配。 2. 右外连接
如果联合查询右侧的表完全显示我们就说是右外连接。这与左外连接的规则是一样的只不过主导的表变成了右侧。
select 字段名 from 表名1 right join 表名2 on 连接条件实际上只有一个左外连接已经够了因为我们可以将表的位置交换这与右外连接没什么区别。
三.案例
案例列出部门名称和这些部门的员工信息同时列出没有员工的部门。 通过观察emp表中不存在部门号为40的员工。从上面要求同时列出没有员工的部门可以看出部门为主因此若选择左外连接部门表在左侧选择右外连接部门表在右侧。
select * from dept left join emp on dept.deptnoemp.deptno order by dept.deptno;这就统计出来了我们想要的结果。