首页 > 数据库 > Oracle > 正文

Oracle数据操作和控制语言详解 (一)

2024-08-29 13:31:26
字体:
来源:转载
供稿:网友

sql语言共分为四大类:数据查询语言dql,数据操纵语言dml, 数据定义语言ddl,数据控制语言dcl。其中用于定义数据的结构,比如 创建、修改或者删除数据库;dcl用于定义数据库用户的权限;在这篇文章中我将详细讲述这两种语言在oracle中的使用方法。

dml语言  dml是sql的一个子集,主要用于修改数据,下表列出了oracle支持的dml语句。 语句 用途 insert 向表中添加行 update 更新存储在表中的数据 delete 删除行 select for update 禁蛊渌没х梦蔇ml语句正在处理的行。 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_rollupset(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_lineswhere 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将检测死锁条件,并返回一个异常。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表