mysql_04
Posted 那些年了
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql_04相关的知识,希望对你有一定的参考价值。
五、连接查询:
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、筛选在最低工资和最高工资之间的员工姓名和工资
SELECT
e.ename,
e.SAL,
s.GRADE
FROM
empe
JOIN salgrade s ON e.SAL BETWEEN s.LOSAL
AND s.HISAL;
4、右外连接
SELECT e.ENAME,d.DNAME FROM emp e RIGHTJOIN dept d on e.DEPTNO = d.DEPTNO;
right:表示将join关键字后边的这张表看成主表,为了将这张(主)表的数据全部查询出来,捎带关联查询左边的表。
外连接的查询结果条数一定是>=内连接的查询结果条数。
5、查询每个员工是上级领导,要求显示所有员工的名字和领导名字
SELECT
a.ENAMEAS '员工名',
b.enameAS '领导名'
FROM
empa
LEFT JOIN emp b ON a.MGR = b.empno;
6、多张表的连接语法
SELECT
*
FROM
a
JOIN b ON a和b的连接条
JOIN c ON a和c的连接条件
Right JOIN d ON a和d的连接条件;
一条SQL语句中内连接和外连接可以同时存在。
7、找出每个员工的部门名称和工资等级,要求显示员工名、部门名、工资和工资等级。
SELECT
e.ENAME,
d.DNAME,
e.SAL,
s.GRADE
FROM
empe
JOIN dept d ON e.DEPTNO = d.DEPTNO
JOIN salgrade s ON e.SAL BETWEEN s.LOSAL
AND s.HISAL;
以上是关于mysql_04的主要内容,如果未能解决你的问题,请参考以下文章