oracle学习笔记(4)

2019-03-22 09:36

FROM EMP_GH

WHERE SAL*12>20000 8:查看公司共有多少种职位 SELECT

DISTINCT JOB FROM EMP_GH

9:按部门号从小到大排列查看员工 SELECT

ENAME,DEPTNO FROM EMP_GH

ORDER BY DEPTNO

10:查看每个部门的最高,最低,平均工资,和工资总和 SELECT

MAX(SAL),MIN(SAL),AVG(SAL),SUM(SAL),DEPTNO FROM EMP_GH GROUP BY DEPTNO

11:查看平均工资高于2000的部门的最低薪水 SELECT

DEPTNO,MIN(SAL) FROM EMP_GH GROUP BY DEPTNO

HAVING AVG(SAL)>2000

12:查看在NEWYORK工作的员工 SELECT

E.ENAME,D.LOC

FROM EMP_GH E JOIN DEPT_GH D ON E.DEPTNO=D.DEPTNO WHERE D.LOC='NEW YOUK'

13:查看所有员工及所在部门信息,若该员工没有部门,则 部门信息以NULL显示 SELECT

E.ENAME,D.JOB

FROM EMP_GH E LEFT OUTER JOIN EMP_GH D ON E.EMPNO = D.EMPNO 14:查看ALLEN的上司是谁 SELECT

E.ENAME, M.ENAME

FROM EMP_GH E JOIN EMP_GH M ON E.MGR=M.EMPNO

WHERE E.ENAME='ALLEN' TTS-TEST

1、查询职员表中,在20和30号部门工作的员工姓名和部门号。 SELECT ENAME,DEPTNO FROM EMP_GH

WHERE DEPTNO=20 OR DEPTNO=30

2、查询职员表中,没有管理者的员工姓名及职位,并按职位排序。 SELECT ENAME,JOB FROM EMP_GH WHERE MGR IS NULL ORDER BY JOB ASC

3、查询职员表中,有绩效的员工姓名、薪资和绩效,并按工资倒序排列。 SELECT ENAME,SAL,COMM FROM EMP_GH

WHERE COMM IS NOT NULL ORDER BY SAL DESC

4、查询职员表中,员工姓名的第三个字母是A的员工姓名。 SELECT ENAME FROM EMP_GH WHERE ENAME LIKE '__A%'

5、查询职员表中的职员名字、职位、薪资,并显示为如图-3所示效果: SELECT ENAME || ','||JOB||','||SAL OUT_PUT FROM EMP_GH 提示:列之间用逗号连接,列头显示成OUT_PUT。

6、查询职员表中员工号、姓名、工资,以及工资提高百分之20%后的结果。 SELECT EMPNO,ENAME,SAL,SAL*1.2 FROM EMP_GH

7、查询员工的姓名和工资,条件限定为:工资必须大于1200,并对查询结果按入职时间进行排列,早入职排在前面,晚入职排在后面。 SELECT ENAME,SAL ,HIREDATE FROM EMP_GH WHERE SAL>1200 ORDER BY HIREDATE

8、查询ACCOUNT部门以外的其他部门的编号、名称以及所在地。 SELECT D.DEPTNO,D.DNAME,D.LOC FROM EMP_GH E JOIN DEPT_GH D ON E.DEPTNO=D.DEPTNO WHERE D.DNAME<>'ACCOUNT'

1、查询每个部门中每个职位的最高薪水。 SELECT MAX(SAL),DEPTNO,JOB FROM EMP_GH GROUP BY JOB , DEPTNO

SELECT A.ename, A.sal, A.deptno, b.maxsal

FROM emp a,(SELECT deptno, max(sal) maxsal FROM emp GROUP BY deptno) b WHERE A.deptno = b.deptno AND a. sal < b.maxsal; 3、假设员工表中,员工和管理者中间只有一个层级,也就是说,每个员工最多只有一个上级,作为管理者的员工不再有上级管理者,并且,上级管理者相同的员工,他们属于同一个部门。找出EMP 中那些工资高于他们所在部门的管理者工资的员工。 SELECT E.ENAME

FROM EMP_GH E JOIN EMP_GH M ON E.MGR = M.EMPNO

WHERE E.SAL>M.SAL

4、找出EMP 中那些工资高于他们所在部门普通员工平均工资的员工。 SELECT E.ENAME FROM EMP_GH E JOIN

(SELECT DEPTNO,AVG(SAL) A FROM EMP_GH GROUP BY DEPTNO ) M

ON E.DEPTNO=M.DEPTNO WHERE E.SAL>M.A

SELECT classid,AVG(MONTHS_BETWEEN(SYSDATE,entertime)) FROM student

WHERE AVG( MONTHS_BETWEEN (SYSDATE, entertime))>12 GROUP BYclassid

ORDER BY AVG(MONTHS_BETWEEN (SYSDATE, entertime));

