


- select ename,distinct job from emp;
- //注意这样的写法是错误的
- //但可以换成下面的写法
- select distinct job,ename from emp;
- //这表示job和ename联合查找去重

- //distinct也是可以和函数连用的
- 如查找工作岗位的数量
- select count(distinct job) from emp;

- 格式:
- select
- 字段...
- from
- 表格1
- join
- 表格2
- on
- 两个表格连接的条件
- where
- 可以加一些其它的筛选条件
- select
- e.ename,d.dname
- from
- emp e//原来的表叫emp,为了方便给他起了个别名叫e,大家可以记住这种格式就行
- join
- dept d//原来的表叫dept,起了个别名叫的,跟上面一样的意思
- on
- e.deptno=d.deptno
- ;

- select
- e.ename,e.sal,s.grade
- from
- emp e
- join
- salgrade s
- on
- e.sal between s.losal and s.hisal;

- select
- e.ename as '员工',s.ename as '领导'
- from
- emp e
- join
- emp s
- on
- e.mgr=s.empno;

但是主要,这只查出了13条记录,没有大老板,因为,大老板没有领导,显示的是null,null不显示。
(2)外连接
外连接怎么说呢,它是分主表,以主表为主进行查询。
举个例子:查询员工的部门以及员工的名字
之前是用内连接查询的,但是没有员工的部门他就不显示了,因为是NULL嘛,但是外连接可以解决这个问题。
- select
- e.ename,d.dname
- from
- emp e
- right join//因为要将没有员工的部门也要显示出来,那么就是将dept这场表全部显示出来
- dept d //就是说要以dept这张表为主,那么就要right右连接,以右边为主;dept在from
- on //后面,自然就是left左连接了
- e.deptno=d.deptno;

- select
- e.ename as '员工',s.ename as '领导'
- from
- emp e
- left join
- emp s
- on
- e.mgr=s.empno;

- //多张表连接的代码格式
- select
- 字段...
- from
- 表格1
- join
- 表格2
- on
- 表格1和表格2的连接条件
- join
- 表格3
- on
- 表格1和表格3的连接条件
- join
- 表格4
- on
- 表格1和表格4的连接条件
- .....
- select
- e.ename as '员工名',d.dname as '部门名',s.grade as '薪资等级',e.sal as '薪资'
- from
- emp e
- join
- dept d
- on
- e.deptno=d.deptno
- join
- salgrade s
- on
- e.sal between s.losal and s.hisal;

- 格式:
- select
- (select ...)
- from
- (select ...)
- where
- (select ...)
- select
- e.ename,e.sal
- from
- emp e
- where
- e.sal>(select min(sal) from emp);

- select
- t.*,s.grade
- from
- (select job,avg(sal) as avs from emp group by job) t
- join
- salgrade s
- on
- t.avs between s.losal and hisal;

- select
- e.ename,(select d.dname from dept d where d.deptno=e.deptno) as dname
- from
- emp e;

- select
- e.ename,e.deptno
- from
- emp e
- where
- e.deptno = 10 or e.deptno =20;
- //这是正常的写法,下面是用union的写法
-
-
- select
- e.ename,e.deptno
- from
- emp e
- where
- e.deptno = 10
- union
- select
- e.ename,e.deptno
- from
- emp e
- where
- e.deptno =20;

- limit的格式
-
- limit 起始位置, 长度
- (注意起始位置是以0开始的)
- select
- e.ename,e.sal
- from
- emp e
- order by
- sal desc
- limit 5;
-
- //下面是limit的完整写法
-
-
- select
- e.ename,e.sal
- from
- emp e
- order by
- sal desc
- limit 0,5;

- select
- e.ename,e.sal
- from
- emp e
- order by
- sal desc
- limit 2,3;//注意其实位置是0哦!!!,所以第三个就是2了
