数据库04去重,内连接,外连接,自连接

您所在的位置:网站首页 javasort函数会去重吗 数据库04去重,内连接,外连接,自连接

数据库04去重,内连接,外连接,自连接

2024-07-17 19:45| 来源: 网络整理| 查看: 265

去重: select distinct job from emp;//distinct只能出现在所以字段最前面。 selsect distinct deptno,job from emp;//两个字段一起去重 统计岗位数量:select count(distinct job) from emp;

连接查询: 实际开发中,大部分情况都不是从单表中查询数据,一般都是多张表联合查询。一般一个业务都会对应多张表,比如:学生和班级,起码两张表 。 根据语法出现年代分类:SQL92(一些老的DBA可能还在使用这种语法。DBA:数据库管理员)SQL99(比较新) 根据表的连接方式来划分: 内连接:等值连接,非等值连接,自连接 外连接:左外连接(左连接),右外连接(右连接) 全连接(很少用)

在表的连接查询方面有一种现象被称为笛卡尔现象。 找出每一个员工的部门名称,要求显示员工名和部门名:(有两张表,emp表,dept表) select name,dname from emp,dept; 当两张表进行连接查询的时候,没有任何条件进行限制,最终结果条数是两张记录条数的乘积。 关于表的别名:select e.name,dname from emp e,dept d;//执行效率高,可读性好。 怎么避免笛卡尔积现象?加条件过滤,不会减少匹配次数,只是显示有效记录。

内连接之等值连接:最大特点是:条件是等量关系。 找出每一个员工的部门名称,要求显示员工名和部门名: sql92(太老,不用了):select e.name,d.dname from emp e,dept d where e.deptno = d.deptno; sql99(常用):select e.name,d.name from emp e join dept d on e.deptno = d.deptno;//省略了inner,加了可读性更好 select e.name,d.name from emp e inner join dept d on e.deptno = d.deptno; 语法:…a join b on 连接条件 where …

内连接之非等值连接:最大的特点是:连接条件中的关系是非等值关系。 找出每个员工工资等级,要求显示员工名,工资,工资等级:(e表有员工名工资,s表有工资等级) selsct e.name,e.sal,s.grade from emp join salgrade s on e.sal between s.losal and s.hisal;

自连接:最大特点是一张表看做两张表,自己连自己。 查找每个员工的上级领导,要求显示员工名和对应的领导名:(a员工表:empno编号,name姓名,mgr领导编号。b领导表:empno编号,name姓名) 员工的领导编号=领导的员工编号 select a.name as '员工名‘,b.name as '领导名’ from emp a inner join emp b on a.mgr = b.empno;

外连接:ab外连接,有一张是主表,一张是副表,主要查询主表中的数据,捎带查询副表,当副表中的数据没有和主表中的数据匹配上,副表自动模拟出NULL与之匹配。 分类:左外连接(左连接):左边的表是主表 右外连接(右连接):右边的是主表 左连接有右连接写法,右连接有左连接写法 查找每个员工的上级领导,所以员工必须全部查询出来:(a员工表:empno编号,name姓名,mgr领导编号。b领导表:empno编号,name姓名) select a.name '员工名‘,b.name '领导名’ from emp a left outer join emp b on a.mgr = b.empno;//left左边是主表 select a.name as '员工名‘,b.name as '领导名’ from emp b right join emp a on a.mgr = b.empno;//right右边是主表,右外连接,outer可省略 外连接最重要的特点是:主表的数据无条件全部查出来。

三张表连接查询:注意 …a join b join c on …表示a表和b表先进行连接,连接后a表继续和c表进行连接 找出每个员工的部门名称以及工资等级: emp e(empno,name,sal,deptno。员工编号,员工 姓名,工资,部门编号) dept d(dempno,dname,loc。部门编号,部门名) salgrade s(grade工资等级,losal最低工资,hisal最高工资) select e.name,d.dname,s.grade from emp e join dept d on e.depton = d.depton join salgrade s on e.sal between s.losal and s.hisal;

找出每个员工的部门名称以及工资等级,以及上级领导: select e.name,d.dname,s.grade from emp e join dept d on e.depton = d.depton join salgrade s on e.sal between s.losal and s.hisal left join emp e1 on e.mgr = e1.empon;



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3