• Oracle数据把持和控制言语详解1


     来源:天极网




    SQL言语共分为四除夜类:数据盘问言语DQL,数据把持言语DML, 数据界说言语DDL,数据控制言语DCL。此顶用于界说数据的组织,好比 创建、改削大概删除数据库;DCL用于界说数据库用户的权限;在这篇文章中我将详尽呈报这两种言语在Oracle中的行使办法。

      DML言语

      DML是SQL的一个子集,主要用于改削数据,下表列出了ORACLE支持的DML语句。

    语句 用处
    INSERT 向表中添加行
    UPDATE 更新存储在表中的数据
    DELETE 删除行
    SELECT FOR UPDATE 休止其他用户会晤DML语句正在处理处分的行。
    LOCK TABLE 休止其他用户在表中行使DML语句

      拔出数据

      INSERT语句屡屡用于向表中拔出行,行中可以有不凡数据字段,大概可以用子盘问从已存在的数据中设立设置配备陈设新行。

      列目次是可选的,缺省的列的目次是扫数的列名,包括comlumn_id,comlumn_id可以在数据字典视图ALL_TAB_COLUMNS,USER_TAB_COLUMNS,大概DBA_TAB_COLUMNS中找到。

      拔出行的数据的数量和数据规范必需和列的数量和数据规范相婚配。不相符列界说的数据规范将对拔出值实验隐式数据转换。NULL字符串将一个NULL值拔出适当的列中。枢纽字NULL屡屡用于走漏暗示将某列界说为NULL值。

      上面的两个例子是等价的。


    INSERT INTO customers(cust_id,state,post_code)
    VALUE('Ariel',NULL,'94501');

      或

    INSERT INTO customers(cust_id,state,post_code)
    VALUE('Ariel',,'94501');

      更新数据

      UPDATE饬令用于改削表中的数据。

    UPDATE order_rollup
    SET(qty,price)=(SELECT SUM(qty),SUM(price) FROM order_lines WHERE customer_id='KOHL'
    WHERE cust_id='KOHL'
    AND order_period=TO_DATE('01-Oct-2000')

      删除数据

      DELETE语句用来从表中删除一行或多行数据,该饬令包括两个语句:

       1、枢纽字DELETE FROM后跟准备从中删除数据的表名。

       2、WHERE后跟删除前提

    DELETE FROM po_lines
    WHERE ship_to_state IN ('TX','NY','IL')
    AND order_date

      清空表

      假设你想删除表中扫数数据,清空表,可以思索行使DDL言语的TRUNCATE语句。TRUNCATE就像没有WHERE子句的DELETE饬令一样。TRUNCATE将删除表中扫数行。TRUNCATE不是DML语句是DDL语句,他和DELETE右分例如的特点。

    TRUNCATE TABLE (schema)table DROP(REUSE) STORAGE
      STORAGE子串是可选的,缺省是DROP STORAGE。当行使DROP STORAGE时将收缩表和表索引,将表收缩到最小范围,并重新设置NEXT参数。REUSE STORAGE不会收缩表大概调停NEXT参数。

      TRUNCATE和DELETE有以下几点区别

      1、TRUNCATE在各种表上无论是除夜的照旧小的都异常快。假设有ROLLBACK饬令DELETE将被撤销,而TRUNCATE则不会被撤销。

      2、TRUNCATE是一个DDL言语,向其他扫数的DDL言语一样,他将被隐式提交,不克不及对TRUNCATE行使ROLLBACK饬令。

      3、TRUNCATE将重新设置高水平线和扫数的索引。在对整个表和索引举办完全赏识时,经过TRUNCATE把持后的表比DELETE把持后的表要快得多。

      4、TRUNCATE不克不及触发任何DELETE触发器。

      5、不克不及授予任何人清空别人的表的权限。

      6、当表被清空后表和表的索引讲重新设置成初始除夜小,而delete则不克不及。

      7、不克不及清空父表。

      SELECT FOR UPDATE

      select for update语句用于锁定行,制止其他用户在该行上改削数据。当该行被锁定后其他用户可以用SELECT语句盘问该行的数据,但不克不及改削或锁定该行。

      锁定表

      LOCK语句屡屡用于锁定整个表。当表被锁定后,除夜大都DML言语不克不及在该表上行使。LOCK语法如下:

    LOCK schema table IN lock_mode
      此中lock_mode有两个选项:

       share 共享体式技俩

       exclusive 唯一体式技俩

      例:

    LOCK TABLE intentory IN EXCLUSIVE MODE
      去世锁

      当两个事情都被锁定,并且互相都在期待另一个被解锁,这种状况称为去世锁。

      当出现去世锁时,ORACLE将检测去世锁前提,并前往一个异常。




    版权声明: 原创作品,容许转载,转载时请务必以超链接编制标明文章 原始出处 、作者信息和本声明。否则将清查法令责任。

  • 相关阅读:
    跟老婆学习软件工程一:瀑布模型
    我的手机需求
    我的BB8820手机
    WordPress中query_posts函数和WPpagenavi插件冲突的解决方法
    HomeZZ注册推介码
    分享:世界机场代码(ICAO)[带经纬度]
    Silverlight学习笔记十七BingMap(三)之地图的地区标识
    从真正的项目中学习Silverlight(MSN Entertainment项目源码下载)
    Silverlight的十几种图片展示炫酷效果(附源码)
    Silverlight水的微波凌步效果
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1976070.html
Copyright © 2020-2023  润新知