有职员表emp,若需列出所有薪水高于平均薪水值的员工信息,则有 SQL语句如下:

SELECT ENAME ,E.SAL,M.A FROM EMP_GH E ,(

SELECT AVG(SAL) A FROM EMP_GH ) M

WHERE E.SAL>M.A

编写一条SQL 语句,查询出每门课都大于80 分的学生姓名。 SELECT ENAME FROM

WHERE KECHEGN A>80 AND KECHENG B>80

9.select LPAD('TARDIS', 3, '*') from dual;

***********************************day04**************************************** ***子查询 WHERE 之后

子查询是嵌套在查询语句之中的作用是为了外层SQL语句提供数据,子查询常用dql,但是也可以用于DML和DDL之中

子查询的结果不同可以进行分类:

**单行单列子查询:使用< ,>, <> ,等比较

** 多行单列子查询:使用 ALL,ANY,IN,NOT IN 进行比较 ** 多行多列子查询: 被看做一张表使用

** 其中单行单列与多列单列常用语where 和 HAVING 中作为过滤条件使用 而多行多列(包括单行多列)常常当做一张表使用

谁的工资比CLARK高

SELECT ENAME,SAL FROM EMP_GH

WHERE SAL>(SELECT SAL FROM emp_gh WHERE ENAME = 'CLARK') 或

SELECT ENAME ,SAL

FROM EMP_GH E , (SELECT SAL A FROM EMP_GH WHERE ENAME = 'CLARK') B WHERE E.SAL>B.A

*** 和Jones同部门的 SELECT ENAME,DEPTNO FROM EMP_GH

WHERE DEPTNO=(SELECT DEPTNO FROM EMP_GH WHERE ENAME='JONES')

SELECT ENAME,DEPTNO

FROM EMP_GH E,(SELECT DEPTNO D FROM EMP_GH WHERE ENAME='JONES') B WHERE E.DEPTNO=B.D

*** 谁高于公司平均工资 SELECT ENAME ,SAL FROM EMP_GH

WHERE SAL>(SELECT AVG(SAL) FROM EMP_GH)

SELECT E.ENAME,E.SAL,S.A

FROM EMP_GH E ,(SELECT AVG(SAL) A FROM EMP_GH) S WHERE E.SAL>S.A

*** 查看部门的平均工资,前提是该部门的平均工资高于30号部门的平均工资 SELECT DEPTNO,AVG(SAL) FROM EMP_GH E GROUP BY DEPTNO HAVING AVG(SAL)>(

SELECT AVG(SAL) FROM EMP_GH GROUP BY DEPTNO HAVING DEPTNO =30)

*** 查看和cleark职位同部门的员工 SELECT ENAME ,DEPTNO FROM EMP_GH

WHERE DEPTNO IN(SELECT DEPTNO FROM EMP_GH WHERE JOB ='CLERK') AND JOB<>'CLERK'

** 比20号部门所有人工资都高的人 SELECT ENAME ,SAL FROM EMP_GH

WHERE SAL>ALL(SELECT SAL FROM EMP_GH WHERE DEPTNO=20)

******EXISTS 语句

***EXISTS后面跟子查询,进行过滤,可放在where后 如果子查询有结果则返回 TRUE 没有结果 返回 false

查看有员工的部门信息 SELECT DEPTNO ,DNAME FROM DEPT_GH D WHERE EXISTS (

SELECT ENAME FROM EMP_GH E WHERE E.DEPTNO=D.DEPTNO) *****子查询 FROM 之后

***当子查询是多行多列时,就可以当成一张表进行关联 查看比自己部门平均工资高的员工 SELECT E.ENAME,E.SAL

FROM EMP_GH E,(SELECT AVG(SAL) A ,DEPTNO FROM EMP_GH GROUP BY DEPTNO) D WHERE E.DEPTNO=D.DEPTNO AND E.SAL>D.A

每个部门最低工资s是谁

SELECT E.ENAME,E.SAL,E.DEPTNO

FROM EMP_GH E,(SELECT MIN(SAL) A,DEPTNO FROM EMP_GH GROUP BY DEPTNO ) D WHERE E.DEPTNO= D.DEPTNO AND E.SAL=d.A

********子查询 在 SELECT 之后

****作为一个字段值在外层查询中集中显示 SELECT E.ENAME,E.SAL,

(SELECT D.DNAME FROM DEPT_GH D WHERE D.DEPTNO=E.DEPTNO) DNAME FROM EMP_GH E

*******分页查询

当一个结果集数据过多时采用分页查询: 原理:将数据分批查询出来,

好处:1.提高客服端到服务端的相应速度 2.减少网络间的传输,降低资源消耗

缺陷:分页由于在SQL中没有定义,所以不同的数据库分页语句不一样

ROWNUM:是一个伪列

rownum不存在任何一张表中,但是每张表都可以查询该字段,该字段的值为结果集


oracle学习笔记(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:形势与政策

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: