数码公司网站建设调查seo优化要做什么
1:关于查询结果集的去重(distinct)
select distinct job from emp;
**distinct只能出现在所有字段的最前面。所表示的含有是所有的结果联合起来去重。
select distinct deptno,job from emp order by deptno;
select count(distinct job)from emp;
2:连接查询
#什么是连接查询?
实际开发中,大部分不是从单表中查询数据,一般是多张表联合查询,然后取出最终的结果。
#连接查询分类
内连接(等值,非等值,自连接)
外连接(左外连接,右外连接)
全连接(不讲,很少用)
3:笛卡尔乘积现象
select ename,Dname from emp,dept;
#2张表连接时,没有任何的条件限制,就会产生笛卡尔积现象。
4:表的别名(效率高,可读性好)
select e.ename,d.dname from emp e,dept d;
5:加上条件,避免笛卡尔乘积现象(老语法sql92)
select e.ename,d.dname from emp e,dept d where e.deptno=d.deptno;
内连接
6:等值连接
sql92和sql99表示
sq92:
select e.ename,d.dname from emp e,dept d where e.deptno=d.deptno;sq99:
select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno;
# join.............on...........语句
7:内连接中的非等值连接(连接中的条件不等值)
select e.ename,e.sal,s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal;
8:自连接,自己从自己里面找(一张表看成2张表,自己连接自己)
select e.ename as supervisor,b.ename from emp e join emp b on e.empno=b.mgr;
外连接:
9:什么是内连接?
没有主副之分,可以直接连接
10:什么是外连接?
有主副之分,先查出主表,顺带副表,当副表没有,就模拟出NULL与之匹配
分类
左外连接(左连接) 右外连接(右连接),主表不同。(left join代表主表在左边)
select a.ename as '员工',b.ename as '领导'from emp a left join emp b on b.empno=a.mgr;select a.ename as '员工 ',b.ename as '领导 ' from emp b right join emp a on a.mgr=b.empno;
select e .* ,d.* from emp e right join dept d on d.deptno=e.deptno where e.empno is null;
三张表以上怎么查询
11:
select e.ename as'姓名',d.dname as '部门' ,s.grade as '工资等级' from emp e join dept d on e.deptno=d.deptno join salgrade s on e.sal between s.losal and s.hisal;
12:找出员工的部门名称,工资等级以及上级领导。
select e.ename,d.dname,s.grade,n.ename from emp e join dept d on e.deptno=d.deptno join salgrade s on e.sal between s.losal and s.hisal left join emp n on e.mgr=n.empno;
子查询
13:
#什么是子查询?
被嵌套的语句就是子查询
#出现的位置
select,from,where中
#找出高于平均薪资的员工信息
select * from emp where sal>(select avg(sal)from emp);
#from后面嵌套子查询
1:找出每个部门,平均薪水的薪资等级。
select t.*,s.grade from (select deptno,avg(sal)as avgsal from emp group by deptno) t join salgrade s on t.avgsal between s.losal and s.hisal;
2:找出每个部门,平均的薪水等级?
平均的薪水等级
select e.ename ,e.sal,s.avg(grade)
from emp e join salgrade s
on e.sal between s.losal and s.hisal