zoukankan      html  css  js  c++  java
  • SQL之更新操作及事务控制

    1  插入数据

    语法:
    INSERT INTO 表名[(列名1,列名2,…)] VALUES(值1, 值2,…);
    注意:
    指定列值时,字符串类型的要加‘’单引号。数字类型直接指定。日期可以使用TO_DATE()函数来转换;也可以用sysdate代表当前日期。
    TO_DATE('2009-06-06','yyyy-mm-dd')。
    某列的值要插入空值时,可以用NULL关键字代替或不列出该列名。
    示例:
    标准语法(强力推荐)
    INSERT INTO tomo_emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)
    VALUES(8000,'张三','讲师', 7788, '12-11月-88', 7000,800,40);
    简便做法
    INSERT INTO tomo_emp
    VALUES(8001,'李四','助教', 7788, '12-1月-89', 5000,400,40);


    2 修改数据

    语法:
    UPDATE 表名 SET 列名=值[,列名2=值2,…] [WHERE 修改条件];
    注意:
    没有指定修改条件,将修改表中的所有记录。
    在UPDATE语句中也可以使用子查询。
    示例:
    把编号为8110的员工职位改成“testing”。
    为部门编号为50的员工加薪8%。
    把编号为8110的员工的月薪改成公司的平均月薪,并修改奖金成500。

    3 删除数据

    语法:
    DELETE FROM 表名 [WHERE 删除条件];
    注意:
    不指定删除条件,会删除所有的行。
    示例:
    删除编号为8110的员工。
    删除部门编号为40,50的所有员工。

    4 事务

    数据库事务:一组相关的数据改变SQL语句,这组SQL语句对数据的改变要么同时成功,要么同时失败。
    事务的ACID属性:
    原子性(Atomic):
    指整个数据库事务是不可分割的工作单元。原子性确保在事务中的所有操作要么都发生,要么都不发生。
    一致性(Consistency):
    一旦一个事务结束了(不管成功与否),系统所处的状态和它的业务规则是一致的。即数据应当不会被破坏。
    隔离性(Isolation):
    指多个事务同时操作同一数据时,每个事务都有各自的完整数据空间。
    持久性(Durability):
    一旦事务完成,事务的结果应该持久化。

    5 Oracle中的事务

    事务相关的环境变量—AUTOCOMMIT
    Oracle数据库服务器默认为非自动提交事务模式。
    SHOW AUTOCOMMIT   -- 查看
    SET AUTOCOMMIT ON|OFF   --更改
    隐式事务控制:
    自动隐式提交事务:
    执行一个DDL语句、执行一个DCL语句、从SQL*Plus正常退出(exit,quit)
    自动隐式回滚事务:
    强行退出SQL*Plus、客户端到服务器的连接异常中断、系统崩溃。
    显式事务控制:(建议使用)
    提交和结束事务:COMMIT;
    回滚事务:ROLLBACK [TO 回滚点];
    设置事务回滚点:SAVEPOINT 回滚点;

    6 事务隔离级别

    一个事务对数据库的修改与并行的另外一个事务的隔离程度。

    多个事务同时访问数据库中相同的数据时,如果没有采取必要的隔离机制,就可能会发生如下并发问题:
    第一类丢失更新:撤消一个事务时,把其它事务已提交的更新数据也撤消了。
    脏读:一个事务读到另一个事务未提交的更新数据。
    不可重复读:一个事务读到另一个事务已经提交的更改数据。可以使用for update 添加行级锁 
    第二类丢失更新:在不同客户端不同事务 同时读取了某一个数据 进行操作 引发的问题 (第二类丢失更新 是程序的问题  需要在更新之前 检查当前数据是否过期    版本号的问题)
    幻读:在同一事务中  读取 某一范围的数据 不一致 (其他的事务新增或者删除了数据) lock table 表名 in share mode (共享锁 允许其他客户端加锁  会照成死锁)

    7 Oracle的事务隔离级别

    SQL标准定义了四种隔离级别:
    READ UNCOMMITTED: 读未提交数据。脏读、不可重复读、幻读都可能发生。它的事务隔离性最低。
    READ COMMITTED:读已提交数据。不允许脏读。
    REPEATABLE READ:可重复读。不允许不可重复读,脏读。
    SERIALIZABLE:串行化。不允许任何并发事务问题。最严格的事务隔离性。
    Oracle只支持READ COMMITTED和SERIALIZABLE。
    默认为READ COMMITTED
    设置一个事务的隔离级别
    set transaction isolation level serializable;
    设置整个会话的隔离级别 
    alter session set isolation_level=serializable;


        
  • 相关阅读:
    Async方法死锁的问题 Don't Block on Async Code(转)
    微信小程序列表项滑动显示删除按钮
    使用CodeDom动态生成类型
    react native中state和ref的使用
    react native中props的使用
    react native组件的生命周期
    react-native debug js remotely跨域问题
    react native组件的创建
    react native基础与入门
    ionic 开发实例
  • 原文地址:https://www.cnblogs.com/t0404/p/10291070.html
Copyright © 2011-2022 走看看