• oracle 数据库开发面试题


    近期參加了数场面试。总结一下竞聘oracle 开发岗位最常问到哪些问题:


    1、delete 与 truncate 差别?

    1)truncate 是DDL语句,delete 是DML语句;

    2)truncate 速度远快于 delete;

          原因是:当我们运行delete操作时全部表数据先被copy到回滚表空间。数据量不同花费时间长短不一。而truncate是直接删除数据不进回滚表空间。

    3)接(2)这也就导致了delete数据后我们能够执行rollback进行数据回滚,而truncate则是永久删除不能回滚。

    4)truncate 操作不会触发表上的delete触发器。而delete会正常触发。

    5)truncate语句不能带where条件意味着仅仅能所有数据删除,而delete可删除部分数据;

    6)truncate 操作会重置表的高水位线(High Water Mark),而delete不会。

    ps: 有关高水位线HWM知识清參考文章:http://blog.csdn.net/indexman/article/details/25910255


    2、解释一下数据库三范式?

    请參考:http://blog.csdn.net/indexman/article/details/19907731


    3、NVL与NVL2两个函数的使用方法和差别?

    NVL (expr1, expr2):expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致
    NVL2 (expr1, expr2, expr3) :expr1不为NULL。返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话。expr3会转换为expr2的类型 

    看一下官方演示样例:commission即为工资提成

    HR@orcl> SELECT last_name, NVL(TO_CHAR(commission_pct), 'Not Applicable')
      2  "COMMISSION" FROM employees
      3  WHERE last_name LIKE 'B%'
      4  ORDER BY last_name;
    
    LAST_NAME                 COMMISSION
    ------------------------- ----------------------------------------
    Baer                      Not Applicable
    Baida                     Not Applicable
    Banda                     .1
    Bates                     .15
    Bell                      Not Applicable
    Bernstein                 .25
    Bissot                    Not Applicable
    Bloom                     .2
    Bull                      Not Applicable


    
    
    HR@orcl> SELECT last_name, salary, NVL2(commission_pct,
      2  salary + (salary * commission_pct), salary) income
      3  FROM employees WHERE last_name like 'B%'
      4  ORDER BY last_name;
    
    LAST_NAME                     SALARY     INCOME
    ------------------------- ---------- ----------
    Baer                           10000      10000
    Baida                           2900       2900
    Banda                           6200       6820
    Bates                           7300       8395
    Bell                            4000       4000
    Bernstein                       9500      11875
    Bissot                          3300       3300
    Bloom                          10000      12000
    Bull                            4100       4100


    4、集合操作符minus和interset

    如果表A和表B数据例如以下:

    表A:

    data

    ----------

    a

    b

    b

    c


    表B

    data

    ----------

    b

    c

    d

    d


    问1:SELECT DATA FROM A  MINUS SELECT DATA FROM B; 运行结果?

    --------------------------------------------------------------------------------------------------

    答案:

    a


    问2:SELECT DATA FROM A  INTERSECT SELECT DATA FROM B; 运行结果?

     答案:

    b

    c


    集合操作符总结:

    1)UNION:由每一个查询 选择的 全部不反复的行组成。并集不包括反复值, 默认按第 1 个查询的第 1 列升序排列。


    2)UNION ALL: 由每一个查询 选择的 全部的行。全然并集包括反复值。 不排序。

    3)  MINUS : 在第一个查询中。 不在后面查询中的行。

    不包括反复。 按第1 查询的第 1 列升序排列。

    4)INTERSECT: 取每一个查询结果的交集。 不包括反复行。 按1 个查询的第 1 列升序排列。






    敬请期待!


    ------------------------------

    Dylan    Presents.

  • 相关阅读:
    记开发个人图书收藏清单小程序开发(二)
    记一次使用MemoryCache不能Get的问题
    Linux:系统安全相关优化,(firewalld、iptables、selinux)
    linux:操作系统优化
    Linux:日志,cpu,memory,mount,load等系统信息查看
    linux:yum系统如何安装软件
    Linux:系统运行级别
    linux:eth0(ens33)-网卡名称及配置文件信息解析
    linux:linux系统中的挂载技术
    linux:命令行常用快捷方式
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/7098337.html
Copyright © 2020-2023  润新知