MySql的复习(五):联表查询和⼦查询MySql的复习(五):联表查询和⼦查询
查询结果去重
关于查询结果的去重:distinct关键字
select distinct job from emp; // distinct关键字去除重复记录。
distinct关键字只能⽤于所有字段的前⾯。
错误写法:select ename,distinct job from emp;
正确写法:select distinct deptno,job from emp;
关于表的别名
关于表的别名:
ame,d.dname from emp e,dept d;
表的别名有什么好处?
1. 第⼀:执⾏效率⾼。
2. 第⼆:可读性好。
连接查询的分类
根据语法出现的年代
SQL92:⽐较旧的语法
SQL99:⽐较新的语法
SQL92语法
内连接
显⽰每个员⼯的信息,并显⽰所属部门的名称
ame, dept.dname from emp, dept where emp.deptno=dept.deptno;
-- 也可以使⽤别名
ame, d.dname from emp e, dept d where e.deptno=d.deptno;
只查询相等的数据(连接条件相等的数据)
⾃连接
表单大师 查询只有⼀张表连接,具体的查询⽅法,把⼀张表看作两张表即可,如下⾯⽰例:第⼀个表emp e代码了员⼯表,emp m代表了领导表,相当于员⼯表和部门表⼀样
取得员⼯和所属领导的名字
ame, m.ename from emp e, emp m =m.empno;
SQL99语法
(内连接)显⽰薪⽔⼤于2000的员⼯信息,并显⽰所属部门的名称
-- 采⽤SQL92语法:
ame, e.sal, d.dname from emp e, dept d where e.deptno=d.deptno and e.sal > 2000;
-
- 采⽤SQL99语法:
ame, e.sal, d.dname from emp e join dept d on e.deptno=d.deptno where e.sal>2000;
-- 或:(但是在实际中⼀般不加inner关键字)
ame, e.sal, d.dname from emp e inner join dept d on e.deptno=d.deptno where e.sal>2000;
(外连接)显⽰员⼯信息,并显⽰所属的部门名称,如果某⼀个部门没有员⼯,那么该部门也必须显⽰出来
-- 右连接:
ame, e.sal, d.dname from emp e right join dept d on e.deptno=d.deptno; -- 左连接:
ame, e.sal, d.dname from dept d left join emp e on e.deptno=d.deptno; -- 以上两个查询效果相同
根据表的连接⽅式
内连接
等值连接
⾮等值连接
⾃连接
外连接
curl命令测试网络左外连接(左连接)
右外连接(右连接)
全连接
等值连接
条件是等量关系
查询每个员⼯的部门名称。要求显⽰员⼯的名字和部门名字
-
小孩腿没力气- SQL92:(太⽼,不⽤了)
select
from
emp e, dept d
where
e.deptno = d.deptno;
-- SQL99:(常⽤的)
select
from
emp e
join
dept d
on
mysql面试题sql语句多表联查e.deptno = d.deptno;
// inner可以省略的,带着inner⽬的是可读性好⼀些。
select
from
emp e
inner join
dept d
on
e.deptno = d.deptno;
...
A
join
B
on
连接条件
where
...
⾮等值条件
连接条件中的关系是⾮等量关系。
出每个员⼯的⼯资等级,要求显⽰员⼯名、⼯资、⼯资等级。
select
from
emp e
join
salgrade s
on
e.sal between s.losal and s.hisal;
-
- inner可以不省略
select
from
emp e
inner join
salgrade s
on
shodan搜索怎么用e.sal between s.losal and s.hisal;
⾃连接
到员⼯和对应上级领导
select
from
emp a
inner join
emp b
on
< =
外连接
什么是外连接,和内连接有什么区别?
最重要的特点是:主表的数据⽆条件全部查出
假设A和B表进⾏连接,使⽤内连接的话,凡是A表和B表能够匹配上的记录查询出来,这就是内连接。
AB两张表没有主副之分,两张表是平等的。
外连接:
假设A和B表进⾏连接,使⽤外连接的话,AB两张表中有⼀张表是主表,⼀张表是副表,主要查询主表中的数据,捎带着查询副表,当副表中的数据没有和主表中的数据匹配上,副表⾃动模拟出NULL与之匹配。
外连接的分类?
左外连接(左连接):表⽰左边的这张表是主表。
右外连接(右连接):表⽰右边的这张表是主表。
左连接有右连接的写法,右连接也会有对应的左连接的写法。
到每个员⼯的上级领导,所有员⼯的都必须全部查询出来
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论