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将检测去世锁前提,并前往一个异常。




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

posted @ 2011-03-07 20:29  蓝色的天空III  阅读(133)  评论(0编辑  收藏  举报