Oracle基本查询

  1. 统计各部门的薪水总和。
    错误写法:重命名的时候 as 后面不添加引号
    select deptno as ‘部门’, sum(sal) as ‘薪水’ from EMP group by deptno;
    正确写法:
    select deptno as 部门, sum(sal) as 薪水 from EMP group by deptno;
  2. 列名和表明可以不用区分大小写,但是具体的字段名称需要区分大小写,并且如果具体的字段名称是字符串,需要添加单引号
  3. 注意where语句一定要紧跟再from语句的后面
    错误写法:select deptno 部门, min(sal) 最低薪水 from emp group by deptno where job=’MANAGER’ ;
    正确写法:
    select deptno 部门, min(sal) 经理最低薪水 from emp where job =’MANAGER’ group by deptno;
  4. 日期的计算
    显示所有员工的姓名以及工作10年后的日期。
    select ename 姓名,hiredate 入职日期, add_months(hiredate,10*12) 工作10年后的日期 from emp;
  5. 自身比较
    列出从事同一种工作但属于不同部门的员工的不同组合。
    select e1.ename 员工1 ,e2.ename 员工2 from emp e1 ,emp e2 where e1.job= e2.job and e1.deptno<>e2.deptno;
  6. 占位符
    显示正好为5个字符的员工的姓名。
    select ename 姓名 from emp where ename like ‘_‘;
  7. 避免为空。利用nvl 函数转为0进行计算
    显示在一个月为30天的情况下所有员工的日薪水,取整。
    select trunc((sal+nvl(comm,0))/30,0) 日薪 from emp;
    trunc(num,0)用于取整
  8. MONTHS_BETWEEN (date1, date2)
    用于计算date1和date2之间有几个月
 9. **Oracle与MySQL的区别
Oracle:varchar2()
MySQL:varchar()**
  1. 表的自身连接
    列出所有员工的姓名及其直接上级的姓名。
    那么这里我们需要定义两张表,实际上是一张表有两个名字,一张表表示员工,一张表示上级
    select a.ename 员工,(select ename from emp b where b.empno=a.mgr ) 上级 from emp a;

  2. 子查询
    列出与“SCOTT”从事相同工作的所有员工。
    错误写法:select ename from emp a where a.job=(select job from emp b where ename=’SCOTT’) and b.ename<>’SCOTT’;
    正确写法:select ename from emp where job = (select job from emp where ename=’SCOTT’) and ename<>’SCOTT’;

  3. 表的自身连接
    39.列出从事同一种工作但属于不同部门的员工的一种组合。
    错误写法:
    select a.ename,a.deptno from emp a where a.job=(select job from emp b ) and a.deptno<>b.deptno;
    正确写法:
    select a.ename,a.deptno from emp a,emp b where a.job=b.job and a.deptno<>b.deptno;
posted @ 2017-07-26 19:43  crr121  阅读(225)  评论(0编辑  收藏  举报