zoukankan      html  css  js  c++  java
  • Oracle面试的基本题

    事务

    事务的概念

    事务就是对数据操作的一系列指令集合。

    事务的四个特性

    • 原子性

      事务的操作要么全部成功,要么全部失败,如果有一个指令失败,那么事务回滚到初始状态。

    • 一致性

      事务的执行不能破坏数据的完整性和一致性,比如总额是2000,那么无论怎么转账,总额应该保持不变。

    • 持久性

      一旦事务被提交了,那么无论停电还是宕机,数据都应该永久保存在数据库中。

    • 隔离性

      事务的操作应该是独立的,不能被其他事务干扰。

    事务的隔离级别

    • 读未提交(Read uncommitted)
      • 可能导致脏读

        假如事务A修改了数据,此时并未提交,事务B读取数据之后事务A回滚了,那么事务B读取错误。

    • 读已提交(READ_COMMITTED)
      • 可能导致不可重复读

        假如事务A在查询数据,此时事务B修改事务并提交,事务A又来查询数据,此时数据不一致。

    • 可重复读(Repeatable read)
      • 可能导致幻读

        假如事务A将某张表的id从1变为2,此时事务B插入一条id为1的数据并提交,事务A再查询,发现没有全部修改,像是出了幻觉。

    • 串行化(Serializable)
      • 不会产生任何问题

    MySQL支持四种级别,默认可重复读(Repeatable read)。

    Oracle支持读已提交(READ_COMMITTED)和串行化(Serializable)两种类型,默认读已提交。

    DQL、DML、DDL、DCL的概念与区别

    DQL

    Data query language 数据查询语言 select操作

    DML

    Data Manipulation language 数据操作语言 增删改操作

    DDL

    Data defination language 数据定义语言 建表,删表,修改表字段

    DCL

    data control language 数据控制语言 commit,revoke,grant之类

    分页查询

    下面这行查询语句查不到数据
    select rownum,sid from student where rownum > 10;
    因为rownum是结果集的一个伪列(也就是要先有结果集),结果集现在被默认编号,从1开始,查询第一条结果不满足条件删除,第二条结果又变成了编号1,又不满足被删除,最后就没有满足条件的了。
    

    基本的方式

    select *
          from (select row_.*, rownum rownum_
                  from (select *
                          from student) row_
                 where rownum <= 10)
         where rownum_>= 5;
    
    select * from (select student.*,rownum rownum_ from student where rownum <=10) row_
    where rownum_>=5;
    

    Union与Union ALL

    Union

    UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

    Union ALL

    UNION ALL 命令会列出结果集中所有的值

  • 相关阅读:
    JVM类加载的过程
    接口文档设计
    代码规范及CodeReview要点
    Linux权限
    Linux文件
    UltraEdit编辑器基础技巧
    Android环境配置
    JDK 环境配置
    xml没有提示解决办法<eclipse>
    mysql事务实例
  • 原文地址:https://www.cnblogs.com/bihanghang/p/9956954.html
Copyright © 2011-2022 走看看