Oracle中的注意点

     1、在Oracle中,任何含有空值的算术表达式的计算结果时空值。但对于字符操作符||,因 为ORACLE 目 前 处 理 零 个 字 符 值 的 方 法 与 处 理 空 值 的 方 法 相 同( 日 后 的 版 本 中 不 一 定 仍 然 如 此), 所 以 对 于||, 空 值 等 价 于 零 个 字 符 值。

      例如:

     SQL >select ename,mgr,ename||mgr,sal,comm,sal+comm from emp;
ENAME            MGR ENAME||MGR          SAL      COMM  SAL+COMM
---------- --------- ------------- --------- --------- ---------
SMITH           7902 SMITH7902           800
ALLEN           7698 ALLEN7698          1600       300      1900
WARD            7698 WARD7698           1250       500      1750
JONES           7839 JONES7839          2975
MARTIN          7698 MARTIN7698         1250      1400      2650
BLAKE           7839 BLAKE7839          2850
CLARK           7839 CLARK7839          2450
SCOTT           7566 SCOTT7566          3000
KING                 KING               5000
TURNER          7698 TURNER7698         1500         0      1500
ADAMS           7788 ADAMS7788          1100
JAMES           7698 JAMES7698           950
FORD            7566 FORD7566           3000
MILLER          7782 MILLER7782         1300

     从上面结果看出, 凡mgr 为 空 值 的,ename||mgr 结 果 等 于ename; 凡 是comm 为 空 值 的 行,sal+comm 均 为 空 值。

      2、双引号可以保持大小写,并且中间可以加空格,不加全变为大写

      例如:select ename,sal*12 "annual sal" from emp;

      

     select ename,sal*12 annual sal from emp;
    
     select ename,sal*12 annual_sal from emp;
    
     select ename,sal*12 "年薪" from emp;
     
    3、dual是系统自带的一张空表,计算数据时可以使用该表。
     例如:
     select  2*3 from dual;
    
     select 2*3 from emp;
    
     4、当字符串中含有单引号时,可用两个单引号代表一个单引号。
     例如:select ename|| 'abcd''efg' from emp;
    
    5、set linesize 200;  --用于设定每行显式的宽度
         set pagesize 30;  --用于设定显示的页数
    6、系统默认转义符是\,也可以自己指定转义符,使用escape指定
    例如:select * from emp where ename like '_\%a%';
               select * from emp where ename like '_$%a%' escape '$';
     7、求薪水值最高的人的名称:select ename,max(sal) from emp; --这会提示错误
        原因:max(sal)的返回值只有一个,而工资是max(sal)的人名可能会有好几个,所以不能匹配,返回错误。
        正确做法:select ename from emp where sal=(select max(sal) from emp);
     8、Group by语句的注意点:出现在select中的字段,如果没有出现在组函数中,必须出现在group by语句中。
      例如:select ename,deptno,max(sal) from emp group by deptno;  --会显示出错
                正确做法:select ename,deptno,max(sal) from emp group by deptno,ename;
     9、where是对单条记录进行筛选,Having是对分组结果进行筛选。
      例如:查询工资大于2000的雇员,按照部门编号进行分组,分组后平均薪水大于1500,按工资倒序排列
       select deptno,avg(sal) from emp where sal>2000 group by deptno having avg(sal)>1500 order by avg(sal) desc;
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值