五、连接查询:
1、distinct去除重复记录
SELECT DISTINCT(job) FROM emp;
2、选出员工所在的部门名字(两张表连接)
SELECT ename,dname from emp e,dept d WHEREe.DEPTNO = d.DEPTNO;//SQL92的写法
SQL92的缺点:结构不清晰,表的连接条件和后期进一步筛选条件都放到了where后面。
SELECT ename,dname from emp e join dept don e.DEPTNO = d.DEPTNO;//SQL99的写法
SQL99的优点:表连接的条件是独立的,连接之后,如果还需进一步筛选,再往后继续加where。
3、筛选在最低工资和最高工资之间的员工姓名和工资
SELECTe.ename,e.SAL,s.GRADEFROMempeJOIN salgrade s ON e.SAL BETWEEN s.LOSALAND s.HISAL;
4、右外连接
SELECT e.ENAME,d.DNAME FROM emp e RIGHTJOIN dept d on e.DEPTNO = d.DEPTNO;
right:表示将join关键字后边的这张表看成主表,为了将这张(主)表的数据全部查询出来,捎带关联查询左边的表。
外连接的查询结果条数一定是>=内连接的查询结果条数。
5、查询每个员工是上级领导,要求显示所有员工的名字和领导名字
SELECTa.ENAMEAS '员工名',b.enameAS '领导名'FROMempaLEFT JOIN emp b ON a.MGR = b.empno;
6、多张表的连接语法
SELECT*FROMaJOIN b ON a和b的连接条JOIN c ON a和c的连接条件Right JOIN d ON a和d的连接条件;
一条SQL语句中内连接和外连接可以同时存在。
7、找出每个员工的部门名称和工资等级,要求显示员工名、部门名、工资和工资等级。
SELECTe.ENAME,d.DNAME,e.SAL,s.GRADEFROMempeJOIN dept d ON e.DEPTNO = d.DEPTNOJOIN salgrade s ON e.SAL BETWEEN s.LOSALAND s.HISAL;
最后修改时间:2021-07-28 18:00:20
文章转载自那些年了,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




