码迷,mamicode.com
首页 > 数据库 > 详细

Oracle面试的基本题

时间:2018-11-14 12:39:44      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:事务的隔离级别   操作   控制   oracle   原子性   读取数据   mys   概念   集合   

事务

事务的概念

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

事务的四个特性

  • 原子性

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

  • 一致性

    事务的执行不能破坏数据的完整性和一致性,比如总额是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 命令会列出结果集中所有的值

Oracle面试的基本题

标签:事务的隔离级别   操作   控制   oracle   原子性   读取数据   mys   概念   集合   

原文地址:https://www.cnblogs.com/bihanghang/p/9956954.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!